정보보안(구버전)/ bWAPP 2019. 1. 23. 13:28

웹 해킹 bWAPP - 02. A1 - Injection - HTML Injection - Reflected(GET)

 

 

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

 

 

1. Injection

 

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

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

 

 

 

2. HTML

 

 - HTML : Hyper Text Markup Language
 - 웹-서버에 저장된 문서를 클라이언트에 전송하여 클라이언트 웹-브라우저에 표현시켜주는 프로그래밍 언어

 

Ex1) HTML 이해하기

 

 

2-0. HTML 소스.txt

 

 

root@kali:~# cd Desktop
root@kali:~/Desktopvi cisco.html

<html>
<head>
<title>Cisco Title</title>

</head>
<body>
<h1>CCNA</h1>
<h2>CCNP</h2>
<h3>CCIE</h3>
Cisco License
</body>
</html>

 

:wq!

 

 

cisco.html 실행

 

 

 

cisco.html 내용 확인

 

 

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

 

 

 

HTML 소스 내용 확인

 

 

 

Ex2) 실제 사이트 HTML 소스 확인

 

 

'www.daum.net' 접속 -> 마우스 우클릭 -> '페이지 소스' 클릭

 

 

 

Daum 홈페이지 HTML 내용 확인

 

 

 

 

3. Injection - HTML Injection - Reflected(GET)

 

 - 취약한 HTML 환경에 악의적인 코드를 인젝션하는 공격 기법 

 - 이를 통해서 피싱 사이트 연결 유도 및 악성 파일 다운로드 클릭을 유도할 수 있음

 

 

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

 

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

 

 

 First Name, Last Name 입력 실시

 

 

 

'Welcome Jung Woo Kim' 확인

 

 

 

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

 

 

 

HTML 소스 내용 확인

 

 

 

 

Ex2) Injection - HTML Injection - Reflected(GET) II 이해

 

 

HTML 인젝션 실시

 

 

 

Welcome 결과 내용 확인

 

 

 

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

 

 

 

HTML 소스 내용 확인

 

 

 

 

Ex3) 프록시 설정 실시

 

- 버프슈트를 사용하기 이전에 프록시 설정 실시

 

 

브라우저 우측위에 '메뉴' 클릭 -> '환경 설정' 클릭

 

 

 

고급 -> 네트워크 -> '설정' 클릭

 

 

 

'프록시 수동 설정' 체크 -> 127.0.0.1:8080 확인 -> 우측아래 '확인' 클릭

 

 

 

 

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

 

 

버프슈트 실행

 

 

 

버프슈트 실행 완료

 

 

 

Proxy -> Optiosn -> 'Intercept requests & responses' 체크 실시

 

 

 

Intercept -> 'Intercept is on' 확인

 

 

 

HTML 인젝션 실시

 

 

 

버브슈트 Intercept 내용 확인

 

 

 

HTTP 헤더 내용 확인 (Body 부분은 현재 없음)

GET /bWAPP/htmli_get.php?firstname=%3Ch1%3ECCNA%3C%2Fh1%3E&lastname=Kim&form=submit HTTP/1.1

Host: 192.168.20.205                        <h1>CCNA</h1> 인코딩 내용

 

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_get.php?firstname=%3Ch1%3ECCNA%3C%2Fh1%3E&lastname=%3Ch2%3ECCNP%3C%2Fh2%3E&form=submit

Cookie: security_level=0; PHPSESSID=440d70f901fa9e6136057de77c9db7bb

Connection: close

Upgrade-Insecure-Requests: 1

 

 

 

Intercept is on 클릭하여 off 실시

 

 

 

HTML 인젝션 확인

 

 

 

 

Ex5) Injection - HTML Injection - Reflected(GET) 이해 III

 

 - 스크립트 추가 및 확인

 

2-1. HTML 소스 추가.txt

 

 

root@kali:~/Desktop# vi cisco.html

<html>
<head>
<title>Cisco Title</title>
<body>
<h1>CCNA</h1>
<h2>CCNP</h2>
<h3>CCIE</h3>
Cisco License
</body>
</html>
<script>alert("Warning")</script>   <- 추가

 

:wq! 

 

 

cisco.html 실행

 

 

 

cisco.html 경고창 확인

 

 

 

 

Ex6) Injection - HTML Injection - Reflected(GET) 이해 IV

 

 

2-2. 스크립트 입력-1.txt

스크립트 인젝션 실시

 

 

 

스크립트 경고창 확인

 

 

 

 

Ex7) Injection - HTML Injection - Reflected(GET) 이해 V

 

 

2-3. 스크립트 입력-2.txt

스크립트 인젝션 실시

 

 

 

이미지 스크립트 인젝션 내용 확인

 

 

 

 

Ex8) Injection - HTML Injection - Reflected(GET) 이해 VI

 

- 스크립트를 이용하여 쿠키 정보 획득 (쿠키 정보를 통해서 아이디/패스워드 없이 로그인 가능)

 

 

2-4. 스크립트 입력-3.txt

스크립트 인젝션 실시

 

 

[참고] 다른 페이지 접근 스크립트

 

<script>window.open("http://192.168.20.50")</script>

 

쿠키 정보 확인

 

 

 

 

Ex9) Injection - HTML Injection - Reflected(GET) 이해 VII

 

 - Security Level 'Medium'으로 변경 이후, 앞전에 했던 실습 진행

 

 

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

 

 

 

HTML 인젝션 실시

 

 

 

HTML 인젝션 실패

 

 

 

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

 

 

소스 내용 확인

 

 

 

 

Ex10) 'htmli_get.php' & 'functions_external.php' 파일 내용 확인

 

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

 

bee@bee-box:/var/www/bWAPP$ vi htmli_get.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$ ls -l functions_external.php
-rw-rw-r-- 1 root www-data 15526 2014-11-02 23:52 functions_external.php

 

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);    <- '<'를 '&lt'로 치환

    $input = str_replace(">", "&gt;", $input);  <- '>'를 '&gt'로 치환

   

    // 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; 

 

 

[참고] ASCII 코드 확인 사이트

 

https://www.ascii.cl/htmlcodes.htm

 

 

 

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

 

https://meyerweb.com/eric/tools/dencoder/

 

 

HTML or 스크립트 입력 -> 'Encode' 클릭

 

 

Encode 내용 확인

 

 

 

2-5. 인코드 내용-1.txt

Encode 내용 인젝션 실시

 

 

 

디코드 취약점 인젝션 내용 확인

 

 

 

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

~ 중간 생략 ~

 

 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 태그로 적용되는 것을 방지하여 일반 문자로 처리해주는 기능 수행

 

 

 

 

Ex11) 보안 레벨 'High' 변경

 

 - High Security Level은 디코딩 동작이 없기 때문에 취약점이 발생되지 않는다.

 

보안 레벨 및 시나리오 선택

 

 

 

2-6. 인코드 내용-2.txt

Encode & HTML 인젝션 실시

 

 

 

HTML 인젝션 실패

 

 

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


웹해킹 02. bWAPP Injection - HTML Injection - Reflected(GET)   https://youtu.be/GBiRHhWU83A

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


Q