php偽協議漏洞 某 CMS 的漏洞挖掘和分析

2021-10-12 20:30:48 字數 2027 閱讀 5402

信安之路

xxe漏洞基礎知識,網上很多。值得一提的是版本號,想要利用 xxe 需要注意 php 的版本號。。其實是libxml的版本號要小於等於 2.8.0。這一點很重要。。復現的環境是使用phpstudyphp5.4版本。一開始使用5.6 版本死活不成功。。怪自己太蠢。。

全域性搜尋關鍵字******xml_load_string就可以找到漏洞點。不難觀察出$postarr值使用偽協議寫入,是我們可控的,因此只要傳入構造好的xml語句即可外帶出資料。而這個漏洞點是不會回顯獲取到的資訊,因此只能構造oob進行資料外帶。

這是乙個很標準的xxe漏洞,使用基礎操作就可以了。

在自己的 vps 上建立乙個oob_poc.dtd,傳送資料報如下:

可以看到自己的伺服器上,日誌裡多了一條請求,即資料經過base64加密外帶到伺服器的記錄。這裡如果檔案過大則會外帶資料失敗。。不知道是什麼原因。。

xml本質是進行資料傳輸,在特定的情況下也許會產生不同的漏洞,比如說此處的 sql 注入。這個sql注入是挖掘上面xxe漏洞後才發現,可以說的上是買一送一了。

上文提到,$postarr變數是由偽協議輸入得來的,而該cms全域性是有對getpost引數進行過濾的,一但輸入單引號等特殊字元,就會被攔截。也正因為是使用偽協議的方式寫入引數,從而繞過了該檢查機制。

只要我們控制了$tousername的值,即可造成一枚sql注入。而$touusername是通過 xml 解析來的,顯然我們可以控制這個解析的串。構造如下payload

aatousername>

bb' or 1=if(0,sleep(1),0) #fromusername>

cccreatetime>

eventmsgtype>

subscribeevent>

eecontent>

xml>

msgtypeevent等用來控制程式流程,fromusername是注入sql語句的地方。對比如下兩張圖,不難看出如果條件為真,伺服器則會延時一段時間,因此可以判斷出存在 sql 注入。

這裡的 xxe 漏洞也算是碰巧遇見的,主要是傳參的方式變了,一開始沒認出來。

知識點傳送門

這套cms審計下來明顯的sql注入,重灌漏洞等問題挖到四五個點。這是第一次通過審計的方式挖掘到xxe,也算是圓滿了一些。由於審計效率太慢,大部分洞都被大佬們挖走了(留下沒有技術的眼淚.jpg),只好撿撿漏。

審計的時候一定要注意版本!!!不管是 cms 的版本也好,還是環境的版本也好都會對復現產生一定的影響,可能浪費不必要的時間。再有就是審計**耐心很重要,技巧方面就是善用全域性搜尋,定位變數。大概就是這樣了

●編號944,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

資料庫開發

WEB XML與XXE漏洞 偽協議

在做unctf時遇到一道web題,是xml的xxe漏洞 do you like xml 當時沒做出來,沒反應過來這個知識點,後來經人指點稍微理解了一些關於這個的漏洞,又在判作業中看到了這個知識點,所以決定記錄下來 xml是用於標記電子檔案使其具有結構性的標記語言,可以用來標記資料 定義資料型別,是一...

php檔案包含 偽協議 檔案上傳漏洞利用例項

1.上傳檔案過濾了字尾名和mime型別,files pic type 是由瀏覽器傳輸的檔案型別決定,但是mime content type 是由php 內建方法判斷檔案型別 2.任意檔案包含 f get f include once sys config.php include f 利用zip或ph...

php檔案包含 偽協議 檔案上傳漏洞相關說明

2.任意檔案包含 f get f include once sys config.php include f 利用zip或phar偽協議讀取壓縮包中的檔案 上傳webshell完成 擴充套件 php偽協議 file 訪問本地檔案系統 訪問 http s ftp 訪問 ftp s urls php 訪...