[php代碼審計]熊海cms v1.0

1、環境搭建

  • 熊海cms v1.0源碼
  • windows 7
  • phpstudy2016(php 5.4.45)
  • seay源代碼審計系統

注意搭建環境時將路徑中的中文改爲英文php

 

2、漏洞列表

seay 報出 34 個可能的漏洞,不是不少能夠再結合容易出漏洞的功能點逐一看一下html

 

2.1文件包含

先檢查第一個可疑漏洞,打開 /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 也存在一樣的文件包含漏洞,這裏就不詳細分析了函數

 

2.2報錯注入

審計一下後臺登陸的代碼 /admin/files/login.php,首先程序用POST方式接收參數,而後未經任何過濾進行了用戶名校驗,若是用戶名存在繼續進行密碼校驗。這裏計算傳遞的 password 變量的 md5,而後拿 md5 值與數據庫裏面的密碼進行覈對測試

 

能夠經過報錯注入利用這個漏洞,順便寫一下 updatexml 報錯注入原理。MySQL 5.1.5 版本中添加了對XML文檔進行查詢和修改的兩個函數:extractvalue、updatexml編碼

UPDATEXML (XML_document, XPath_string, new_value);url

  • 第一個參數:XML_document是String格式,爲XML文檔對象的名稱,文中爲Doc
  • 第二個參數:XPath_string (Xpath格式的字符串) 
  • 第三個參數:new_value,String格式,替換查找到的符合條件的數據 

所以須要在第二個參數中插入不屬於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 能夠獲得結果,這裏不詳細分析了

 

2.3垂直越權

/inc/checklogin.php 是一個判斷管理員的程序,若是COOKIE中 user 參數爲空,那麼就跳轉到登錄窗,很容易利用這個漏洞,抓包添加user字段即直接進入後臺管理

 

2.4CSRF

後臺管理員存在文件刪除的功能,/inc/checklogin.php 驗證是不是管理員,GET傳遞的 delete 參數直接插入數據庫刪除對應的文件

 

利用一下這個漏洞,登陸管理員帳號後,點擊以下連接,成功刪除文章

http://192.168.25.130/isea_v1.0/admin/?r=wzlist&delete=8

 

2.5存儲型XSS

留言功能很容易出現存儲型XSS,/files/contact.php 頁面有留言功能,留言後 /files/submit.php 頁面 insert 插入數據表

 

補充一下 textarea 標籤裏的內容在瀏覽器裏會自動編碼成實體字符,例如

<textarea>&lt;script&gt;alert(1)&lt;/script&gt;</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

 

2.6反射型XSS

仍是在 /files/contact.php 頁面,顯示頁碼的 page 參數沒有任何過濾,產生反射型XSS漏洞,可是利用起來很雞肋

 

 

3、總結

此次 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/

http://www.javashuo.com/article/p-xhzlbles-p.html

相關文章
相關標籤/搜索