Security

웹셸(WebShell)

TechRybbit 2024. 12. 18. 15:17

1. 웹셸이란

웹 셸(Web Shell)은 웹 서버에 업로드되어 파일탐색이나 시스템 쉘 명령어를 실행할 수 있는 파일입니다.

 

본래는 서버 관리 등의 목적으로 생겨났지만, 악의적인 해커들이 웹셸을 업로드하여 서버에 침투해 악성 활동에 활용하면서 보안 위협으로 간주되고 있습니다.

 

 

악의적인 해커들은 특정 서버의 존재하는 취약점을 파악하여 웹셸을 서버에 업로드합니다. 이를 통해 공격자는 명령 실행, 파일 업로드 및 다운로드, 데이터 유출 등의 작업을 수행할 수 있습니다.

 

공격자가 취약한 파일 업로드 기능이 있는 웹 애플리케이션을 발견하는 과정을 정리해 보겠습니다.

  1. 공격자는 먼저 웹 서버의 취약점을 스캔하여 파일 업로드 기능을 발견합니다.
  2. 파일 확장자 검증이 미흡한 것을 확인한 후, .php 확장자를 가진 웹셸 파일을 이미지 파일로 위장하여 업로드를 시도합니다.
  3. 업로드에 성공하면, 해당 웹셸의 URL에 접근하여 서버에 대한 제어권을 획득합니다.
  4. 이후 공격자는 웹셸은 통해 다음과 같은 악성 행위를 수행할 수 있습니다:
    • 서버의 중요 파일 열람 및 다운로드
    • 추가 악성코드 업로드
    • 데이터베이스 접근 및 계정 정보 탈취
    • 다른 내부 시스템으로의 횡적 이동

이러한 공격은 보안이 취약한 웹 애플리케이션에서 자주 발생하며, 특히 파일 업로드 기능의 부적절한 검증이나 웹 서버의 보안 설정 미흡이 주요 원인이 됩니다.

 

2. 웹셸의 특징

  • 다양한 형태: PHP, ASP, JSP 등 웹 서버 관련 언어로 제작됩니다.
  • 탐지 어려움: 정상적인 HTTP 트래픽과 유사하여 식별이 어렵습니다.
  • 보안 설정 회피: 암호화나 난독화를 통해 보안 시스템의 탐지를 우회합니다.
  • 고도화된 기능: 파일 탐색, 시스템 명령어 실행, 데이터베이스 접근 등 다양한 악성 행위가 가능합니다.

 

3. 웹셸 관련 사고

최근 3년 내 발생한 주요 웹 셸 관련 사건 사고는 다음과 같습니다

  1. z0Miner 공격자의 WebLogic 서버 공격
    • 웹 서버 버전 정보가 외부에 노출
    • JSP 웹 셸(WebShell) 업로드
    • 웹 서버를 장악하여 악성코드를 배포하는 다운로드 서버로 악용
  2. 국내 의료기관 대상 코인 마이너 설치 공격
    • 의료기관의 윈도우 IIS 서버에 웹셸은 업로드
    • 최종적인 목적은 코인 마이너를 이용해 가상 화폐를 채굴
  3. Atlassian Confluence 서버
    • 버전 업데이트를 하지 않은 취약한 시스템을 대상으로 공격
    • 쇼단과 같은 스캐닝 도구를 통해 취약한 시스템을 파악
    • 신용카드 스키밍 활동 수행

 

4. 웹셸 대응방안

  1. 파일 확장자 제한 및 파일 내 검증
    • 허용된 파일 형식만 업로드되도록 제한합니다.(화이트리스트 방식)
    • 업로드된 파일의 확장자와 실제 내용을 모두 검사하여 위장된 파일 업로드를 방지합니다.
  2. 사용자 접근 차단
    • 업로드된 파일에 사용자가 직접 접근하지 못하도록 설정합니다.
    • 필요 시, 파일 업로드를 위한 별도 서버를 구축하여 웹 애플리케이션과 분리합니다.
  3. 디렉터리 실행 권한 제거
    • 파일이 업로드되는 디렉터리의 실행 권한을 제거하여 업로드된 스크립트가 실행되지 않도록 합니다.
  4. 파일 확장자 변경
    • 업로드된 파일의 확장자를 안전한 형태(예: .txt 또는 .dat)로 변경하여 코드 실행 가능성을 차단합니다.
  5. 파일 이름 랜덤화
    • 업로드된 파일의 경로를 숨기기 위해 랜덤한 이름으로 변경해 저장하고, 기존 이름은 로그로만 관리합니다.

 

5. 웹셸 실습

가상환경의 칼리리눅스에서 DVWA를 설치하여 실습 환경을 구축할 수 있습니다. 도커를 사용하면 더 편리하지만, 보안상 가상환경이 더 안전합니다.

 

DVWA Security를 Low로 설정합니다.

 

웹셸을 편리하게 수행하기 위한 다양한 툴이 존재합니다. Weevely, P0wny Shell, Metasploit 등이 있으며, 아래 실습에서는 P0wny Shell을 설치하여 웹셸을 실습을 진행하였습니다.

 

해당 디렉터리에서 웹셸 파일인 shell.php를 확인할 수 있습니다.

 

웹셸 업로드시, 업로드된 디렉터리를 확인할수 있습니다.

 

GUI를 통해 웹셸 명령을 실행할 수 있습니다. /etc/passwd에 접근하여 패스워드를 확인하는 명령을 수행해 보았습니다.

728x90