Xhcms全漏洞代码审计及记录

小皮面板安装步骤:
不推荐使用小皮面板,因为后续漏洞需要使用 PHP 5.2.17,而小皮面板无法安装该版本。

  1. 下载 Xhcms,并解压到 PHPStudy 的 web 路径下。 下载链接:https://www.lanzoux.com/izeFjfxbxah
  2. 在小皮面板中创建网站并添加数据库。
  3. 访问 www.xhcms.com/install 进行安装。
图片[1]-Xhcms全漏洞代码审计及记录-山海云端论坛

PHPStudy 2018 安装步骤:
下载 Xhcms,解压到 PHPStudy 的 web 路径下。访问站点的 install 目录,例如:http://127.0.0.1/www.xhcms.com/install/

0x02 代码审计

使用 Seay 代码审计系统: 新建项目,选择 Xhcms 源码,选择自动审计,点击开始。

图片[2]-Xhcms全漏洞代码审计及记录-山海云端论坛
图片[3]-Xhcms全漏洞代码审计及记录-山海云端论坛

2.1 文件包含

/index.php 和 /admin/index.php

代码分析:

  • 单一入口模式,所有页面都通过 index.php 访问。
  • 错误报告关闭。
  • 通过 $_GET[‘r’] 接收文件名,将其包含到 files 目录下。

问题:

  • 可以使用 ../ 实现路径穿越,但后缀是固定的 .php。
  • 读取其他文件需要满足条件:PHP 版本 = 5.2.17、Virtual Directory Support = enable。

示例: 在网站的 WWW 下放一个文件 111.txt,内容为 <?php phpinfo();?>

00截断利用条件:

  1. magic_quotes_gpc = off
  2. PHP 版本小于 5.3.4

Payload:

  1. ?r=../111.txt... (此处由于 addslashes() 函数导致不可用)
  2. ?r=../111.txt/./././././././...

2.2 SQL 注入

/files/content.php

代码分析:

  • 通过 $_GET[‘cid’] 接收参数。
  • 使用 addslashes() 进行转义。
  • 将参数拼接到查询语句中,执行后抛出错误。

问题:

  • 存在注入漏洞,可以通过报错注入。

Payload:

  • http://127.0.0.1/www.xhcms.com/?r=content&cid=15

/admin/files/adset.php

代码分析:

  • 未对参数进行过滤直接拼接到 SQL 中。

Payload:

  • http://127.0.0.1/www.xhcms.com/admin/?r=editcolumn&type=1&id=1' and (extractvalue(1,concat(0x7e,(select USER()),0x7e))) and'

2.3 任意用户登录

登录页面 SQL 注入: 未进行参数过滤,存在注入漏洞。

任意用户登录: 接收 POST 参数,未过滤用户输入,存在风险。

/inc/checklogin.php: 检查 COOKIE 中的 user 值,未进行验证。

3.1 XSS

后台存储型 XSS: 在 /admin/files/adset.php 存在漏洞,未过滤输入,可能触发 XSS。

反射型 XSS: 在 /files/contact.php 的 page 参数中未进行过滤,可能触发 XSS。

4.1 CSRF

未对删除等危险操作进行 token 验证,可能存在 CSRF 漏洞。

5.1 文件上传

未发现文件上传漏洞,仅误报。

结论

Xhcms 存在严重的安全漏洞,包括文件包含、SQL 注入、XSS、CSRF 等,建议及时修复以确保系统安全性。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容