【粉丝福利】PHP代码审计之wuzhicms(一)

简介: 【粉丝福利】PHP代码审计之wuzhicms

环境搭建

fe3b75300df67dea56b6c7841d064aa6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

漏洞审计

路由分析:

在index.php文件中包含 coreframe 框架下core.php文件并调用load_class加载

然后在application.class.php 文件、core.php 框架核心文件

调用了load_class加载类。然后通过load_class()类实例化wuzhi_application类

7509848871a9c7267f5ef547434adcc7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

通过 load_class() 类实例化 WUZHI_application 类。

646c3f49e5c07c5969e623e0bfa6bd38_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

实例化 WUZHI_application 类调用下面构造方法

4131225f94f749601cdb12d84b7cec0b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

调用 WUZHI_application 类下 run() 方法获取路由信息

5414e15ec92e72aa287eebc420df45df_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

抓包查看他的路由访问规律

7229e7c7e5e598071d0d569a4a69ceaf_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

1.sql注入

2e57768ede2cf86909bb09af8f225477_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

漏洞路径/coreframe/app/member/admin/group.php

下的 del() 函数

977c5050130f3e076a8362c999917feb_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

在代码133行判断是否传入groupid参数且参数是否为空,条件满足在134行代码中判断传入的groupid是否为数组。

ceca0088f7f367c243c9daa54d6b2f11_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

跟进delete()函数,在db.class.php中找到对应函数。

37db4bcb413216f800afa32ffc3948c0_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

fde4f477eecf901a700ba6be753669ea_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

而下面223行的delete()函数才是真正去操作数据库的函数,我们跟进这个delete()

d5a3089bf5ff49387e461bd5f22a8368_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

在这个过程中我们传入的sql语句并没有进行任何过滤就直接拼接到$sql并通过query()执行,所以这里存在SQL注入漏洞。

e297bb8bf74415e921bcba77251de6fe_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

在query()函数中如果出现SQL语句错误会直接爆出SQL语句,所以这里存在报错注入。

084901dd5eab50bdbc0b0059050ec2e8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

漏洞复现:

1c6668862b16b0718fd614fa6a812426_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

f39dc8f682a742d1e4bda37494c85f97_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

2.任意文件写入

使用工具或者全局搜索file_put_contents函数

379ee675a24fef9824b39633db117671_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

通过Seay的审计结果,翻找到一处可能存在任意文件写入的地方。

7d4e1f855d4b97bd9cf46bdb388f3feb_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

通过翻找发现一处可以直接控制 $data 的文件:

oreframe/app/attachment/admin/index.php

这里的 ueditor() 函数调用了 set_cache() 并且这里的 $GLOBALS['setting'] 参数可控。

cb7e09487bd3f8f895122aa923eb5ee4_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

假如不设置submit,则会通过 get_cache() 读取缓存文件内容。

ba4d82210b102f2a14b14b2880a48adb_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

漏洞复现:

通过前面路由分析以及上面SQL注入的路由,我们可以构造出调用ueditor()的路由:

/index.php?

m=attachment&f=index&v=ueditor&_su=wuzhicms&submit=XXX&setting=payload

3848259399c37369be43ae4b8c20c078_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

文件已被成功写入到缓存文件中

41de0c1a64793e0d72f597dbc718b9d6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

读取缓存中文件内容

396b3a28bbd65e6585901d9e71046665_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png



相关文章
|
11月前
|
安全 小程序 PHP
PHP代码审计(七)Rips源代码审计系统使用教程
上一篇中提到的Seay源代码审计系统是由C#编写的winform程序,现在已经停止更新了,但是,还是比较好用的。 PHP代码审计还有另一个工具,也是一个神器Rips
303 0
|
3月前
|
JSON PHP Apache
[GFCTF 2021]Baby_Web(CVE-2021-41773) 从一道题入门PHP代码审计 (保姆级)
[GFCTF 2021]Baby_Web(CVE-2021-41773) 从一道题入门PHP代码审计 (保姆级)
34 1
|
3月前
|
SQL 安全 API
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
PHP代码审计示例(一)——淡然点图标系统SQL注入漏洞审计
91 4
|
3月前
|
前端开发 网络安全 PHP
PHP代码审计之MVC与ThinkPHP简介
PHP代码审计之MVC与ThinkPHP简介
39 2
|
3月前
|
监控 安全 网络安全
PHP代码审计之简单思路方法
PHP代码审计之简单思路方法
142 1
|
5月前
|
SQL 监控 安全
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
代码审计-PHP原生开发篇&SQL注入&数据库监控&正则搜索&文件定位&静态分析
|
6月前
|
PHP
【攻防世界】easyphp(PHP代码审计)
【攻防世界】easyphp(PHP代码审计)
|
11月前
|
NoSQL 关系型数据库 MySQL
使用redis实现关注粉丝功能(php版) 2020-07-12染念 染
redis不用说啥了,比mysql有的是可以吹的地方,于是很多人选择用redis来实现这类操作频繁的场景 @(汗) 但是下午第一次安装redis花了好多时间... 这里借用[button href="https://www.jianshu.com/p/e3f0b98a78bc"]Redis实现用户关注功能[/button]的思路
55 0
|
11月前
|
XML 开发框架 .NET
代码审计之PHP基础铺垫
代码审计之PHP基础铺垫
88 0
|
11月前
|
安全 小程序 PHP
PHP代码审计(五)PHP代码审计方法与步骤
(1):获取到网站源码(这就是废话……) (2):将网站部署到你自己的环境中,能运行。 这里特殊说明一下我的习惯,我本地的环境与线上的环境基本上保持一致,这样在本地审计及线上部署的时候能发现更多的问题。不建议说是随便搭个环境能跑起来就行,这样不是很严谨。 (3):拿到源码之后,浏览大概的项目结构。
123 0