一分钟速通CVE-2019-13956漏洞复现Discuz!ML远程代码执行
一分钟速通CVE-2019-13956漏洞复现Discuz!ML远程代码执行
0x01 漏洞介绍
1 | 描述: |
漏洞出现在传入cookie的language值时,逻辑是直接将传入的语言拼接成一个缓存文件,然后利用文件包含解析
由于并没有做过滤,我们拥有可控的文件名
0x02 poc
抓包,在cookie中原有语言后,加入
1 | '.phpinfo().' |

查看flag即可

0x03 漏洞溯源:
下载源码
1 | https://bitbucket.org/vot/discuz.ml/downloads/ |
1.upload\source\module\portal\portal_index.php中搜索template找到漏洞点:存在文件包含

为了知道template到底做了什么,使用正则表达式全局搜索(vscode中快捷键为CTRL+shift+f)
1 | function\s+template\s*\( |
2.发现template函数存在以下代码
1 |
|
详细见图

也就是说:把DISCUZ-LANG拼接成了一个cache缓存文件(tpl.php)然后返回了这个文件,继续研究我们拿到的“DISCUZ-LANG”是什么
3.进行全局搜索,在\upload\source\class\discuz\discuz_application.php中,我们发现变量lng的值付给了它
1 | // define DISCUZ_LANG |
4.搜索lng看到此值来源于传入的cookie
1 | // set language from cookies |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 24kmagic!
评论

