对某cms的一次审计思路
漏洞的审计
源头是在这个方法里面发现有个函数,这个函数是能够触发反序列化漏洞的,而这个 cms 是基于 thinkphp5.1 框架二次开发的,这个框架有个反序列化漏洞相信大家都很熟悉了,所以我们的目的就是能控制这个变量就行了
可以看到是由控制的,我们跟踪进去
可以看到这里会限制只能由或者开头的参数才能获取站外的图片信息
再看看全局搜索这个方法看看哪里会调用他
我们在发现有个函数,我们跟踪进去
发现这里会调用到我们上面的函数
这里的参数也就是我们传给函数的变量,所以这里我们看看如何去控制他,可以看到方法里面有一个,就是会根据点去分隔我们的参数,然后又要,我们可以回想到限制了的开头,我们想要反序列化的话,必须是的开头,那么我们直接在上放置我们的文件的路径不就可以了
但是这里有一个问题,我们正常输入一个IP地址的话肯定是不行的,因为他的,所以我们可以使用十六进制绕过的方法,所以也就限制了这种方法只能在下面使用,这里顺便贴一下之前写的一个转进制的脚本
我们在处贴上自己的的地址,这里要注意生成的十六进制前面要加上
然后函数的
就是我们想要控制的参数,因为前面把我们的地址分成了3份,这里把第一份和第三份拼接了起来,于是我们可以构造类似于的形式,这里样我们的也就成为了也就是我们可控的东西了,同时这里也明白了为什么要将转成16进制的原因了
我们同时在上放置的路径,这个后台是可以上传文件的,当然反序列化的话即使是后缀的文件也是能够成功反序列的,这里我为了方便直接放在根目录下
到了这一步我们的思路基本就清晰了,我们测试一下是否能够正确的打印出来,可以手动添加一个
我们访问一下的路由
可以看到我们的变成了,函数里面也成功接收到我们放在里面的内容
我们再传参我们的命令即可看到漏洞已经成功利用
本文涉及相关实验:任意文件上传漏洞的代码审计01(通过本节的学习,了解文件上传漏洞的原理,通过代码审计掌握文件上传漏洞产生的原因、上传绕过的方法以及修复方法。)
总结
漏洞已经上交于cnvd平台,然后这个漏洞由于十六进制绕过的问题,只能在下才可以成功实现,所以可以把放在里面进行测试,然后在一些小的cms里面关于反序列化漏洞还是比较好找的,因为一般来说后台都是能够上传格式的文件,能够触发的函数也蛮多的。