Web Shell ?
웹 쉘은
웹페이지에서 웹서버에게 명령어를 실행하기 위해 만들어진 서버 측 스크립트 (asp,jsp,php)
클라이언트의 명령을 서버에 실행시켜주는 프로그램
웹 서버의 취약점을 이용하여 업로드된 후 서버의 제어권 장악, 정보 탈취, 위변조,악성 스크립트 삽입 등 행위 수행
'''
쉘 : 사용자와 운영 체제의 내부(커널) 사이의 인터페이스 제공 (ex) 명령 프롬프트 cmd.exe)
html : 클라이언트(사용자) 측 스크립트, 사용자 쪽에서 소스 볼 수 있다, 정적 페이지 생성
php : 서버 측 스크립트, 새로고침 할 때마다 달라지는 동적 웹페이지 생성가능
'''
특징
-관리자 권한을 획득 후 웹 페이지의 소스코드를 열람하거나, 서버 내의 자료를 유출, 백도어 프로그램 설치 등의 다양한 공격이 가능
-파일 업로드 뿐만 아니라 이미지 업로드, HTTP PUT 취약점, 기타 XSS, SQL injection 등을 통해 웹서버로 업로드 된 후, 웹쉘로 침투
-일반적인 웹 사이트 사용자들과 동일한 웹 서비스 포트(http(80, 8080), https(443))를 통해 이루어지기 때문에 탐지가 매우 어렵다.
'''
https://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#~
프로토콜(https or http 등) : 브라우저가 리소스를 요청
도메인(www.example.com) : 요청하는 웹서버, 도메인 이름 혹은 ip주소 가 사용됨
포트(80) : 웹 서버의 리소스에 접근하는 데 사용되는 문
리소스 경로 (path~html) : 웹서버에 있는 리소스의 경로
매개변수 (?key1=value1& ~2) : &로 구분된 키/값 쌍 목록
앵커 (#~) 뒤 부분은 책갈피 부분, html 문서의 책갈피 지점의 컨텐츠 표시하도록 지시
'''
공격 원리
1. 클라이언트가 웹서버에 악성 서버 스크립트 파일(php,jsp,asp) 업로드 성공하여
쉘 명령어 수행
2. 웹서버가 WAS에 데이터 가공 요청
3. WAS 웹서버의 (예를 들어) "cmd=ls"란 명령어를 수행하라고 번역하여 전달
4. 웹서버에서 "ls"란 명령어를 수행
5. 전달받은 파일 정보를 클라이언트에게 전달
대응 방안
파일이 업로드될 수 있는 홈페이지의 파일 업로드 취약점, SQL injection 취약점 등을 제거하고 파일 업로드 폴더의 실행을 제한시킨다.
- Secure Coding으로 웹 어플리케이션 보안 취약점 제거
- 취약점 패치
- 실행권한 설정
- 키워드/명령어 필터링
- 업로드 파일의 확장자 및 실행권한 제한