白盒审计DeDeCMS拿到CNVD证书

免责申明

本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。

0x00 影响版本

这段时间进行代码审计出了一个漏洞,也就是DeDeCMS的文件写入漏洞,是可以直接拿到网站的webshell权限的,因为现在新的版本已经发布出来了,这个漏洞也被CNVD收录所以现在写一篇篇文章,说下当时的一个审计流程。

首先我习惯审计的时候先定位危险函数点,然后再进行回溯查看参数是否可控,最后再去看参数在传递的过程当中是否存在过滤等代码

0x00 影响版本

此漏洞涉及版本为DeDeCMS<5.7.108版本,目前官网已经发布了5.7.110版本这个漏洞已经被修复

0x01审计过程

在官网下载好源码使用在这里插入图片描述漏洞涉及文件

uploads/dede/article_template_rand.php

在代码当中可以看到fwrite写入函数,其中第一个变量fp指定了一个文件为

/template.rand.php,第二个变量$templates为可控变量

图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw)
到这里大致的思路就明白了,使用fwrite函数进行了文件写入,写入文件为

template.rand.php,方便我们写入一句话,然后写入内容为tempates变量,这

个变量我们可控,开始尝试写入一下

为了知道文件位置,我们在写入文件下方加入echo打印出文件的绝对路径

在这里插入图片描述

在这里插入图片描述进行发包查看是否成功写入

在这里插入图片描述
发现了被过滤了,回到代码查看,在文件下方
在这里插入图片描述
通过file_get_contents函数载入了写入的文件继续了过滤,并且给了变量content然后进行了一系列判断
在这里插入图片描述第一层判断是判断是if判断,使用了正则表达,要被正则表达匹配到的要求是匹配规则要求函数名之前必须包含非小写字母的字符,并且函数名后面必须是括号字符(圆括号、方括号或大括号)或单引号(来源于AI Chat GPT)

在这里插入图片描述
经过这个过滤之后,下一个过滤代码则是
在这里插入图片描述
我们再来看下GPT的回答
在这里插入图片描述由于笔者这里对这个正则表达式不是很清楚他这个过滤的机制,总之在最后的测试过程当中发现了基本上百分之八十webshell都可以直接写入

问了好多次GPT也是一知半解的感觉
在这里插入图片描述如果有师傅知道可以一起交流一下

回归原题,现在我们知道了,存在一个写入文件的函数,并且写入的文件是php文件,写入的内容也是可控的,存在一定的过滤但是和没有差不多

0x02 漏洞验证

在这里插入图片描述
当我们写入之后点击确定发现成功修改了这个配置文件,然后直接访问目标文件
在这里插入图片描述文件写入成功

0x03 小结

最后也是经过了漫长(好长!!)的等待,终于等到了漏洞归档,证书也下发了!

如果有对代码审计感兴趣的师傅可以联系我,若是需要找个版本的源码也可以找我一起研究
在这里插入图片描述
文章来源:微信公众号 进击安全

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值