ueditor漏洞利用&源碼分析詳細版
漏洞簡介
大家都說這個漏洞是上傳漏洞,其實這個不是上傳漏洞,是遠程文件下載漏洞。
思路類似于我們打內(nèi)網(wǎng)的時候遠程wget或者certutil直接把payload或者exe下載到目標(biāo)機器上,然后運行上線。
利用參考
https://www.cnblogs.com/hei-zi/p/13394764.html
這里主要講源碼的部分。
ueditor C#版本源碼解析
下載好漏洞組件,進行查看

里面這個controller.ashx相當(dāng)于一個控制器,也就是入口點,類似于mvc架構(gòu)中的controller,和thinkphp那種模式有點類似。
打開看一下這個代碼
不同的case,就是不同的條件跳轉(zhuǎn),參數(shù)從前臺用?action=config等方式傳入,然后進入后臺,對應(yīng)不同的case,即進入不同的邏輯。
別的我們先不看,先看漏洞產(chǎn)生的邏輯語句。
直接定位到漏洞的邏輯語句
然后這里看到有個CrawlerHandler,是new出來的

crtl鍵按住查看

非常好,啥也沒有,這里我對c#也不是很了解,于是我又打開原本的那個文件來看

這里就找到了對應(yīng)的cs文件

cs文件就是c#文件的源碼,c sharp = cs
然后打開看一下

看不明白,但是結(jié)合之前

這一行,是在實體話crawlwerhander new時候通常要調(diào)用一個構(gòu)造方法,也就是和CrawlerHandler同名的一個構(gòu)造方法。
這個構(gòu)造方法在這里

也沒啥用,然后又看回去,發(fā)現(xiàn)一行

這里調(diào)用了一個Process方法,每一個對應(yīng)的cs文件中都有一個Process方法,前臺參數(shù),后臺接受參數(shù)并使用。

這里有個fetch方法,跟一下

poc中有個特殊的的點,網(wǎng)上很多文章沒講清楚
傳過去的參數(shù)是
1.gif?.aspx
之所以為什么是1.gif?.aspx才能生效,這里還得看源碼
首先這里寫明了response中的content-Type是image
也就是返回包的部分

所以上傳的東西必須是一個具有image文件頭的東西
其次后臺對于文件名的判定是通過.來判定
也就是這一行代碼

就用的是這個GetFileName方法
這個方法經(jīng)過我的測試

這個payload會被當(dāng)成一個名為1.gif?的文件,但是后綴還是.asp,也就是按照asp來做解析
而這個文件,在前臺1.gif?xxxxx按照瀏覽器的邏輯,?后面就是參數(shù),因此前臺解析這個http://127.0.0.1/xxx/1.gif?.asp
是當(dāng)成圖片文件來做解析的
該漏洞是由于上傳文件時,使用CrawlerHandler類未對文件類型進行檢驗,導(dǎo)致了任意文件上傳。升級可以防止這個漏洞產(chǎn)生。
往期回顧
frida hook native層巧解Android逆向題
商務(wù)咨詢:
0571-87031601
商務(wù)郵箱:

