WEB hacking/비박스(bWAPP)

[비박스(bWAPP)] - PHP-CGI 취약점 공격(metasploit)

Roronoa 2022. 11. 14. 01:39
반응형

PHP 버전 5.3.12와 5.4.2 이전 버전에서 소스코드가 노출되거나 공격자가 임의의 코드를 실행할 수 있는 취약점(CVE-2012-1823)이 존재한다. 이 취약점은 요청 URL의 쿼리스트링 부분을 잘못 처리해서 발생하는 취약점이다.

PHP-CGI 취약점 공격

[그림 1] phpinfo.php 페이지 확인

비박스의 php환경은 그림 1에서 보는 것처럼 5.2.4버전인 것을 알 수 있다. 따라서 PHP-CGI 취약점 공격이 가능하다.

비박스의 /admin/ 경로에서 공격을 실습하도록 하겠다.

 

[그림 2] admin 페이지

 

[그림 3] PHP-CGI 취약점으로 소스코드 노출

웹 브라우저 주소창에서 경로 뒤에 ?-s를 입력을 하면 PHP의 소스코드를 읽을 수 있다.

이 취약점을 이용하여 임의의 코드 실행도 가능하다!!

 

[그림 4] metasplolit 실행

msfconsole으로 메타스플로잇을 실행한다.

공격과정

1. search 명령어로 공격 모듈 검색

2. use 명령어로 공격 모듈 설정 단계로 진입

3. show options 명령어로 옵션을 확인한 후 set 명령어로 필요한 옵션을 설정

4. 공격에 성공하게 되면 실행할 페이로드를 설정. 일반적으로 바인드 쉘이나 리버스 쉘 등 쉘을 획득하는 페이로드 설정

5. run 명령어를 실행하여 공격을 수행

6. 공격에 성공하면 페이로드가 생성되고 post exploit 과정을 수행

 

[그림 5] search php_cgi

search php_cgif를 이용하여 php_cgi의 공격 모듈을 검색하였다.

 

[그림 6] use 명령어

use 명령어를 사용하여 공격 모듈을 설정해주었다.

 

[그림 7] show options 명령어

show options 명령어로 옵션을 확인을 진행 하였다.

옵션의 내용은 이름, 현재 설정, 필수 옵션 여부, 옵션 설명이 출력되어있다. 옵션 중에서 필수 옵션을 설정해야한다.

현재 필수 옵션중 RHOST 옵션이 설정되어 있지 않으므로 설정을 해주어야한다.

RHOST는 공격 대상의 IP 주소를 설정하는 옵션으로 bWAPP의 주소를 설정하면 된다.

 

필수 옵션이 아니더라도 공격에 성공하기 위해 별도로 설정해야 하는 옵션이 있다. 이 실습에서는 TARGETURI 옵션을 설정해야한다. TARGETURI는 취약점이 존재하는 경로를 설정하는 옵션이다. PHP-CGI 취약점이 루트 경로에 있는 것이 아니라 /bWAPP/admin/ 경로에 있기 때문에 경로를 지정해 주어야한다.

 

[그림 8] set명령어로 옵션 설정 후 payloads확인

payloads를 확인해 보면 리버스 쉘을 생성하는 generic/shell_reverse_tcp 페이로드를 사용해보도록 하겠다.

set payload 명령어로 페이로드를 지정할 수 있다.

 

[그림 9] payload 설정

payload를 설정해 주었고 LHOST, LPORT를 설정해 주어야 한다.

LHOST는 공격자의 IP주소를 설정해야하고 LPORT는 공격자가 열 포트를 설정해야한다 우리는 디폴트 값으로 4444포트를 사용하도록 하겠다.

 

[그림 10] exploit 성공

run 명령어를 입력하여 익스플로잇을 실행하였고 공격에 성공하여 쉘을 획득하였다.

하지만 www-data 사용자의 권한이므로 post exploit단계에서 권한 상승을 하여 root 권한을 획득해야한다.

 

대응 방안

최신 버전으로 업데이트 함으로써 공격에 대응할 수 있다.

반응형