보안 위협

웹 셸

포스팅 뷰63

1. 웹 셸(Web Shell)이란?

1.1 웹 셸의 정의

웹 셸은 간단히 말해 웹 서버 위에서 원격 명령을 실행할 수 있도록 만들어진 악성 스크립트 파일입니다. 공격자는 PHP, ASP, JSP, Node.js 등 서버에서 실행되는 언어를 이용해, 브라우저를 통해 서버에 명령을 내릴 수 있는 일종의 “원격 콘솔”을 만들어 놓습니다.

1.2 웹 셸이 위험한 이유

  • 서버 완전 장악: 웹 셸이 한 번 심어지면, 공격자는 서버 안을 자유롭게 돌아다니며 거의 모든 작업을 수행할 수 있습니다.
  • 권한 상승의 발판: 초기엔 웹 서버 권한만 가지더라도, 추가 취약점을 이용해 root나 관리자 계정으로 권한을 높일 수 있습니다.
  • 지속적인 침투: 눈에 띄지 않는 경로에 여러 개의 웹 셸을 숨겨 두고, 하나가 삭제되어도 다른 웹 셸로 다시 접속하는 식의 장기 잠입이 가능합니다.
  • 2차 피해 유발: 개인정보 유출, 랜섬웨어 유포, 다른 서버 공격의 중계지 등으로 악용될 수 있습니다.

1.3 대표적인 웹 셸 종류

  • PHP 웹 셸: 워드프레스, 게시판, 쇼핑몰 등 PHP 기반 서비스에서 가장 흔하게 발견됩니다.
  • ASP/ASP.NET 웹 셸: 윈도우 서버 + IIS 환경에서 사용되는 웹 셸입니다.
  • JSP 웹 셸: 톰캣(Tomcat)이나 WAS(Web Application Server)를 사용하는 자바 기반 서비스에서 사용됩니다.
  • 기타 스크립트형 웹 셸: Python, Node.js 등 다양한 언어와 프레임워크에서도 웹 셸 형태의 악성 스크립트가 존재할 수 있습니다.


2. 웹 셸 해킹이 이루어지는 원리

2.1 파일 업로드 취약점

가장 대표적인 경로는 파일 업로드 기능입니다. 이력서 업로드, 이미지 업로드, 첨부파일 기능 등에서 서버 측 검증이 허술할 경우, 공격자는 이미지처럼 보이지만 실제로는 서버에서 실행되는 스크립트 파일을 업로드할 수 있습니다.

2.2 입력값 검증 부족

파일 업로드뿐만 아니라, URL 파라미터·폼 입력값·쿠키 값 등을 제대로 필터링하지 않으면 특정 파라미터를 통해 동적으로 다른 파일을 불러오는 기능이 악용되어 웹 셸을 실행할 수 있는 구조가 만들어지기도 합니다.

2.3 서버 설정 오류

  • 업로드 디렉터리를 실행 가능한 스크립트 경로와 분리하지 않은 경우
  • 테스트용 디렉터리(/test, /old)를 그대로 남긴 경우
  • 디렉터리 리스팅, 에러 상세 출력 같은 디버그 기능을 제거하지 않은 경우

2.4 권한 상승 및 지속적 장악

  • 서버 정보 탐색(OS·계정·설치 프로그램 확인)
  • 추가 취약점으로 관리자 권한 확보
  • 추가 백도어 설치 및 로그 삭제


3. 공격자가 웹 셸을 업로드하는 실제 시나리오

3.1 취약한 파일 업로드 폼 이용

공격자는 먼저 파일 업로드 기능이 있는 페이지를 찾고, 검증이 허술한지 확인합니다.

3.2 확장자 우회

  • 이중 확장자: test.php.jpg
  • 대소문자 혼합 확장자: .Php
  • MIME 헤더 조작

3.3 업로드 경로 파악

업로드된 파일이 실제 어디 저장되는지 에러 메시지나 디렉터리 구조를 통해 추적합니다.

3.4 웹 셸 실행 및 서버 장악

웹 브라우저에서 웹 셸 파일을 직접 열어 명령을 실행하고, 서버를 점차 장악합니다.



4. 웹 셸 감염 시 나타나는 증상

  • CPU 급상승 및 야간 비정상 트래픽 증가
  • 관리자 계정 생성 또는 권한 조작
  • 외부 IP로 대량 통신 발생
  • 웹사이트 변조, 악성코드 배포


5. 웹 셸 탐지 방법

5.1 파일 무결성 검사

해시값을 비교해 신규 또는 변경된 의심 파일을 확인합니다.

5.2 웹 서버 로그 분석

  • 특정 IP에서 반복 업로드 요청
  • 스크립트 파일 직접 호출
  • 비정상적인 파일명 또는 경로 접근

5.3 코드 패턴 탐지

exec, system, eval 등 위험 함수 사용 여부를 점검합니다.

5.4 자동 웹셸 스캐너 활용

전문 보안 솔루션을 통해 웹셸 패턴을 자동 분석할 수 있습니다.



6. 웹 셸 방지 전략

6.1 안전한 파일 업로드 정책

  • 허용 확장자 화이트리스트 적용
  • 서버 측 MIME 검사
  • 업로드 디렉터리 실행 권한 제거
  • 파일명 난수화

6.2 웹 방화벽(WAF) 적용

파일 업로드 공격, 우회 기법 등을 자동 차단할 수 있습니다.

6.3 정기 취약점 점검

CMS, 플러그인, 라이브러리 업데이트는 필수입니다.

6.4 안전한 보안 코딩

  • 입력값 검증 및 인코딩
  • 민감한 에러 메시지 제거
  • 테스트/디버그 코드 제거
  • 최소 권한 원칙 준수


7. 웹 셸 감염 시 대응 절차

7.1 의심 파일 격리

증거 보존을 위해 삭제 대신 안전 영역에 격리합니다.

7.2 서버 로그 분석

초기 침입 경로 확인이 핵심입니다.

7.3 공격 경로 차단

  • 취약 기능 임시 중단
  • 취약 플러그인 제거
  • 보안 패치 적용

7.4 재발 방지

  • 보안 정책 재점검
  • 개발자 / 운영자 보안 교육
  • 정기 로그 모니터링


8. 결론

웹 셸은 단순한 파일처럼 보이지만, 서버 전체를 장악할 수 있는 강력한 공격 도구입니다. 안전한 파일 업로드 정책, 정기 점검, 실시간 모니터링 체계를 갖추는 것이 장기적 보안의 핵심입니다.