ZZCMS v8.2 前台Insert注入+任意文件删除
前几天看了水泡泡老哥的zzcms的审计,在论坛上一搜发现这个cms有不少洞。听说很适合小白练手,所以来瞅一瞅。不知道我发现的这个洞是不是已经被爆过了,如果雷同,纯属巧合。
一.Insert注入,直接返回数据
先从默认页index.php入手:

跟进inc/conn.php看一下:

发现include了好多文件,可以看一下每一行的注释,大多数都是定义一些常量。只有inc/function.php和inc/stopsqlin.php不是。先进入function.php看一下,大都是一些公用函数的定义。看看stopsqlin.php:

第一个if用处注释中有了,这里就不说了。直接看黄标,这里用zc_check()处理了$_GET,$_POST和$_COOKIE。这个函数在上面定义了,基本就是在引号前面加个\转义。但是很容易发现,这里并没有过滤$_REQUEST。所以如果某段程序中用$_REQUEST直接获取客户端传来的参数的话,就有可能产生漏洞,可以直接全局搜索一下$_REQUEST。可是我当时没想到,中间又走了些弯路就不说了。直接来到user/adv.php:

可以看到,在37行之后,用REQUEST赋值了很多变量,而这些变量都是原生态的~
从文件头开始看:

inc/conn.php我们一开始就看过了,主要就是对$_GET,$_POST和$_COOKIE做了过滤。跟进下面这个check.php看看:

注意第4行的if条件,如果两个cookie都没set的话,就说明没有登录,进入第一个语句块。重点来了,这里直接用了个js的前端跳转,并没有exit()程序,所以说后面的代码还是会执行的。看一下第二个语句块,这里先query一下数据库,判断是否有返回信息,如果没有的话再来一个js跳转(13行),否则巴拉巴拉巴拉。所以总结下来,这个文件就是用来判断你有没有登录,不过这两个前端跳转形同虚设,后面的代码还是会执行的。回到上个文件adv.php,从那个REQUEST赋值往下看,看到97行有个if:

$action是可控的,进去之后就是个insert语句,语句直接拼接了我们上面通过$_REQUEST获得的变量,所以一个Insert注入就这么形成了。仔细看一下这个insert语句,前面的adv, company, advlink, img都是可控的,后面还有个$_COOKIE"UserName"也是可控的,只有最后两个参数不可控。
下面用BurpSuite演示一下,五个可控的点已经标出来了:
点击下载
瞅一眼数据库(最后一行,别看岔了):

插入成功!既然已经插入了,下面就要找一下在哪里能把这个结果给输出出来。继续往下看,发现输出就在下面:

110行有个select,根据username字段检索表,然后输出在那几个红线位置。这里回想一下,在上一个insert中,username是可控的,由$_COOKIE['UserName']控制,而这里的username也是如此。但是由于insert在select的前面,所以在我们第一次请求中,结果中就已经包含了我们注入的信息。回到BurpSuite看一看,果然:

返回很多,不只这一个,既然先看到他,就拿他爆数据吧。回到insert语句,由于这几个变量都是被包在单引号内的,而且引号并没有被转义,所以直接常规操作。

注意一下红线部分,由于adv直接闭合了括号,所以这里的username不再是从cookie中获取的了,而是这个5678(必须是唯一的,否则后面会select出多行记录)。因此Cookie的值也是5678,这个是用于select取数据。这里有个小坑,adv这个字段好像是不能重复的,所以测试的时候注意一下。
请求之后看一下数据库(最后一行):

这里可以看到,advlink已经被注入了user()了。看一下页面:

总结一下:
1.代码仅过滤了$_GET, $_POST, $_COOKIE, 而没有过滤$_REQUEST。
2.检查登录时,如果不符合要求并没有用exit()退出程序。
二.任意文件删除
还是上面那个文件:adv.php,还是上面那个图,我直接给复制过来了。看看第二个if,$oldimg是REQUEST得到的变量,所以这里有个任意文件删除。


根目录新建了个文件:DeleteMeBro.php。由于代码中已经将$oldimg与../拼接了(101行),所以参数直接写文件名就好:

回文件夹看看,删除成功。
ps: 我发现这个洞和水泡泡之前发的那个任意文件删除一模一样。。。
ZZCMS v8.2 前台Insert注入+任意文件删除的更多相关文章
- ThinkSNS2.5前台getshell+后台任意文件删除
12年爆出的一个洞 前几天比赛的一个cms 于是跟出题人表哥要过来审计了看看 漏洞文件再根目录thumb.php中 <?php /* * 自动缩略图 参数 url|w|h|type=" ...
- [代码审计]云优cms V 1.1.2前台多处sql注入,任意文件删除修复绕过至getshell
0X00 总体简介 云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义字段,自定义表单,自定义栏目权限,自定义管理权限等众多功能深受用户青睐,上线短短3个月,下载次 ...
- PHP:网展cms后台任意文件删除和sql注入
0x01:目录结构 可以发现Frameword是框架的文件 install安装 public公共文件 uploads储存上传之类的文件 webuser后台文件 Home前台文件 0x02.csrf漏洞 ...
- Discuz!X 3.4 前台任意文件删除漏洞复现
Discuz!X 3.4 前台任意文件删除漏洞复现 参考链接: http://www.freebuf.com/vuls/149904.html http://www.freebuf.com/artic ...
- Youke365_2_4 一处Sql注入漏洞以及一处任意文件删除
本文作者:X_Al3r Prat 0 自白 每一天都是新的一天.没啥吐槽的,步入正题 /system/category.php 文件一处Sql注入## 80-87行代码 $root_i ...
- [代码审计]phpshe开源商城后台两处任意文件删除至getshell
0x00 背景 这套系统审了很久了,审计的版本是1.6,前台审不出个所以然来.前台的限制做的很死. 入库的数据都是经过mysql_real_escape_string,htmlspecialchars ...
- 【代码审计】大米CMS_V5.5.3 任意文件删除及代码执行漏洞分析
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
- 【代码审计】YzmCMS_PHP_v3.6 任意文件删除漏洞分析
0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...
- 【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞
0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...
随机推荐
- 运行yum时出现/var/run/yum.pid已被锁定,PID为xxxx的另一个程序正在运行的问题解决
出现问题 [root@localhost ~]#yum update 已加载插件: fastestmirror,security /var/run/yum.pid已被锁定,PID为1610的另一个程序 ...
- python类型转换convert实例分析
在python的开发过程中,难免会遇到类型转换,这里给出常见的类型转换demo: 类型 说明 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 ...
- [Python] uniform() 函数
描述uniform() 方法将随机生成下一个实数,它在[x, y) 范围内. 语法以下是 uniform() 方法的语法: import random random.uniform(x, y) 注意: ...
- Java程序员必备的Intellij插件
以下是我用过不错的Intellij插件 1. .ignore 地址:https://plugins.jetbrains.com/plugin/7495--ignore 生成各种ignore文件,一键创 ...
- ANSI 和 UNICODE 的函数对应表
ANSI UNICODE 通用(char.h) (wchar.h) (tchar.h) char wchar_t ...
- 深入css布局篇(2) — 定位与浮动
深入css布局(2) - 定位与浮动 在css知识体系中,除了css选择器,样式属性等基础知识外,css布局相关的知识才是css比较核心和重要的点.今天我们来深入学习一下css布局相关的知识 ...
- Supervisor守护DotNet Core控制台程序
Supervisor 相信对Linux系统很熟的都知道这个软件,基于Python写的一个守护进程软件.具体的介绍和使用我就不再赘述了. 使用asp.net core 部署在Linux常用的方法 我们可 ...
- 第15章 时间常数字符串比较 - IdentityModel 中文文档(v1.0.0)
在比较安全上下文中的字符串(例如比较键)时,应尽量避免泄漏时序信息. 该TimeConstantComparer类可以帮助: var isEqual = TimeConstantComparer.Is ...
- SSM框架视频资料
SSM框架视频资料 进行过 Java Web 项目开发的同学,可能都知道 SSM 框架,即 Spring + SpringMVC + Mybatis .很多项目的主体框架都是采用这种模式,这也是 Ja ...
- box-shadow内阴影、外阴影
外阴影: box-shadow:X轴 Y轴 Rpx color; 属性说明(顺序依次对应):阴影的X轴(可以使用负值) 阴影的Y轴(可以使用负值) 阴影模糊值(大小) 阴影的颜色 内阴影: bo ...