[System Takeover] Webshell, Command Injection 및 File 취약점 정리

마지막 수정일: 2026년 05월 11일

System Takeover (시스템 탈취)

※ 절대 허용되지 않은 사이트나 서버에 해킹 및 공격은 범죄이므로 이점 명심해야 한다.


1. What is Webshell

1) Shell(셸)이란?

사용자가 입력한 명령어를 운영체제(OS)가 이해할 수 있도록 전달해 주는 인터페이스 프로그램이다. (예: Windows의 cmd.exe, powershell.exe, Linux의 bash 등)

2) Webshell이란?

해커가 원격에서 웹 서버에 명령을 내릴 수 있도록 만들어진 웹 기반의 악성 스크립트 파일(PHP, JSP, ASP 등)이다. GUI 환경을 제공하기도 하며, 웹 서버의 권한을 이용해 시스템을 통제하는 백도어(Backdoor) 역할을 한다.

How to upload & use? (Exploitation)

# 단순한 형태의 PHP 웹셸 예시 (One-Liner Webshell)
<?php system($_GET['cmd']); ?>

# 공격 URL 예시 (OS 명령어 실행)
http://target.com/uploads/webshell.php?cmd=cat /etc/passwd

3) 방어 방법 (Defense)


2. What is Command Injection

Command Injection이란?

웹 애플리케이션이 사용자 입력값을 필터링 없이 시스템 셸 호출 함수(system(), exec(), os.popen() 등)의 인자로 그대로 전달할 때 발생하는 취약점이다.

Core of Command Injection

# 취약한 백엔드 코드 (Python)
target_ip = request.form['ip']
os.system("ping -c 3 " + target_ip)

# 공격자의 입력값 (메타 문자 악용)
IP = "8.8.8.8; cat /etc/shadow"
""" 완성된 명령어: ping -c 3 8.8.8.8; cat /etc/shadow """

3. File Vulnerability (파일 취약점)

1) File Upload 악용 방법 + 방어 방법

2) File Download 악용 방법 + 방어 방법

3) LFI/RFI란? + 방어 방법

파일을 다운받는 것이 아니라, 서버 내부 스크립트 엔진(PHP 등)이 해당 파일을 실행(Include) 해버리는 치명적인 취약점이다.

# 취약한 코드
include($_GET['page'] . ".php");

4. Path Traversal (경로 탐색)

Path Traversal이란? (Directory Traversal)

웹 애플리케이션이 파일의 경로를 처리할 때, 상위 디렉토리로 이동할 수 있는 문자열(../ 또는 ..\)을 필터링하지 않아 웹 루트(Web Root) 디렉토리를 벗어나 운영체제의 시스템 파일에 접근할 수 있는 취약점이다. File Download 취약점이나 LFI 취약점의 핵심 기반이 되는 기법이다.

Path Traversal 공격 예시

# 공격자는 반복적인 상위 디렉토리 이동을 통해 시스템 최상위 루트(/)로 빠져나간다.
http://target.com/download.php?file=../../../../../../../../etc/passwd
http://target.com/images.php?img=..\..\..\..\windows\win.ini

방어 방법