beescms網站滲透測試

TKXS發表於2020-12-27

beescms網站滲透測試

目錄

1.環境搭建
2.滲透前資訊收集
3.開始滲透
4.總結
5.修復建議

Beescms實驗環境搭建

1、官方下載Beescms v4.0,下載地址: http://beescms.com/cxxz.html
2、解壓壓縮檔案,然後把檔案放到phpstudy的網站根目錄
3、瀏覽器訪問http://127.0.0.1/beescms/install,開始安裝
在這裡插入圖片描述
4、一直下一步,出現如下介面,輸入資料庫賬戶密碼
在這裡插入圖片描述
5、成功安裝
在這裡插入圖片描述
6、修改mysql.ini 檔案,在mysqld 下新增條目: secure_file_priv =,儲存然後重啟phpstudy,不然用mysql寫入檔案會報錯。
在這裡插入圖片描述
7、安裝完成
在這裡插入圖片描述

滲透前資訊收集

1、用kali的dirb對網站目錄進行掃描
在這裡插入圖片描述
同時也用sqlmap對網站進行注入掃描
sqlmap -u "http://靶機IP/newsletter&id=1" -p id
在這裡插入圖片描述
2、掃描完成後,sqlmap沒有發現注入點,但是目錄掃描發現了管理登入點,嘗試對管理登入點進行漏洞測試在這裡插入圖片描述
在這裡插入圖片描述
3、在這裡對使用者名稱登入進行sql注入嘗試
在這裡插入圖片描述
發現有sql語句報錯
在這裡插入圖片描述
這裡是一個滲透點記下!

4.檢視能否對管理員登入進行爆破
在這裡插入圖片描述
在這裡,可以看到,驗證碼是有submit來重新整理頁面,也就是說可以達到控制submit來禁止驗證碼重新整理實現爆破,這也是滲透點,記下!

漏洞利用

一、密碼爆破漏洞

(1)嘗試輸入使用者名稱密碼進行登入
在這裡插入圖片描述

(2)通過burp分析登入需要的引數
在這裡插入圖片描述

可以看到引數裡面有user,password,code,submit
通過程式碼可以發現,submit在使用者提交後重新整理頁面和驗證碼,所以我們需要在submit=true哪裡修改為submit=false就可以讓他停止重新整理,從而輸入一遍驗證碼即可。
(3)通過burp爆破
在這裡插入圖片描述

修改submit=true為false將密碼設定為變數對admin使用者進行爆破。
(4)成功結果
在這裡插入圖片描述
在這裡插入圖片描述

二、檔案上傳漏洞

1.登入後臺獲取系統許可權
(1)後臺管理中有檔案上傳的區域
在這裡插入圖片描述

(2)上傳一個一句話木馬後,發現檔案將會被重新命名
在這裡插入圖片描述

(3)觀察原始碼後發現,檔案被重新命名後原始檔還是在同一目目錄下,只是將檔案單獨截圖多加了_thumb.png的字尾改成我們所上傳的檔案字尾,去掉字尾就可以看到我們上傳的檔案包含一句話木馬
在這裡插入圖片描述

(4)用蟻劍連線測試
在這裡插入圖片描述

測試成功,獲得系統許可權
sql注入漏洞
(1)登入頁面嘗試
在這裡插入圖片描述
在這裡插入圖片描述

通過分析可以看到有sql注入漏洞
在這裡插入圖片描述

unionselect等關鍵字被過濾
(3)通過上面的分析原始碼,發現bypass的方法,猜解SQL查詢語句中的欄位數,根據如下圖所示,判斷出SQL查詢語句中的欄位數為5
在這裡插入圖片描述

(4)對庫名爆破
在這裡插入圖片描述

(5)對錶名爆破
在這裡插入圖片描述

(6)列名爆破
在這裡插入圖片描述

在這裡插入圖片描述

(7)暴欄位
在這裡插入圖片描述

(8)暴密碼
在這裡插入圖片描述

(9)密碼解密
密碼是md5編寫的,用md5解密即可
在這裡插入圖片描述
密碼是admin

總結

經過審計分析,beescms V4.0版本存在後臺管理員密碼爆破漏洞、檔案上傳漏洞、後臺SQL隱碼攻擊漏洞。管理員後臺密碼爆破漏洞會造成管理員密碼洩露影響;檔案上傳漏洞漏洞會造成系統被黑客入侵影響;後臺SQL隱碼攻擊漏洞會造成管理員密碼洩露影響。

修復建議

可以通過修改驗證碼方式對後臺管理員密碼漏洞進行修護,修復的措施如下:

  1. 驗證碼只能用一次,用完立即過期!不能再次使用
  2. 驗證碼不要太弱。扭曲、變形、干擾線條、干擾背景色、變換字型、增加token,且一次性有效。
  3. 模糊提醒
  4. 限制請求頻率,錯誤一定次數,鎖定賬號一段時間
  5. 修改驗證方式設定,改為滑塊驗證或者影像化驗證防止抓包

可以通過修改圖片方式對檔案上傳漏洞進行修護,修復的措施如下:

  1. 圖片二次處理後,將原始檔刪除或轉移其他目錄,防止被發現找到,避免一句話木馬插入
    可以通過修改圖片方式對sql注入漏洞進行修護,修復的程式碼或措施如下:
  2. 普通使用者與系統管理員使用者的許可權要有嚴格的區分,如果一個普通使用者在使用查詢語句中嵌入另一個Drop Table語句,那麼是否允許執行呢?由於Drop語句關係到資料庫的基本物件,故要操作這個語句使用者必須有相關的許可權
  3. 強迫使用引數化語句,如果在編寫SQL語句的時候,使用者輸入的變數不是直接嵌入到SQL語句,而是通過引數來傳遞這個變數的話,那麼就可以有效的防治SQL隱碼攻擊式攻擊
  4. 加強對使用者輸入的驗證,加強對使用者輸入內容的檢查與驗證,強迫使用引數化語句來傳遞使用者輸入的內容。在SQLServer資料庫中,有比較多的使用者輸入內容驗證工具,可以幫助管理員來對付SQL隱碼攻擊式攻擊。測試字串變數的內容,只接受所需的值。拒絕包含二進位制資料、轉義序列和註釋字元的輸入內容
  5. 多多使用SQL Server資料庫自帶的安全引數,在SQLServer資料庫專門設計了相對安全的SQL引數。在資料庫設計過程中,要儘量採用這些引數來杜絕惡意的SQL隱碼攻擊式攻擊
  6. 定期使用專業的漏洞掃描工具來尋找可能被攻擊的點,在被人攻擊自己網站前,優先找出自己網站的漏洞
  7. 設定兩個帳號,一個是普通管理員帳號,一個是防注入的帳號。將防注入的賬號設定的很象管理員,如 admin,以製造假象吸引軟體的檢測,而密碼是大於千字以上的中文字元,迫使軟體分析賬號的時候進入全負荷狀態甚至資源耗盡而當機

相關文章