정보보안(구버전)/ bWAPP 2019. 1. 23. 17:31

웹 해킹 bWAPP - 03. A1 - Injection - HTML Injection - Reflected(POST)

 

 

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

 

 

1. Injection

 

 - OWASP Top10 A1 - 악의적인 명령 삽입
 - 서버로 전송되는 요청 정보에 악의적인 명령을 삽입하여 불필요한 동작을 실시하거나, 서버/시스템/DB 중요 정보를

   획득할 수 있는 취약점이다.
 - Ex) HTML 인젝션, SQL 인젝션, PHP 인젝션, XML 인젝션

 

 

 

2. GET & POST 차이점

 

  - GET 방식 : Header에 정보(변수)를 포함시킴, 그렇기 때문에 주소창(URL)에 서버로 넘어가는 정보가 보임

 

 


  - POST 방식 : Body에 정보(변수)를 포함시킴, 그렇기 때문에 주소창(URL)에 서버로 넘어가는 정보가 안보임

 

 

 

 

3. Injection - HTML Injection - Reflected(POST)

 

Ex1) Injection - HTML Injection - Reflected(POST) 이해 I

 

 

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

 

 

 

First Name, Last Name 입력 실시

 

 

 

'Welcome Jung Woo Kim' 확인 및 주소창 확인

 

 

 

Ex2) 버프슈트를 이용한 HTTP Header & Body 확인 실시


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

 

 

First Name, Last Name 입력 실시 -> 'Go' 버튼 클릭

 

 

 

버브슈트 Intercept 내용 확인

 

 

HTTP Header & Body 내용 확인

firstname=Jung+Woo&lastname=Kim&form=submit

Host: 192.168.20.205

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

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

Referer: http://192.168.20.205/bWAPP/htmli_post.php

Cookie: security_level=0; PHPSESSID=f1a4332a67e32736cbc3a16e1432e967

Connection: close

Upgrade-Insecure-Requests: 1

Content-Type: application/x-www-form-urlencoded

Content-Length: 43

 

firstname=Jung+Woo&lastname=Kim&form=submit 

 

 

 

Intercept is on 클릭하여 off 실시

 

 

 

HTML or 스크립트 입력 내용 확인

 

 

 

Ex3) 'htmli_post.php' & 'functions_external.php' 파일 내용 확인

 

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

 

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

~ 중간 생략 ~

 

include("functions_external.php");
include("selections.php");

 

function htmli($data)
{

    switch($_COOKIE["security_level"])
    {

        case "0" :    <- Security Level = Low

 

            $data = no_check($data);
            break;

 

        case "1" :    <- Security Level = Medium

  

            $data = xss_check_1($data);
            break;

 

        case "2" :    <- Security Level = High

 

            $data = xss_check_3($data);
            break;

 

        default :

            $data = no_check($data);
            break;;

 

    }

 

    return $data;

}

 

:q!

 

 

bee@bee-box:/var/www/bWAPP$ gedit functions_external.php

~ 중간 생략 ~

 

function xss_check_1($data)

{

   

    // Converts only "<" and ">" to HTLM entities   

    $input = str_replace("<", "&lt;", $data);

    $input = str_replace(">", "&gt;", $input);

   

    // Failure is an option

    // Bypasses double encoding attacks  

    // <script>alert(0)</script>

    // %3Cscript%3Ealert%280%29%3C%2Fscript%3E

    // %253Cscript%253Ealert%25280%2529%253C%252Fscript%253E

    $input = urldecode($input);

   

    return $input;

   

}

 

function xss_check_2($data)

{

 

    // htmlentities - converts all applicable characters to HTML entities

   

    return htmlentities($data, ENT_QUOTES);

   

}

 

function xss_check_3($data, $encoding = "UTF-8")

{

 

    // htmlspecialchars - converts special characters to HTML entities   

    // '&' (ampersand) becomes '&amp;'

    // '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set

    // "'" (single quote) becomes '&#039;' (or &apos;) only when ENT_QUOTES is set

    // '<' (less than) becomes '&lt;'

    // '>' (greater than) becomes '&gt;' 

   

    return htmlspecialchars($data, ENT_QUOTES, $encoding);

      

 

 

 

[참고] 'htmlspecialchars' 함수


 - HTML 코드에 메타케릭터를 입력하여 다른것을 출력하거나 실행하는 것을 방지할때 사용하는 함수

 - 즉, HTML 메타케릭터가 HTML 태그로 적용되는 것을 방지하여 일반 문자로 처리해주는 기능 수행

 

 

 

Ex4) 버프슈트를 이용하여 Body 정보 변조 실시

 

 

Intercept -> 'Intercept is on' 전환 실시

 

 

 

First name/Last name 입력 실시

 

 

 

버프슈트 Intercept 내용 확인

 

 

3-0. Body 내용 변조.txt

HTTP Header & Body 내용 확인 및 Body 내용 변경

POST /bWAPP/htmli_post.php HTTP/1.1

Host: 192.168.20.205

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

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

Referer: http://192.168.20.205/bWAPP/htmli_post.php

Cookie: security_level=0; PHPSESSID=ab09d26b88d3a77223f3ffb2bed25d53

Connection: close

Upgrade-Insecure-Requests: 1

Content-Type: application/x-www-form-urlencoded

Content-Length: 43

 

firstname=Jung+Woo&lastname=Kim&form=submit   <- 기존 Body 내용

 

firstname=<h1>CCNA</h1>&lastname=<h2>CCNP</h2>&form=submit   <- 수정 Body 내용

 

 

 

 

Body 내용 변조 -> 'Intercept is on'을 클릭하여 off 실시

 

 

'Intercept is off' 확인

 

 

 

변조된 내용 확인

 

 

 

 

Ex5) Security Level 'Medium'으로 변경하여 인젝션 실습 실시

 

 

 

Ex6) Security Level 'High'으로 변경하여 인젝션 실습 실시

 

 

 

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


웹해킹 03. bWAPP Injection - HTML Injection - Reflected(POST)   https://youtu.be/bshcE5ddp-s

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


Q