747. 웹쉘 (Web Shell) - 악성 파일 업로드 공격망 스캔
핵심 인사이트: 정상적인 웹사이트 게시판에는 사진 첨부 기능이 있다. 해커는 교묘하게 이 사진 첨부파일 확장자(JPG)를 조작해서, 사진 대신 '서버의 뇌를 장악하는 해킹 스크립트 파일(.php, .jsp)'을 업로드해 버린다. 이게 성공하는 순간 웹사이트 서버는 해커의 컴퓨터가 된다. 이 끔찍한 원격 조정 리모컨 파일이 바로 웹쉘(Web Shell)이다. 가장 치명적인 권한 탈취의 시작점이다.
Ⅰ. 웹쉘 (Web Shell)의 개념
- 개념: 해커가 시스템의 취약점(파일 업로드 기능 등)을 뚫고 웹 서버 깊숙한 곳에 몰래 올려놓은(업로드한) **'악의적인 서버용 웹 프로그래밍 스크립트 파일(JSP, PHP, ASP 등)'**입니다.
- 목적: 이 파일은 웹 브라우저를 통해 접속할 수 있는 형태의 '원격 관리자 터미널(Shell)' 역할을 합니다. 해커가 브라우저 창에 명령어를 치면 그 명령이 웹 서버 내부에서 그대로 실행되어 파일 삭제, DB 해킹, 랜섬웨어 유포 등 시스템 최고 권한(Root)을 마음대로 휘두르게 됩니다.
Ⅱ. 공격 메커니즘 (어떻게 침투하는가?) 🌟
대부분 허술한 '파일 업로드(File Upload)' 게시판 기능에서 뚫립니다.
- 취약점 파악: Q&A 게시판에 증명사진을 올리는 폼(Form)이 있습니다.
- 우회 업로드: 해커가 자기 PC에서
hacker.php라는 악성 백도어 파일을 만듭니다. 서버가 멍청하게 확장자 필터링을 제대로 안 해놨거나, 해커가 꼼수로hacker.php.jpg(이중 확장자) 또는 NULL 바이트(%00)를 끼워 넣어 사진 파일인 척 위장하여 첨부파일로 업로드합니다. - 서버 안착: 이 악성 파일은
/upload/같은 웹 서버 공개 디렉토리에 안착합니다. - 웹쉘 실행: 해커가 인터넷 주소창에 자기가 방금 올린 경로
http://타겟서버.com/upload/hacker.php를 치고 엔터를 칩니다. - 서버 장악: 웹 서버의 엔진(Apache, Tomcat)은 이게 악성 파일인 줄 모르고 순진하게 그 스크립트 코드를 실행시켜 줍니다. 해커의 화면에 서버의 모든 폴더(C드라이브 등)를 털어볼 수 있는 해커 전용 원격 파일 관리자 화면이 뜹니다.
Ⅲ. 탐지 회피와 방어 스캔 🌟
해커들은 웹쉘 파일이 백신(WAF)에 걸리지 않도록 내부 코드를 복잡하게 암호화하거나 인코딩(Base64)해서 꼬아놓습니다(난독화). 이를 막아내는 3단계 방어책이 필요합니다.
- 업로드 필터링 강화 (White-list) 🌟
- 개발자가 코드를 짤 때 가장 중요한 핵심입니다. "업로드되는 파일의 확장자는 무조건
jpg, png, gif만 허용하고, 나머지 모든 파일(.php, .exe, .asp)은 모조리 막아라!"라는 화이트리스트 방식의 철저한 입구 컷을 적용해야 합니다.
- 개발자가 코드를 짤 때 가장 중요한 핵심입니다. "업로드되는 파일의 확장자는 무조건
- 실행 권한(Execute) 압수 (가장 근본적 예방)
- 게시판 첨부파일이 저장되는 서버의 특정 폴더(
/upload/)에는 아예 서버 엔진이 스크립트를 '실행(Execute)'하지 못하도록 읽기/쓰기 권한(Read/Write)만 주어 권한을 뺏어버립니다. 해커가 운 좋게 파일을 올렸어도, 껍데기 파일만 있을 뿐 안의 코드가 실행되지 않아 웹쉘이 발동하지 못합니다.
- 게시판 첨부파일이 저장되는 서버의 특정 폴더(
- 웹쉘 전용 스캐너 가동 (사후 탐지)
- WAF(웹 방화벽) 장비나 파일 무결성 모니터링(FIM) 툴을 주기적으로 돌려, 어제 없었던 수상한
xyz.php파일이 웹 서버 디렉토리에 새로 생기면 즉각 알람을 울리고 격리(삭제)합니다.
- WAF(웹 방화벽) 장비나 파일 무결성 모니터링(FIM) 툴을 주기적으로 돌려, 어제 없었던 수상한
📢 섹션 요약 비유: 웹쉘(Web Shell) 공격은 은행(웹서버)에 위장 취업하는 것입니다. 해커가 은행의 '고객 소리함(게시판 첨부파일)'을 통해 평범한 건의 서류(JPG 파일)인 척하면서, 실제로는 은행 금고를 따는 정밀 폭약(PHP 스크립트 파일)을 밀어 넣습니다. 멍청한 은행 직원은 서류 검사(확장자 검사)도 안 하고 금고 옆의 서류함(업로드 폴더)에 폭약을 고이 모셔둡니다. 해커가 밖에서 무선 리모컨(URL 접속) 버튼을 띡 누르면 금고 옆 폭약(웹쉘)이 터져 서버 전체의 권한이 털리게 됩니다. 이를 막으려면 서류함 방 자체에서 라이터나 스파크가 아예 안 튀게(실행 권한 압수) 공간을 밀폐시켜야 합니다.