XYHCMS3.6漏洞复现
源码下载地址
链接:https://pan.baidu.com/s/17UhpKd-fIo9XAg3T4tYBPw
提取码:78b3
漏洞成因:
代码中使用黑名单过滤<?php却忘记过滤短标签,导致后台系统设置-网站设置出可使用短标签在站点表述处getshell
代码审计:
App/Manager/Controller/SystemController.class.php
这里可以直接写入php文件 ,而且黑名单禁止<?php写入,但是php还有很多标签替换如:<?= ?>
漏洞复现:
输入注入语句 <?=phpinfo();?>
访问 /App/Runtime/Data/config/site.php文件,看到回显
漏洞修复:
简单粗暴的过滤:
if (stripos($data[$key], '<?php') !== false || ($short_open_tag && stripos($data[$key], '<?') !== false) || preg_match($preg_param, $data[$key])) {
$this->error('禁止输入php代码');
}
即当开启短标签时过滤<?,使得我们的php写入失效。