跟着Y4师傅学代码审计-SeaCMS
文章发布时间:
最后更新时间:
最后更新时间:
写在前面
这篇是代码审计练习的第六篇,最近压力稍减,逐渐转移到项目和挖洞上了。项目方向逐渐清晰了,只不过自己心态上还是有些急,你先别急。
环境搭建
这个后台地址看起来像是随机的
漏洞分析
漏洞点位于后台系统中的图片水印设置
定位路由至/p7pxx0/admin_config_mark.php?dopost=save
我们先正常走一遍流程。其中可以发现存在两个WAF。第一个是在包含文件内,首先会包含一个config.php
紧接着包含common.php
,跟进
其中会调用addslashes()
检查参数中特殊字符并转义
这里留个心眼,往后看。回到主文件,检查提交的各个参数,如果其中有引号的话会进行去空操作,也就是说如果参数中包含引号,会先被转义再被去空,剩下个反斜杠将会作用到下一个字符,这势必会有隐患。
接着往下看,这里就是将提交的参数写入到ImageWaterConfigFile
变量对应的文件中
查看文件可以看到键值排列,值全部引号包含,键值对之间以\r\n
分隔
最后再把这个文件包含进来
那么我们利用的话可以通过加一个引号来导致转义掉原本用于闭合值的引号,以$photo_waterext
一行为例
1 |
|
这样下面的语句将会变成引号内的句子,我们可以通过;phpinfo();
来闭合前面的语句并加入恶意代码
1 |
|
后面再配合一个分号即可
最后保存的结果如下
语句没报错,可被成功利用
后面就不继续看了,最新版本基本上WAF覆盖的很全了,会有防御过渡的情况,如上所示