웹 쉘이란
- 웹(Web) + 쉘(Shell)의 합성어로 웹 페이지에서 해당 웹 서버에서 다양한 명령을 실행시킬 수 있는 스크립트 파일
특징
- 웹 사이트의 사용자들과 동일한 웹 서비스 포트(80, 443)를 통해 웹 쉘 업로드 및 공격이 이루어지기 때문에 탐지 및 차단이 어려움
- 웹 쉘을 이용해서 관리자 권한을 획득한 후 웹 페이지의 소스 코드를 열람하거나 서버 내 자료 유출 및 백도어 설치 등 여러 공격들을 수행할 수 있기에 상당히 파급력이 큰 악성코드
- 웹 서버에서 웹 쉘을 실행시켜야 하기 때문에 보통 서버 사이드 스크립트(asp, jsp, php 등)로 제작되고 사용
⇒ 웹사이트에 쉘명령어를 날릴수 있는 페이지를 만드는것 - 파일 업로드 취약점뿐만 아니라 다양한 여러 취약점들을 통하여 웹 쉘이 업로드되고 공격에 이용될 수 있음
웹쉘 공격방법
URL 구조
- 프로토콜 : 어떠한 웹서비스 포트를 사용할 것인지
- 호스트 : DNS에 호스트를 통해 응답 받은 IP를 통해 웹서버를 찾아 옴
- 경로 : 웹 서버에 올라간 디렉토리 경로
- 질의 : 경로 안에 있는 서버 사이트 스크립트파일에 파라미터를 날려 질의 명령
⇒ 위와 같이 URL 구조를 이용하여 웹쉘에 명령 전달
웹쉘구조
- 클라이언트가 웹서버에 악성 JSP 파일 업로드 성공 원격을 쉘 명령어 수행
ex) Runtime.getRuntile().exec("cmd=ls") - 웹서버가 WAS에 데이터 가공 요청
- WAS 웹서버의 "cmd=ls"란 명령어를 수행하라고 번역하여 전달
- 웹서버에서 "ls"란 명령어를 수행하여 현재 경로에 있는 파일리스트를 나열
- 전달받은 파일리스트 정보를 클라이언트에게 전달
웹쉘 사례
- 2023년 공개용 게시판 제로보드 기반의 커뮤니티 사이트가 웹쉘 공격을 받아 개인정보 유출
- 보안 패치를 주기적으로 실행 하지 않았던 것으로 추정
- 웹서버 전체가 유출되어 피해가 심각
- 고전적인 방법이지만 가장 많이 쓰이는 공격방법
- 미국 정보기관도 보안 패치등이 최신화 되지 않으면 쉽게 취약점이 노출됨
- 외국 뿐만 아니라 우리나라에서도 어플리케이션 취약점을 통해 웹쉘 공격을 가장 많이함
- 그 이유는 한국 웹사이트가 특히 보안에 취약하다고 알려진 php를 많이 사용하고 공개용 게시판을 사용하면서 보안 패치에 소홀한 것으로 알려져있음
- 2022년 기준에도 많은 한국에 웹사이트가 php를 이용하여 서버를 개발하였지만 보안배치와 지원이 끝난 php5버전을 사용하고 있는 것으로 알려짐
대응방안
- 시큐어 코딩
- 취약점 패치
- 키워드/명령어 필터링
- 업로드 파일의 확장자 및 실행권한 제한
웹쉘 실습
- DVWA 구성 후 파일업로드 취약점을 활용하여 웹쉘 업로드
- webshell 위치로 url을 사용하여 웹쉘과 통신
- 웹쉘에 명령어를 전송하여 실행한결과
- 웹서버 내부 정보가 공격자에게 노출이됨
'CERT' 카테고리의 다른 글
SQL Injection 취약점 (0) | 2024.08.16 |
---|---|
XSS(크로스 사이트 스크립트) 취약점 (0) | 2024.08.16 |
웹취약점: 기타 취약점 (0) | 2024.08.16 |
웹취약점: 파일 업로드 취약점 (0) | 2024.08.16 |
웹취약점: 파일 다운로드 취약점 (0) | 2024.08.16 |