웹쉘에 대한 내용과 간이 서버를 이용한 웹쉘 실습을 진행해 보았다.
Web Shell
웹 쉘은 웹 서버에 침투하여 원격에서 명령을 수행할 수 있도록 작성한 웹 스크립트 파일이다.
웹 서버의 다양한 취약점을 이용해 웹 쉘이 업로드되면 브라우저를 통해 이를 실행해 정보유출 및 조작, 악성코드 유포 등을 진행한다.
침투 경로
방화벽 : 웹 쉘은 HTTP 통신을 통해 서버에 접근한다. 그렇기 때문에 방화벽에서는 문제없는 포트에서의 진입임으로 필터링되지 않는다.
IDS/IPS : 시그니처 기반의 탐지를 하기 때문에 웹쉘이 난독화가 되어 있다면 탐지되지 않고 넘어갈 수 있다.
웹 방화벽 : 여러 웹 취약점들을 막으며 난독화된 웹쉘도 막을 수는 있지만 완벽하지는 않기 때문에 침투 가능성이 존재한다.
웹쉘 업로드 방법
웹쉘은 서버에 업로드되는 것이 가장 큰 관건이다. 이를 위해선 여러가지 방법이 있다.
1. 게시판 취약점을 이용한 방법 - 파일 업로드
2. 웹 에디터 취약점을 이용한 방법 - 이미지 업로드
3. HTTP1.1 취약점을 이용한 방법 - PUT
4. 다양한 취약점 해킹 공격을 이용한 방법 - XSS, SQL injection등
웹쉘 대응 방법
웹쉘은 웹 서버의 권한을 빼앗아 엉망진창으로 만들어 버릴 수 있는 위험한 프로그램임으로 대응책이 있어야 한다.
1. 웹쉘 업로드 방지
2. 업로드된 웹쉘의 실행을 방지
3. 업로드된 파일의 이름을 바꾸거나 경로를 알 수 없도록 하기
4. 웹쉘 대응 솔루션 배치
웹 쉘 실습
실습에는 jsp로 구현된 서버에 이미 웹 쉘이 침투하여 사용 가능한 상태이다.
어떤 서비스 중인 한 옛날 사이트라고 가정한다.
하지만 이 웹서버에는 업로드 취약점을 이용해 들어간 웹 쉘이 있다.
'/uploadfile/browser.jsp'라는 경로명을 입력해서 웹쉘을 브라우저에서 실행시킬 수 있다.
실행 시 다음과 같이 서버 내의 파일 정보들이 출력되고 수정, 삭제, 업로드, 다운로드 등 다양한 기능을 관리자가 아닌데도 사용이 가능한 모습이다.
우리는 이를 이용해서 Deface 공격을 실습한다.
Deface 공격 : 타겟 사이트의 메인 화면의 모습을 임의로 바꾸는 공격으로 화면 변조라고도 부른다.
메인화면인 index.jsp 파일을 edit 기능을 통해 수정할 수 있다.
해당 바디에 고양이 사진을 출력하는 코드를 입력하였다.
<div style="position:absolute; left:200; top:90; Z-index:2;">
<img src="이미지 소스">
</div>
코드는 div를 절대위치에 놓고 z-index가 클수록 맨 앞으로 오게하는 코드이다.
index.jsp 파일을 다음과 같이 수정하여 저장하고 웹 페이지를 새로고침하면 아래와 같이 고양이가 나타난다.
우리는 웹 쉘이 웹 서버에 침투했을 때 원격으로 쉽게 조작이 가능하다는 사실을 알 수 있다.
'보안 이론 > 웹 보안' 카테고리의 다른 글
(2021) OWASP TOP 10에 대해서 (0) | 2022.09.13 |
---|---|
Web Shell 업로드 우회 실습 (0) | 2022.09.13 |
Malzilla를 이용한 난독화 실습 (2) | 2022.09.07 |
Netcat을 이용한 백도어와 Reverse Shell 실습 (0) | 2022.09.06 |
HTTPS와 SSL/TLS (2) | 2022.09.05 |