Discuz!NT 后台任意文件上传的源代码修补方法

相关的漏洞介绍:

http://www.wooyun.org/bugs/wooyun-2013-035199

Discuz!NT 管理后台可以自定义文件类型,从而造成任意文件上传,测试过程中 aspx文件,目录并不会解析。所以需要能解析 asp 或者php等。

过程演示【程序版本:Discuz!NT 3.6】:
1. 登陆 Discuz!NT 后台,【全局】-->【附件设置】-->【附件尺寸】-->【添加附件类型】
添加需要上传的文件类型。如图,我添加了ASP
2. 给用户组加上上传ASP的权限。【用户】-->【分组与级别】-->【编辑用户组】-->【编辑系统组】-->【管理员】,勾选上添加的ASP 类型。
3.去前台上传上传asp文件。【附件】-->【批量上传】,选择ASP文件。
4.进入后台找shell。【内容】-->【附件管理】-->【搜索附件】。

 

特此记录一下:

-------------------------------------------

1.先加强后台中的判断准则:Discuz.Web.Admin.attachtypesgrid.cs文件中的

复制代码
        private void AddNewRec_Click(object sender, EventArgs e)
        {
            #region 添加新的附件信息

            if (extension.Text == "")
            {
                base.RegisterStartupScript( "", "<script>alert('要添加的附件扩展名不能为空');window.location.href='forum_attachtypesgrid.aspx';</script>");
                return;
            }

            if (extension.Text.ToLower().Contains("asp") || extension.Text.ToLower().Contains("php")||extension.Text.ToLower().Contains("jsp"))
            {
                base.RegisterStartupScript("", "<script>alert('要添加的附件扩展名不能为asp,php,jsp');window.location.href='forum_attachtypesgrid.aspx';</script>");
                return;
            }
复制代码

 

2.再加强前台中的代码判断准则:Discuz.Forum.ForumUtils.cs文件中的

        public static AttachmentInfo[] SaveRequestFiles(int forumid, int MaxAllowFileCount, int MaxSizePerDay, int MaxFileSize, int TodayUploadedSize, string AllowFileType, int watermarkstatus, GeneralConfigInfo config, string filekey, bool isImage)函数

1
2
3
4
5
6
if (fileName!=null&&(fileName.ToLower().Contains(".asp")||fileName.ToLower().Contains(".php")||fileName.ToLower().Contains(".jsp")))
{
    attachmentInfo[saveFileCount].Sys_noupload = "文件格式无效";
}
// 判断 文件扩展名/文件大小/文件类型 是否符合要求
else if (!(Utils.IsImgFilename(fileName) && !fileType.StartsWith("image")) && ValidateImage(fileType, HttpContext.Current.Request.Files[i].InputStream))

 

现提供编辑好的DLL:Discuz.Web.Admin.dll+Discuz.Forum.dll,此编译DLL仅供测试,请自己备份好之前的DLL。

https://files.cnblogs.com/miao31/Discuz.Web.Admin.dll.rar

posted @   Miao31  阅读(1050)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示