
웹 쉘에 대해 조금 더 알아보자
웹쉘은 말 그대로 웹사이트를 통해 쉘(shell)을 여는 공격이다.
※쉘(shell) : 사용자에게 받은 지시를 해석하여 하드웨어 지시어로 바꿈으로써 운영체제의 커널과 사용자 사이를 이어주는 것
쉘은 서버에 대한 모든 설정을 변경할 수 있기 때문에 일반적으로 22번 등 별도 포트를 통해 접속하게 된다.
그런 쉘이 인터넷을 통해 누구든지 접속 가능하게 된다면, 웹 서버가 해킹되어 악성코드 배포나 개인정보 유출로 이어질 수 있다.
웹쉘은 해커가 악성 프로그램을 웹 사이트에 업로드에 성공하는 것으로 시작된다.
악성 프로그램은 주로 서버 사이드 스크립트(ASP, PHP, JSP 등)로 만들어 진다.
즉, 웹사이트에 아무도 모르게 쉘 명령어를 날릴 수 있는 페이지를 하나 더 만든다는 이야기
일반적인 웹 사이트 사용자들과 동일한 웹 서비스 포트(http(80, 8080), https(443))를 통해 이루어지기 때문에 탐지가 매우 어려워, 해킹 사고가 터지지 않는 이상 인지하기가 어렵다.
서버에 물리적으로 접속하지 않고도 웹 쉘을 통해 파일을 업로드, 다운로드, 삭제, 수정하거나 서버의 설정 변경, 악성 파일 삽입, 데이터베이스 접근 등 다양하고 치명적인 악의적 행위가 가능하다.
웹 쉘은 탐지를 피하기 위해 난독화나 암호화될 수 있으므로, 시그니처 기반 프로그램이나 IDS를 우회할 수 있다. 또한, 일반적인 웹 애플리케이션 파일(예: .php, .asp 등)과 유사하게 작성되므로, 쉽게 구분하지 못할 수 있다.
웹 서버의 언어(PHP, ASP, JSP 등)만 맞으면 플랫폼에 상관없이 실행될 수 있기 때문에 다양한 운영체제(Windows, Linux 등)에서 동작할 수 있다.
서버 사이드 스크립트 외에도 GIF, PNG, JPEG 이미지 파일 등 업로드가 가능한 확장자 파일에 악성 스크립트를 삽입하여 위장할 수 있다.
탐지가 늦어져 장기간 서버에 침투하여 공격자가 웹 서버에 지속적으로 접근할 수 있는 백도어로서 기능할 수 있다. 이를 통해 공격자는 언제든지 서버에 접근하여 추가적인 공격을 수행할 수 있다.
1) URL 구조

2) 웹 서버 구조

클라이언트가 웹서버에 데이터 요청
웹서버가 WAS에 데이터 가공 요청
WAS가 필요한 정보를 DB에 요청 / DB가 WAS에 DB정보 전달
DB정보를 WAS가 가공하여 WEB서버에 전달
전달받은 정보를 클라이언트에게 전달

클라이언트가 웹서버에 악성 JSP 파일 업로드 성공
원격을 쉘 명령어 수행(예시 : Runtime.getRuntile().exec("cmd=ls"))
웹서버가 WAS에 데이터 가공 요청
WAS 웹서버의 "cmd=ls"란 명령어를 수행하라고 번역하여 전달
웹서버에서 "ls"란 명령어를 수행하여 현재 경로에 있는 파일리스트를 나열
전달받은 파일리스트 정보를 클라이언트에게 전달

조사 결과, ㈜위더스교육, ㈜뉴지스탁, ㈜창비는 웹쉘(Web Shell)과 에스큐엘 주입(SQL Injection) 공격 등 해킹으로 인해 개인정보가 유출된 것으로 확인됐다.
1) 위더스교육
파일을 온라인에 올릴 때 보안 취약사항 점검을 제대로 하지 않았다. 이 때문에 웹쉘에 의한 해킹 공격을 당해 수강생의 이름, 연락처 등 개인정보가 유출됐다. 또한 침입탐지·차단 시스템을 소홀하게 운영했으며, 탈퇴한 이용자 개인정보를 즉시 파기하지 않았다. 1년 이상 장기 미이용자의 개인정보를 다른 이용자의 개인정보와 분리해 별도로 보관하지도 않았다.
2) 뉴지스탁
웹사이트의 자유게시판을 대상으로 보안관련 취약사항 등을 점검하지 않아, 웹쉘에 의한 해킹 공격으로 이용자 연락처 등 개인정보가 유출됐다.
3) 창비
SQL 질의명령문(query)과 같은 웹사이트 입력값에 대한 검증을 소홀히 해 개인정보가 타인에게 노출됐으며, 개인정보 취급자의 접속기록을 남기지 않는 등 개인정보의 기술적·관리적 보호조치 의무를 다하지 않았다. 또한, 개인정보처리시스템을 운영하면서 안전한 인증수단을 적용하지 않았고 1년 이상 장기 미이용자의 개인정보를 파기 또는 분리해 별도로 보관하지 않은 사실도 확인됐다.
마이크로소프트(이하MS)는 지난 24일(현지시간) “괌을 비롯한 미국 내 주요 핵심 인프라 시설을 표적으로 한 은밀한 사이버 공격 활동을 탐지했다”면서 “이번 공격은 중국 정부가 후원하는 중국 내 해킹그룹 ‘볼트 타이푼’에 의한 것”이라고 밝혔다.
MS에 따르면 볼트 타이푼은 ‘사이버 보안 플랫폼 ‘포티가드’의 보안 취약점을 악용해 웹셀(Webshel)’이라는 악성코드를 주요 기관 네트워크에 심고 서버에 원격 접속했다. 이들은 소프트웨어 및 보호 기능이 업데이트되지 않은 부분을 공격했다.
탑서트의 침해사고 분석 결과 이러한 웹쉘 공격은 2020년 20%에서 지난해 52%로 2배 이상 증가했다.
Damn Vulnerable Web Application 으로, 취약점 진단 및 모의해킹 공부/실습을 할 수 있도록 만들어진 취약한 웹 어플리케이션이다.
웹 서버의 첨부파일에 대한 필터링이 미흡함을 이용해 악의적인 파일을 서버에 침투시키는 공격이다.
웹쉘의 경우 서버 사이드 스크립트를 이용하기 때문에 PHP, JSP, ASP 와 관련된 파일은 업로드하지 못하게 하거나 업로드 되더라도 실행되지 못하도록 설정해야한다.
다른 블로그에서 진행한 것을 퍼와서 진행하겠다.

해당 페이지는 다음과 같이 파일을 선택하고 업로드할 수 있도록 구성되어있다.

고양이 사진을 올리니 잘 작동한다.

php 파일을 업로드하니 오류가 난다.
JPEG와 PNG 파일만을 올릴 수 있다고 문구가 출력된다.
확장자를 JPEG로 바꿔서 업로드해봐도 똑같은 결과가 나온다.
여기서부터는 프록시를 이용하여 진행할 것이며 BurpSuite를 이용한다.

많은 부분을 내용이 있으나 Content-Type에서 image/jpeg 즉 이미지임을 확인한다.

웹 쉘은 application/octet-strem으로 전송됨을 알 수 있다. 이 부분을 image/jpeg로 수정한다.


파일 자체가 아닌 http 헤더를 통해 필터링을 수행하기 때문에 전송해본 결과 업로드에 성공했음을 알 수 있다.
참고
https://run-it.tistory.com/53
https://taesam.tistory.com/13