侵权声明
本文章中的所有内容(包括但不限于文字、图像和其他媒体)仅供教育和参考目的。如果在本文章中使用了任何受版权保护的材料,我们满怀敬意地承认该内容的版权归原作者所有。
简介
版本
5.7
漏洞位置
文件上传
file_manage_control.php
xss
article_add.php
分析
文件上传
找到文件中的文件上传位置。
红框前都是对参数的初始化,找到文件临时存放位置,将临时文件保存到本地。之后删除临时文件。
红框内$file_base = strtolower(pathinfo($file, PATHINFO_BASENAME));
获取文件名$file_ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
获取文件后缀if (is_file($file) && $file_ext == "php")
判断是否为文件和后缀是否为php
如果此时一个条件不满足就好跳出后面的内容判断。如果我们上传一个php3
为后缀的文件就可以成功(还是有其他访问绕过或使php文件可以执行的办法)。然后通过下面函数改名即可利用。
跟进RenameFile
函数发现,没有进行过滤新文件名,只判断新旧文件名是否相等和文件是否可写。
XSS
通过poc找到文件位置
跟进makart()
函数,该函数是准备创建静态html文件,
继续跟进makehtml()
函数
该函数前半部分有面两个重要的函数。$this->LoadTemplet();
获取文章的模板$this->ParAddTable();
处理文章需要保函的额外功能。例如投票。更进paraddtable()函数
但是此时投票功能还没有实装到文章模板中。继续看到makehtml()
函数后半部分
直接看到最后红框中的两个函数。$this->ParseDMFields($i,1);
判断哪些模块是需要加载到文章模板中的,并对其进行标记和计算出需要加载模块的数量。方便后续将需要的模块加载到文章中。$this->dtp->SaveTo($TRUEfilename);
将模块加载到文章中。跟进saveto()函数
可以看到文件写入的功能函数了,继续跟进getresult()函数
我可以肯定的是在26号模板中就存在投票功能的模块并且写入了resultString
参数,你可以自己去看看。
复现
文件上传
1、找到文件上传位置
)
2、上传一个带有一句话或其他的文件,但是文件需要时php3或是其他为后缀的
3、修改文件名为1.php
4、访问利用
xss
1、找到文章发布位置,准备新添文章
2、添加文件名和主栏目后,新增一个投票
3、在投票名称位置加上一个测试js代码,然后保存文件。<script>alert(1);</script>
4、访问文件
总结
还得练,只找到了一小部分。该系统还有很多其他漏洞。
原文始发于微信公众号(菜鸟小新):dedecms 两个常见漏洞的复现
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论