白盒审计DeDeCMS拿到CNVD证书

文摘   2024-03-26 09:02   广东  

免责申明

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



    在之前发布过一个DedeCMS的代码审计的一个任意文件删除漏洞,但是危害不满足证书颁发的条件,当时继而还审计除了另一个漏洞,也就是DeDeCMS的文件写入漏洞,是可以直接拿到网站的webshell权限的,因为现在新的版本已经发布出来了,这个漏洞也被CNVD收录所以现在写一篇篇文章,说下当时的一个审计流程。

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

0x00 影响版本

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

0x01审计过程

在官网下载好源码使用

漏洞涉及文件    

    uploads/dede/article_template_rand.php

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

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

到这里大致的思路就明白了,使用fwrite函数进行了文件写入,写入文件为

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

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

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

进行发包查看是否成功写入


发现了被过滤了,回到代码查看,在文件下方

通过file_get_contents函数载入了写入的文件继续了过滤,并且给了变量content然后进行了一系列判断

第一层判断是判断是if判断,使用了正则表达,要被正则表达匹配到的要求是匹配规则要求函数名之前必须包含非小写字母的字符,并且函数名后面必须是括号字符(圆括号、方括号或大括号)或单引号(来源于AI Chat GPT)

经过这个过滤之后,下一个过滤代码则是

我们再来看下GPT的回答

由于笔者这里对这个正则表达式不是很清楚他这个过滤的机制,总之在最后的测试过程当中发现了基本上百分之八十webshell都可以直接写入

问了好多次GPT也是一知半解的感觉

如果有师傅知道可以一起交流一下

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

0x02 漏洞验证

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

文件写入成功

0x03 小结

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

若是需要找个版本的源码也可以找我一起研究


赤弋安全团队
渗透测试,代码审计,CTF ,红蓝对抗,SRC
 最新文章