前几天看了水泡泡老哥的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注入+任意文件删除的更多相关文章

  1. ThinkSNS2.5前台getshell+后台任意文件删除

    12年爆出的一个洞 前几天比赛的一个cms  于是跟出题人表哥要过来审计了看看 漏洞文件再根目录thumb.php中 <?php /* * 自动缩略图 参数 url|w|h|type=" ...

  2. [代码审计]云优cms V 1.1.2前台多处sql注入,任意文件删除修复绕过至getshell

    0X00 总体简介 云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义字段,自定义表单,自定义栏目权限,自定义管理权限等众多功能深受用户青睐,上线短短3个月,下载次 ...

  3. PHP:网展cms后台任意文件删除和sql注入

    0x01:目录结构 可以发现Frameword是框架的文件 install安装 public公共文件 uploads储存上传之类的文件 webuser后台文件 Home前台文件 0x02.csrf漏洞 ...

  4. Discuz!X 3.4 前台任意文件删除漏洞复现

    Discuz!X 3.4 前台任意文件删除漏洞复现 参考链接: http://www.freebuf.com/vuls/149904.html http://www.freebuf.com/artic ...

  5. Youke365_2_4 一处Sql注入漏洞以及一处任意文件删除

    本文作者:X_Al3r Prat 0 自白 每一天都是新的一天.没啥吐槽的,步入正题 /system/category.php 文件一处Sql注入## 80-87行代码         $root_i ...

  6. [代码审计]phpshe开源商城后台两处任意文件删除至getshell

    0x00 背景 这套系统审了很久了,审计的版本是1.6,前台审不出个所以然来.前台的限制做的很死. 入库的数据都是经过mysql_real_escape_string,htmlspecialchars ...

  7. 【代码审计】大米CMS_V5.5.3 任意文件删除及代码执行漏洞分析

      0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...

  8. 【代码审计】YzmCMS_PHP_v3.6 任意文件删除漏洞分析

      0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...

  9. 【代码审计】XIAOCMS_后台database.php页面存在任意文件删除漏洞

      0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...

随机推荐

  1. 详解MUI顶部选项卡(tab-top-webview-main)的用法

    最近用MUI做手机app的时候,遇到了一点问题.然后就对这个tab-top-webview-main的源码做了点研究,接下来我将和大家详解一下 tab-top-webview-main的用法和应该注意 ...

  2. python日期格式化操作

    1.将字符串的时间转换为时间戳 方法: a = "2013-10-10 23:40:00" #将其转换为时间数组 import time timeArray = time.strp ...

  3. MySQL 8 新特性之降序索引

    MySQL 8.0终于支持降序索引了.其实,从语法上,MySQL 4就支持了,但正如官方文档所言,"they are parsed but ignored",实际创建的还是升序索引 ...

  4. sprintf、strcpy 及 memcpy 函数区别

    这些函数的区别在于 实现功能 以及 操作对象 不同.strcpy 函数操作的对象是 字符串 ,完成 从 源字符串 到 目的字符串 的 拷贝 功能. sprintf 函数操作的对象 不限于字符串 :虽然 ...

  5. BZOJ_3173_[Tjoi2013]最长上升子序列_splay

    BZOJ_3173_[Tjoi2013]最长上升子序列_splay Description 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.每插入一个数 ...

  6. C# 利用VS自带的WSDL工具生成WebService服务类

    C# 利用VS自带的WSDL工具生成WebService服务类   WebService有两种使用方式,一种是直接通过添加服务引用,另一种则是通过WSDL生成. 添加服务引用大家基本都用过,这里就不讲 ...

  7. 【原创】分布式之redis复习精讲

    引言 为什么写这篇文章? 博主的<分布式之消息队列复习精讲>得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章.但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中, ...

  8. C/C++反三角函数使用注意

    最近写的东西用到了数学库中的acos函数,但是代码在运行的时候有时候会出莫名其妙的错误,比如返回值是个特别大的数. 最后在debug 的时候发现acos返回的数据很奇怪,但是传入的参数明明没有问题,可 ...

  9. phper的Go之旅(-)--书写前言

    前言:由于我使用的主力机是mac,所以整系列教程都以mac为主,后期可能会更新windows,有时间的话,截止写这篇博客的时间我是一个全职php开发工程师,之所以要写这篇 教程原因就是现在技术语言层出 ...

  10. [AST实战]从零开始写一个wepy转VUE的工具

    为什么需要 wepy 转 VUE "转转二手"是我司用 wepy 开发的功能与 APP 相似度非常高的小程序,实现了大量的功能性页面,而新业务 H5 项目在开发过程中有时也经常需要 ...