当前位置:网站首页>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:


漏洞复现
后台访问

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





边栏推荐
猜你喜欢

Solution of commercial supply chain coordination system in the mineral industry: build a digital intelligent supply chain platform to ensure the safe supply of mineral resources

上网成瘾改变大脑结构:语言功能受影响,让人话都说不利索

祝贺Artefact首席数据科学家张鹏飞先生荣获 Campaign Asia Tech MVP 2022

太方便了,钉钉上就可完成代码发布审批啦!

Go development: how to use go singleton mode to ensure the security of high concurrency of streaming media?

Solution of dealer collaboration system in building materials industry: empowering enterprises to build core competitiveness

GO开发:如何利用Go单例模式保障流媒体高并发的安全性?

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

照明行业S2B2B解决方案:高效赋能产业供应链,提升企业经济效益

PingCode 性能测试之负载测试实践
随机推荐
leetcode:421. The maximum XOR value of two numbers in the array
[Acwing] 58周赛 4489. 最长子序列
detectron2安装方法
Start by counting
基于wifi控制的51单片机温度报警器
安信证券属于什么档次 开户安全吗
Go language loop statement (under Lesson 10)
新的职业已经出现,怎么能够停滞不前 ,人社部公布建筑新职业
MD5加密的两种方式
Web game engine
What grade does Anxin securities belong to? Is it safe to open an account
【模板】【luogu P4630】Duathlon 铁人两项(圆方树)
R language plot visualization: plot visualizes overlapping histograms and uses geom at the top edge of the histogram_ The rug function adds marginal rug plots
How to choose one plus 10 pro and iPhone 13?
居家打工年入800多万,一共五份全职工作,他还有时间打游戏
Smart Logistics Park supply chain management system solution: digital intelligent supply chain enables a new supply chain model for the logistics transportation industry
Blood spitting finishing nanny level series tutorial - play Fiddler bag grabbing tutorial (2) - first meet fiddler, let you have a rational understanding
Spark 中的 Rebalance 操作以及与Repartition操作的区别
VMware Tools和open-vm-tools的安装与使用:解决虚拟机不全屏和无法传输文件的问题
Vb无法访问数据库stocks