XYHCMS(行云海CMS)漏洞分析

admin 2022年10月18日17:50:14评论151 views字数 2251阅读7分30秒阅读模式

一、介绍

行云海CMS(XYHcms)是完全开源的一套CMS内容管理系统,使用简单,轻松建站。

1、企业建站、个人博客、个性网站的首选。系统简洁,高效,易用,一般的开发人员能够使用本系统以最低的成本、最少的人力投入,在最短的时间内架设一个功能齐全、性能优异的网站。

2、基于PHP+Mysql开发的网站内容管理系统,提供了单页模块,文章类模块,产品类模块,图片类模块,下载类模块等。在使用过程中可选择任意模块来建设网站。

3、同时集成电脑版及手机版网站,方便各种终端访问。

4、伪静态一键设置,简单实用。

5、静态缓存设置,缓解服务器压力。

二、环境搭建过程

环境下载搭建

 网站源码版本:XYHCMS V3.6(2017-12-04 更新) 程序源码下载:http://www.xyhcms.com/Show/download/id/2/at/0.html
 http://10.1.70.246/ldfx/xyhcms/Install/index.php

XYHCMS(行云海CMS)漏洞分析

后台地址

http://10.1.70.246/ldfx/xyhcms/xyhai.php?s=/Login/index

XYHCMS(行云海CMS)漏洞分析

后台界面显示如下

XYHCMS(行云海CMS)漏洞分析

三、3.6版本后台getshell

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

PHP默认是开启PHP短标签的,即默认情况下short_open_tag=ON

<?=,它和<? echo 等价, 从 PHP 5.4.0 起, <?= 是可用的。

也可以用php的其他风格绕过过滤

PHP代码风格:

 标准风格:<?php ?> ASP风格 :<% %> 长风格:<script language='php'></script>

XYHCMS(行云海CMS)漏洞分析

利用文件监控工具可以发现这里的网站设置修改成功后是修改的 /App/Runtime/Data/config/site.php文件内容

XYHCMS(行云海CMS)漏洞分析

直接访问

http://10.1.70.246/ldfx/xyhcms/App/Runtime/Data/config/site.php

XYHCMS(行云海CMS)漏洞分析

后台还有其他地方可以插入,比如客服QQ,这里可以直接写入一句话木马

XYHCMS(行云海CMS)漏洞分析

四、3.5版本重定向漏洞

这里没有找到3.5版本的源码,用3.2的代替,因为两者对于重定向的漏洞点是一样的

漏洞文件位置:/App/Home/Controller/GoController.class.php  第30-46行

public function index(){         $url = I('url', 0, '');        if (!empty($url)) {            redirect($url);        }     }     public function link(){         $url = I('url', 0, '');        if (!empty($url)) {            $url = base64_decode($url);            redirect($url);        }     }

这段函数中对提交的url参数进行处理,未经任何验证,只是简单的判断url参数是否为空,然后传到目标函数redirect中执行,导致程序在实现上存在URL重定向漏洞,远程攻击者可通过特制的URL利用该漏洞将用户重定向到任意网站,实施钓鱼攻击

漏洞利用方式一:

   通过这种方式,将把用户引导到百度首页

http://10.1.70.246/ldfx/xyhcms3.5/index.php?s=/Home/go/index/url/http:\www.baidu.com

XYHCMS(行云海CMS)漏洞分析

漏洞利用方式二:

   将http://www.baidu.com进行base64编码,这种攻击方式更隐蔽,用户不易发现,构造链接如下:

http://10.1.70.246/ldfx/xyhcms3.5/index.php?s=/Home/go/link/url/aHR0cDovL3d3dy5iYWlkdS5jb20=

XYHCMS(行云海CMS)漏洞分析

修复建议

       理论上讲,url重定向属于CSRF的一种,我们需要对传入的URL做有效性的认证,保证该URL来自于正确的地方,限制的方式同防止csrf一样可以包括:

1、referer的限制

       如果确定传递URL参数进入的来源,我们可以通过该方式实现安全限制,保证该URL的有效性,避免恶意用户自己生成跳转链接

2 、加入有效性验证Token

        我们保证所有生成的链接都是来自于我们可信域的,通过在生成的链接里加入用户不可控的Token对生成的链接进行校验,可以避免用户生成自己的恶意链接从而被利用,但是如果功能本身要求比较开放,可能导致有一定的限制。

五、后台任意文件读取漏洞

这个漏洞对于3.63.53.2都适用(暂时就实验了这几个版本)

漏洞利用

注意:必须要登录网站后台进行利用

数据库配置文件路径:

 AppCommonConfdb.php

我们将这段组成相对路径

 ..\..\..\App\Common\Conf\db.php

然后进行base64编码

 Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==

最后构造的链接形式如下:

 http://10.1.70.246/ldfx/xyhcms3.5/xyhai.php?s=/Templets/edit/fname/Li5cXC4uXFwuLlxcQXBwXFxDb21tb25cXENvbmZcXGRiLnBocA==

通过url访问,成功获取到数据库敏感信息:

XYHCMS(行云海CMS)漏洞分析

有了数据库的账号和密码我们就能进行更进一步的利用了

原文始发于微信公众号(守卫者安全):XYHCMS(行云海CMS)漏洞分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月18日17:50:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   XYHCMS(行云海CMS)漏洞分析https://cn-sec.com/archives/1356788.html

发表评论

匿名网友 填写信息