728x90
1. 웹쉘(Web Shell) 개념
웹쉘(Web Shell)은 웹 서버 상에 업로드된 악성 스크립트 파일을 말합니다. 이 파일은 웹 서버에 대한 명령 실행 권한을 공격자에게 제공합니다. 웹쉘 파일은 보통 PHP, ASP, JSP, Perl, Python 같은 웹서버 지원 언어로 작성됩니다.
즉, 요약하면 웹쉘은 웹 서버에 "쉘(shell)"처럼 동작하는 악성 코드를 몰래 심어서 서버를 원격 조작하는 것이다.
2. 웹쉘 공격의 기본 흐름
- 취약점 탐색
- 파일 업로드 기능, 입력값 검증 미흡, 경로 탐색 취약점 등을 노립니다.
- 웹쉘 업로드
- 악성 스크립트 파일을 서버에 올립니다.
- 웹쉘 실행
- 웹쉘에 접속하여 명령어를 보내고 결과를 확인합니다.
- 추가 침투
- 서버 내부 권한 상승, 추가 백도어 설치, 데이터 탈취 등으로 이어집니다.
3. 웹쉘 업로드 방법 (공격 기술)
주요 공격기법 | 설명 |
파일 업로드 취약점 | 업로드 파일의 확장자나 내용을 제대로 검증하지 않아 악성 파일 업로드 |
MIME Type 우회 | Content-Type을 조작하여 이미지 파일처럼 속이고 악성코드 업로드 |
이중 확장자 | image.php.jpg, file.asp;.jpg 같은 형태로 우회 |
파일 인클루전(Local File Inclusion, LFI) | 취약한 인클루전 기능을 이용해 서버 내부 파일을 덮어쓰기 또는 실행 |
SQL Injection + 파일 쓰기 | SQL Injection을 통해 서버 파일 시스템에 웹쉘 파일 생성 |
RCE (Remote Code Execution) | 원격 코드 실행 취약점으로 바로 웹쉘 설치 |
4. 웹쉘 은닉 및 탐지 회피 기법
기법 | 설명 |
파일명 위장 | favicon.ico, upload.jpg처럼 정상 파일로 보이게 이름 설정 |
확장자 위장 | .php5, .phtml 등 허용된 확장자를 악용 |
코드 난독화 | Base64 인코딩, 복잡한 문자열 처리 등으로 소스 분석 어렵게 만듦 |
스텔스 모드 | 실행 후 파일 삭제, 메모리 상에서만 동작하는 방식 |
로그 제거 | 웹 서버 또는 시스템 로그를 조작하거나 삭제하여 흔적 은폐 |
5. 웹쉘 공격 사례별 예시
(1) PHP 웹쉘 기본 형태
<?php system($_GET['cmd']); ?>
- 접속 시 http://target.com/shell.php?cmd=ls → 서버에서 ls 명령 실행
(2) 난독화된 웹쉘
<?php
eval(base64_decode('c3lzdGVtKCRfR0VUWydjbWQnXSk7'));
?>
- base64 디코딩하면 system($_GET['cmd']);로 변환됨.
(3) 파일 업로드 우회 공격 예
- 업로드 가능한 확장자가 jpg, png만 허용될 경우:
- shell.php.jpg 로 파일명 설정
- 서버가 단순히 .jpg 문자열만 체크하면 우회 성공
(4) HTTP Request에 스텔스하게 명령 보내기
POST /shell.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
cmd=whoami
- 요청을 POST 방식으로 보내 명령을 은닉함.
6. 웹쉘 탐지 및 방어 방법
방법 | 설명 |
업로드 파일 확장자, 내용 검증 | MIME Type과 파일 내부 시그니처까지 검사 |
권한 최소화 | 업로드 디렉토리에 실행 권한 제거 |
WAF 설정 | 웹 애플리케이션 방화벽으로 웹쉘 패턴 탐지 |
로그 분석 | 비정상적인 접속/업로드 기록을 탐지 |
실시간 스캐닝 | 업로드 파일을 자동 검사하고 차단 |
코드 리뷰 | 취약한 코드(파일 업로드, 인클루전 함수 등) 점검 |
URL 호출 제한 | 업로드 파일을 직접 접근 못 하게 URL 차단 |
7. 웹쉘과 관련된 주요 취약점 요약
취약점 | 설명 |
File Upload Vulnerability | 파일 업로드 검증 실패 |
Remote Code Execution (RCE) | 서버 명령어 실행 가능 |
Local File Inclusion (LFI) | 경로 조작으로 파일 실행 가능 |
Directory Traversal | 디렉토리 이동 조작으로 시스템 파일 접근 |
SQL Injection | DB 조작으로 웹쉘 심기 가능 |
728x90
'정보보호' 카테고리의 다른 글
XSS Cross Site Script 공격 기법에 대한 개념 및 방어 방법 (0) | 2025.04.28 |
---|---|
드라이브 바이 다운로드(Drive-by Download) 개념 (0) | 2025.04.28 |
Malware 악성코드에 대한 종류와 개념 (0) | 2025.04.27 |
침입탐지시스템(IDS) 개요 (0) | 2025.04.23 |
워터링 홀 공격 기법의 개념 (0) | 2025.04.22 |