当前位置:网站首页>wuzhicms代码审计
wuzhicms代码审计
2022-07-04 15:39:00 【zkzq】
零基础学黑客,搜索公众号:白帽子左一
作者:掌控安全—柚子
环境搭建
源码下载官网:https://www.wuzhicms.com/
放到本地phpstudy根目录下,访问install路径进行安装。



访问后台:

访问前台:

敏感信息泄露
直接后台挂个链接:


代码分析


前台sql注入
漏洞分析
搜索select的时候 发现在mysql.class文件下有一个函数里面有select 并且后面的拼接也没有任何的过滤

搜索哪里调用了这个函数,先是在api目录下的sms_check文件中发现调用了get_one函数 并且参数是通过前面的$code拼接。

我们可以看到code 先是通过$GLOBALS来获取参数param的值 从前面的介绍可以知道 $GLOBALS是可以获取post get的值 这个文件前面没有定义param变量 那么 这个param应该就是post 或者get 就是我们可控的 这也是导致注入的点
code还通过strip_tags 函数 而这个函数的作用是剥去html标签,过滤xss。
之后就直接传入了函数 继续更进函数 因为这个文件前面还引入了db类。


可以看到这个get-one函数里面 还调用了一个array2sql函数来处理$where
那先来看看这个函数的作用。

可以看到这个函数是用来过滤的。如果是数组 这进入if 把括号 单引号这些过滤掉。
不是则走else 过滤 %20 %27。然后返回参数,但也就是这个过滤的地方 没有防护到位。我们传的参数不是数组 所以就没有走if,而else里面过滤的却是 %20 %27。
我们传参的时候尽管是经过url编码的 但是web服务器会自动解码一次 所以 我们传到后端代码处的时候是没有进行url编码。
但是二次编码的就不一样了 因为web服务器只解码一次,如果是二次编码这里的else过滤就起效果,return 调用的get_one 则是最开始看见的mysql.class文件里面了。
下面就可以开始直接构造payload了 这里通过代码分析可以看到是单引号闭合。

漏洞复现
payload:
sms_check.php?param=1%27+or%20extractvalue(1,concat(0x7e,(select%20database)))%23](http://192.168.1.7/wuzhicms/api/sms_check.php?param=1'+or extractvalue(1,concat(0x7e,(select database)))%23)

后台sql注入一
漏洞分析
在www\api\sms_check.php中:

传参param给$code,然后直接拼接到sql语句中,导致sqli:
漏洞复现
后台sql注入二
在eframe\app\promote\admin\index.php中:

获取$keywords直接拼接到sql语句中,导致sqli:

后台任意文件读取、删除
coreframe\app\attachment\admin\index.php中存在dir方法:

分析逻辑发现,将…/,./,.\,…\替换成空再添加/结尾,这里可以通过多写绕过:

同时发现读取到的文件是可以删除的,每个后面都有删除的链接。
找到del方法:

通过url获取路径后,检测了ATTACHMENT_URL参数,替换为空,
define(‘ATTACHMENT_URL’,‘http://www.wuzhicmstest.com/uploadfile/’);//附件路径
然后没有其他过滤,传入my_unlink:

达到删除的目的。
逻辑漏洞
在\api\uc.php中:
通过传参可以调用uc_note类的任意方法:

可以更改用户名和密码等。
后台RCE
漏洞分析
在coreframe\app\core\libs\function\common.func.php中set_cache方法:

写入内容没有过滤,再搜索哪里调用了set_cache:
member模型中存在调用。

发现直接获取setting写入缓存。
利用,写入phpinfo:


漏洞复现
后台访问

拓展
全局搜索发现,同样的利用还有很多:





边栏推荐
- 电子元器件B2B商城系统开发:赋能企业构建进销存标准化流程实例
- 开发者,MySQL专栏完更,助你轻松从安装到入门进阶
- 安信证券手机版下载 网上开户安全吗
- Rebalance operation in spark and its difference from repartition operation
- Visual Studio 2019 (LocalDB)MSSQLLocalDB SQL Server 2014 数据库版本为852无法打开,此服务器支持782
- Zebras are recognized as dogs, and the reason for AI's mistakes is found by Stanford
- Yanwen logistics plans to be listed on Shenzhen Stock Exchange: it is mainly engaged in international express business, and its gross profit margin is far lower than the industry level
- Using win10 scheduling task program to automatically run jar package at fixed time
- 动态规划股票问题对比
- The test experience "tortured" by the PMP test is worth your review
猜你喜欢

一加10 Pro和iPhone 13怎么选?

World Environment Day | Chow Tai Fook serves wholeheartedly to promote carbon reduction and environmental protection

kaili不能输入中文怎么办???

【测试开发】软件测试——基础篇
Difference between redis' memory obsolescence strategy and expiration deletion strategy

第十八届IET交直流輸電國際會議(ACDC2022)於線上成功舉辦

Internet addiction changes brain structure: language function is affected, making people unable to speak neatly

Analysis of abnormal frequency of minor GC in container environment

7 RSA密码体制

Smart Logistics Park supply chain management system solution: digital intelligent supply chain enables a new supply chain model for the logistics transportation industry
随机推荐
[Acwing] 58周赛 4489. 最长子序列
开发者,MySQL专栏完更,助你轻松从安装到入门进阶
How can programmers improve the speed of code writing?
The 18th IET AC / DC transmission International Conference (acdc2022) was successfully held online
NoSQL之readis配置与优化(终章)
Understand ThreadLocal in one picture
51 single chip microcomputer temperature alarm based on WiFi control
电子元器件B2B商城系统开发:赋能企业构建进销存标准化流程实例
太方便了,钉钉上就可完成代码发布审批啦!
动态规划股票问题对比
[glide] cache implementation - memory and disk cache
tx.origin安全问题总结
Summary of tx.origin security issues
整理混乱的头文件,我用include what you use
Datakit -- the real unified observability agent
一文掌握数仓中auto analyze的使用
Start by counting
How to choose one plus 10 pro and iPhone 13?
缓存穿透、缓存击穿、缓存雪崩分别是什么
PingCode 性能测试之负载测试实践