웹 해킹 & 보안

[3편] OWASP TOP10 - PHP Code Injection, Command Injection등 대응 실습

ahhyun98 2025. 5. 12. 14:45

 

이전 글 보러가기

 

이번 실습은 단순 XSS를 넘어서, 서버의 시스템 명령어를 실행하거나 쉘을 획득하는 중급 취약점들을 다뤘다. 

PHP eval() / system(), SSI 삽입, iframe 악용, OS 명령어 삽입 등의 위험한 공격 시나리오를 경험하고, 그에 대한 대응 방안까지 확인했다. 

 


1. PHP Code Injection

 

PHP Code Injection이란? 

입력값이 eval(), system() 등 PHP의 함수로 전달되어 서버 측 코드로 실행되는 취약점이다.

공격자가 임의 코드를 실행하거나 시스템 명령을 실행할 수 있다. 

 

 

1) message=phpinfo() 입력 => PHP 설정 출력

 

 

 

2. message=system('ls') => 서버 명령 실행

 

3. nc 명령으로 리버스 쉘 연결 성공

 

 

 

 

 

cat /etc/passwd 해주면 계정 정보들도 확인할 수 있다. 

 

 


2.  SSI  Injection

 

SSI (Server Side Include) Injection이란? 

웹 서버가 .shtml 등의 파일에서 SSI 구문을 실행할 때, 외부 입력이 삽입되어 시스템 명령어를 실행할 수 있는 취약점이다.

 

1) <--#exec cmd="ls" --> 삽입 => 서버 명령어 실행

 

사용자 IP 확인용 코드 등도 조작이 가능해진다. 

 


3. iframe Injection

 

iframe Injection이란?

공격자가 <iframe> 태그를 삽입하여, 사용자의 브라우저에 다른 웹사이트를 몰래 로드하거나 악성 페이지로 이동시키는 공격이다. 

 

1) iframe에 악성 스크립트 포함 => 쿠키 탈취 가능

 

2) Burp Suite로 ParamUrl 파라미터 조작하여 공격 삽입

 


4. OS Command Injection

 

OS Command Injection이란?

입력값이 시스템 명령어로 전달되어, 공격자가 서버에서 직접 명령을 실행할 수 있는 취약점이다. 

서버 권한 획득, 파일 조작, 백도어 설치 등으로 이어질 수 있다.

 

1) nc ... -e /bin/bash 입력해서 서버 쉘 연결 성공 => 공격 후 pwd, ls, cat /etc/passwd 등 명령 실행 가능

 

 

 

2) ;whoami 입력

 

 


5. 대응 방안

취약점 대응 방안
PHP Code Injection eval() 등 위험 함수 사용 금지, 화이트리스트 기반 실행
SSI Injection SSI 비활성화, 외부 입력 삽입 방지
iframe Injection  X-Frame-Options 헤더로 iframe 차단
OS Command Injection 입력값 검증, 시스템 명령어 호출 차단 또는 wrapper 처리

 


6. 마무리

이런 중급 취약점은 보안 설정 미비 시 공격자가 서버 권한을 직접 획득할 수 있다는 점에서 매우 위험하다. 

모든 입력값은 신뢰할 수 없다는 전제로 필터링, 검증, 인코딩이 필요하며, 서버 측에서도 명령 실행 로직 자체를 제거하는 것이 가장 효과적이다. 

 

 

 

 

이 블로그는 불법 해킹 및 악의적인 활동을 지양하며, 그런 행위는 절대 권장하지 않습니다.

모든 실습은 허가된 환경에서만 진행해야 하며, 법적 책임은 사용자 본인에게 있습니다.