【粉丝福利】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



相关文章
|
5月前
|
安全 小程序 PHP
PHP代码审计(七)Rips源代码审计系统使用教程
上一篇中提到的Seay源代码审计系统是由C#编写的winform程序,现在已经停止更新了,但是,还是比较好用的。 PHP代码审计还有另一个工具,也是一个神器Rips
179 0
|
5月前
|
安全 小程序 PHP
PHP代码审计(五)PHP代码审计方法与步骤
(1):获取到网站源码(这就是废话……) (2):将网站部署到你自己的环境中,能运行。 这里特殊说明一下我的习惯,我本地的环境与线上的环境基本上保持一致,这样在本地审计及线上部署的时候能发现更多的问题。不建议说是随便搭个环境能跑起来就行,这样不是很严谨。 (3):拿到源码之后,浏览大概的项目结构。
69 0
|
5月前
|
Shell PHP Windows
PHP代码审计(四)PHP文件操作函数(2)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
41 0
|
5月前
|
安全 小程序 PHP
PHP代码审计(六)Seay源代码审计系统使用教程
www.cnseay.com/ 当然,这个已经不能访问了。 软件的版本比较早,需要.NET framework3.5框架,我这里是软件启动的时候自动提醒安装,如果没有自动提醒,那么你需要手动安装.NET frameWork3.5框架,否则,程序应该是没有办法运行。
412 0
|
2天前
|
PHP
【攻防世界】easyphp(PHP代码审计)
【攻防世界】easyphp(PHP代码审计)
|
5月前
|
NoSQL 关系型数据库 MySQL
使用redis实现关注粉丝功能(php版) 2020-07-12染念 染
redis不用说啥了,比mysql有的是可以吹的地方,于是很多人选择用redis来实现这类操作频繁的场景 @(汗) 但是下午第一次安装redis花了好多时间... 这里借用[button href="https://www.jianshu.com/p/e3f0b98a78bc"]Redis实现用户关注功能[/button]的思路
28 0
|
5月前
|
XML 开发框架 .NET
代码审计之PHP基础铺垫
代码审计之PHP基础铺垫
61 0
|
5月前
|
小程序 Shell PHP
PHP代码审计(四)PHP文件操作函数(3)
改变文件所有者。如果成功则返回 TRUE,如果失败则返回 FALSE。 语法:chown(file,owner)
23 0
|
8月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql
PHP 原生操作 Mysql
82 0
|
8月前
|
关系型数据库 MySQL 数据库连接
PHP 原生连接 Mysql
PHP 原生连接 Mysql
111 0