跟着Y4师傅学代码审计-SeaCMS

文章发布时间:

最后更新时间:

写在前面

这篇是代码审计练习的第六篇,最近压力稍减,逐渐转移到项目和挖洞上了。项目方向逐渐清晰了,只不过自己心态上还是有些急,你先别急。

环境搭建

这个后台地址看起来像是随机的

image-20221213175438493

漏洞分析

漏洞点位于后台系统中的图片水印设置

image-20221213181353693

定位路由至/p7pxx0/admin_config_mark.php?dopost=save我们先正常走一遍流程。其中可以发现存在两个WAF。第一个是在包含文件内,首先会包含一个config.php

image-20221213183528481

紧接着包含common.php,跟进

image-20221213183629517

其中会调用addslashes()检查参数中特殊字符并转义

image-20221213183804314

image-20221213184025776

这里留个心眼,往后看。回到主文件,检查提交的各个参数,如果其中有引号的话会进行去空操作,也就是说如果参数中包含引号,会先被转义再被去空,剩下个反斜杠将会作用到下一个字符,这势必会有隐患。

image-20221213182927478

接着往下看,这里就是将提交的参数写入到ImageWaterConfigFile变量对应的文件中

image-20221213183228583

查看文件可以看到键值排列,值全部引号包含,键值对之间以\r\n分隔

image-20221213183347187

最后再把这个文件包含进来

image-20221213194916533

那么我们利用的话可以通过加一个引号来导致转义掉原本用于闭合值的引号,以$photo_waterext一行为例

1
$photo_waterext = '\';

这样下面的语句将会变成引号内的句子,我们可以通过;phpinfo();来闭合前面的语句并加入恶意代码

1
2
$photo_fontsize = '\';
$photo_fontcolor = ';phpinfo();';

后面再配合一个分号即可

image-20221213200917134

最后保存的结果如下

image-20221213200937747

语句没报错,可被成功利用

后面就不继续看了,最新版本基本上WAF覆盖的很全了,会有防御过渡的情况,如上所示