文件解密
从网上下载该CMS,发现它的代码是加密的。通过指纹信息在搜索引擎中找到是威盾加密,先来分析一下如何解密。
以admin.php为例,经过混淆后的密文如下图。
首先将变量还原并替换,剩下一堆形如Base64编码的字符串。
开始解密,在这里跳过的字符串是针对原文件中最后的那一串密文来说的。根据提示先截取380字节,然后拼接去Base64解码。
按照同样的方法再次进行解密,这次读取的内容为380字节后的736字节。
由此可知,其实就是两次截取加密字符串进行拼接后,简单的base64解码即可。
漏洞分析
知道了解密方法,再来看看这个漏洞的入口。
在index-uplog.php中,我们重点关注
(in_array($extension,array('ipa','apk','mobileconfig',pack('H*',706870))))
这句代码中的 pack('H*',706870) 是什么。
echo一下,果然是php。
这也就意味着这个上传点的白名单包含了.php文件格式,可以上传恶意PHP文件。
PoC编写
刚好最近一直在用PocSuite作为自己的PoC箱子,想着可以给它写个脚本方便以后自动化测试。
先填好基本信息。
核心的检测逻辑很简单,直接贴代码。
最后设置一下参数。
运行测试,so easy。