본문 바로가기

OSI 7계층/[기타] 보안

웹 쉘(Web shell)이란 무엇일까요 ?

안녕하세요 오랜만에 글을 올리는 run-it 입니다. 


다들 잘 계셨나요


오늘은 걸리면 치명적인 해킹 기법 중 하나인 웹쉘에 대해 공부해보겠습니다.


☆★☆★☆★☆★☆★☆★☆★☆★☆★☆치★명☆★☆★☆★☆★☆★☆★☆★☆★☆★☆☆

☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★



1.웹쉘이란 

웹쉘은 말 그대로 웹사이트를 통해 쉘(shell)을 여는 공격 입니다.

※쉘(shell) : 사용자에게 받은 지시를 해석하여 하드웨어 지시어로 바꿈으로써 운영체제의 커널과 사용자 사이를 이어주는 것


쉘은 서버에 대한 모든 설정을 변경할 수 있기때문에 일반적으로 22번 등 별도 포트를 통해 접속하게 됩니다.

그런 쉘이 인터넷을 통해 누구든지 접속 가능하게 된다면????? 웹 서버 운영자 입장에선 그만한 재앙은 없죠.

왜냐 ?? 모든 설정을 변경 할 수 있다는 건 웹사이트가 악성코드 배포의 성지가 될 수도, 개인정보 유출로 이어질 수도 있단 얘기이기 때문이죠.


웹쉘은 해커가 악성 프로그램을 웹 사이트에 업로드에 성공하는 것으로 시작 됩니다.

악성 프로그램은 주로 서버 사이드 스크립트(ASP, PHP, JSP 등)로 만들어 집니다.

즉. 웹사이트에 아무도 모르게 쉘 명령어를 날릴 수 있는 페이지를 하나 더 만든다는 얘기죠.


여기서 웹쉘이 무서운 이유!

웹쉘 공격은 일반적인 웹 사이트 사용자들과 동일한 웹 서비스 포트(http(80, 8080), https(443))를 통해 이루어지기 때문에 탐지가 매우 어려워, 해킹 사고가 터지지 않는 이상 인지하기가 어렵다는 겁니다.


정상적인 웹 서비스 구조를 통해 공격 원리에 대해 알아보겠습니다.


2. 웹 서비스 구조

  1) URL 구조

  - 프로토콜 : 어떠한 웹서비스 포트를 사용할 것인지(https: 443포트, http: 80, 8080 포트)

  - 호스트 : DNS 에 run-it.tistory.com을 쿼리하여 응답 받은 IP를 통해 웹서버를 찾아 옴

  - 경로 : 웹 서버에 올라간 디렉토리 경로

  - 질의 : 경로 안에 있는 서버 사이트 스크립트파일에 파라미터를 날려 질의 명령(그림에 없음)

   ※예시일 뿐 실제 존재하지 않는 주소임


  2) 웹 서버 구조

  [순서]

  ① 클라이언트가 웹서버에 데이터 요청

  ② 웹서버가 WAS에 데이터 가공 요청

  ③ WAS가 필요한 정보를 DB에 요청 / DB가 WAS에 DB정보 전달

  ④ DB정보를 WAS가 가공하여 WEB서버에 전달

  ⑤ 전달받은 정보를 클라이언트에게 전달 



3.공격 원리 

  [순서]

  ① 클라이언트가 웹서버에 악성 JSP 파일 업로드 성공

      원격을 쉘 명령어 수행(예시 : Runtime.getRuntile().exec("cmd=ls"))



  ② 웹서버가 WAS에 데이터 가공 요청

  ③ WAS 웹서버의 "cmd=ls"란 명령어를 수행하라고 번역하여 전달

  ④ 웹서버에서 "ls"란 명령어를 수행하여 현재 경로에 있는 파일리스트를 나열

  ⑤ 전달받은 파일리스트 정보를 클라이언트에게 전달 


4.대응 방법

  - 시큐어 코딩

  - 취약점 패치
  - 키워드/명령어 필터링
  - 업로드 파일의 확장자 및 실행권한 제한


자! 여기까지가 오늘 준비한 웹쉘에 대한 내용이였습니다. 

긴 글 읽어주셔서 감사합니다 !

'OSI 7계층 > [기타] 보안' 카테고리의 다른 글

SSL Handshake_Client Hello  (0) 2019.04.28
SMURF 공격과 PING OF DEATH 란?  (1) 2019.03.01
SYN Flooding이란?  (1) 2019.02.24
DoS 에 대해 알아보자 (Feat. DDoS, DrDoS)  (0) 2019.02.06
IDS/IPS 란 무엇일까요 ?  (0) 2019.01.06