码迷,mamicode.com
首页 > 其他好文 > 详细

xyhcms v3.6 getsgell漏洞(复现)

时间:2020-05-23 16:18:30      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:下载   相关   sys   time   文件   后台   ram   ipo   yun   

0x00

审计对象:xyhcms v3.6
下载地址
http://www.xyhcms.com/down

参考文章:

https://xz.aliyun.com/t/7756#toc-0
漏洞成因:
代码中使用黑名单过滤<?php却忘记过滤短标签,导致后台系统设置-网站设置出可使用短标签在站点表述处getshell。

代码分析

通过D盾文件监控我门就看到了
xyhcms/App/Runtime/Data/config/site.php
这个文件有写入内容,在跟进后怀疑有可控点
技术图片

技术图片

那我们就要去找对应的代码了:
这里我习惯先去找到对应功能,然后抓包看看他的路由怎么控制的
技术图片

技术图片

很明显,我们要去找一个System相关的控制器
这里我们找到
App/Manager/Controller/SystemController.class.php
技术图片

这里就是可以直接写入到php文件 ,而且我们可以看到他使用了黑名单禁止<?php写入,
但是我们看到这里让开启了短标签,(PHP默认是开启PHP短标签的,即默认情况下short_open_tag=ON)<?=,它和?<? echo?等价, 从 PHP 5.4.0 起,?<?=?总是可用的。
短标签学习链接:

https://blog.vimge.com/archives/php/php-short-open-tag.html

导致我们可以使用来代替

利用

技术图片

技术图片

修复方法

官方已经在最新版修复:
简单粗暴的过滤:

if (stripos($data[$key], ‘<?php‘) !== false || ($short_open_tag && stripos($data[$key], ‘<?‘) !== false) || preg_match($preg_param, $data[$key])) {

????$this->error(‘禁止输入php代码‘);
????????????????}

即当开启短标签时过滤<?,使得我们的php写入失效。

总结

很明显,官方想起了对php代码写入得限制,但是却忘了短标签,导致黑名单过滤失效。

参考

https://xz.aliyun.com/t/7756#toc-0

xyhcms v3.6 getsgell漏洞(复现)

标签:下载   相关   sys   time   文件   后台   ram   ipo   yun   

原文地址:https://www.cnblogs.com/wangtanzhi/p/12942854.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!