注意搭建環境時將路徑中的中文改爲英文php
seay 報出 34 個可能的漏洞,不是不少能夠再結合容易出漏洞的功能點逐一看一下html
先檢查第一個可疑漏洞,打開 /index.php 文件,明顯的文件包含漏洞,$_GET['r'] 未通過濾直接被 include 包含,可是添加了 php 後綴數據庫
通常文件包含漏洞都會結合圖片馬一塊兒利用,登陸到後臺發現資料設置處能夠上傳頭像,看一下處理上傳圖片的代碼 /admin/files/manageinfo.php 沒有什麼過濾,可是包含了 /inc/up.class.php,上傳功能僅對文件後綴進行了判斷,白名單:jpg|jpeg|gif|bmp|png,恰好能夠上傳圖片馬windows
上傳圖片馬,後臺直接顯示出路徑,接下來包含圖片馬後還須要截斷 php 後綴,具體操做和限制條件能夠參考我這篇 http://www.javashuo.com/article/p-qlxczawz-e.html 博客的 2.7 小節瀏覽器
/admin/index.php 也存在一樣的文件包含漏洞,這裏就不詳細分析了函數
審計一下後臺登陸的代碼 /admin/files/login.php,首先程序用POST方式接收參數,而後未經任何過濾進行了用戶名校驗,若是用戶名存在繼續進行密碼校驗。這裏計算傳遞的 password 變量的 md5,而後拿 md5 值與數據庫裏面的密碼進行覈對測試
能夠經過報錯注入利用這個漏洞,順便寫一下 updatexml 報錯注入原理。MySQL 5.1.5 版本中添加了對XML文檔進行查詢和修改的兩個函數:extractvalue、updatexml編碼
UPDATEXML (XML_document, XPath_string, new_value);url
所以須要在第二個參數中插入不屬於Xpath格式的內容,便可引起報錯spa
payload 以下
1' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1)#爆庫 1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 6,1),0x7e),1)#爆表 1' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='manage' limit 3,1),0x7e),1)#爆字段 1' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),1) #爆密碼
可是因爲 updatexml 最大長度是 32 位,因此要進行兩次報錯注入拼接密碼 md5 值
1' or updatexml(1,concat((select concat(0x7e,password) from manage)),0) # 1' or updatexml(1,concat((select concat(password,0x7e) from manage)),0) #
/admin/files/newlink.php 也有程序用POST方式接收參數,而後未經任何過濾插入數據庫的問題,用剛剛的 payload 能夠獲得結果,這裏不詳細分析了
/inc/checklogin.php 是一個判斷管理員的程序,若是COOKIE中 user 參數爲空,那麼就跳轉到登錄窗,很容易利用這個漏洞,抓包添加user字段即直接進入後臺管理
後臺管理員存在文件刪除的功能,/inc/checklogin.php 驗證是不是管理員,GET傳遞的 delete 參數直接插入數據庫刪除對應的文件
利用一下這個漏洞,登陸管理員帳號後,點擊以下連接,成功刪除文章
http://192.168.25.130/isea_v1.0/admin/?r=wzlist&delete=8
留言功能很容易出現存儲型XSS,/files/contact.php 頁面有留言功能,留言後 /files/submit.php 頁面 insert 插入數據表
補充一下 textarea 標籤裏的內容在瀏覽器裏會自動編碼成實體字符,例如
<textarea><script>alert(1)</script></textarea>
利用時須要先跳出 textarea 標籤(這裏不適用,由於在 /files/submit.php 中還會過濾 content 內容)
</textarea><script>alert(1);</script>
利用一下漏洞,因爲這裏有一些代碼中相對地址的不一樣,把源代碼直接放在根目錄跳轉時不會發生錯誤(原來源碼是放在 /isea_v1.0/ 下進行測試),雖然這裏的 content 進行了嚴格的過濾,可是 name、mail、url 都沒有進行過濾,能夠直接提交 js 代碼上去,可是要注意利用時注意閉合標籤,以暱稱爲例,構造一個 payload,後臺管理員處能夠成功彈窗
<script>alert(1);</script>','1','1','1','1','1','1','1','1'),('1','1','1','1
仍是在 /files/contact.php 頁面,顯示頁碼的 page 參數沒有任何過濾,產生反射型XSS漏洞,可是利用起來很雞肋
此次 cms 的審計難度較 bluecms 簡單一點,對新手友好,鍛鍊思路仍是很好的。Seay 誤報仍是挺多的,要本身多留意容易出漏洞的功能點。
參考:
http://pines404.online/2019/10/20/%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/%E7%86%8A%E6%B5%B7CMS/