应用安全 - Web安全 - 上传漏洞 - 攻防
绕过方法
. 0x00
. %(0x00的衍生版)
客户端绕过
抓包改包(先上传一个gif类型的木马,然后通过burp将其改为asp/php/jsp后缀名即可)
服务端校验
content-type字段校验
文件头检验(常见文件头:
() .JPEG;.JPE;.JPG,”JPGGraphic File”
() .gif,”GIF 89A”
() .zip,”Zip Compressed”
() .doc;.xls;.xlt;.ppt;.apr,”MS Compound Document v1 or Lotus Approach APRfile”)
服务端绕过 - 文件类型绕过
抓包修改content-type,如将content-type字段改为image/gif(原为 Content-Type: text/plain
服务端绕过 - 文件头绕过
在木马内容基础上再加了一些文件信息
GIF89a<?php phpinfo(); ?>
服务端绕过 - 文件后缀名绕过
前提:
黑名单校验 黑名单检测:一般有个专门的 blacklist 文件,里面会包含常见的危险脚本文件 绕过方法
()找黑名单扩展名漏网之鱼 - 比如 asa 和 cer 之类 - 上传 html文件进行钓鱼
()可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类 能被解析的文件扩展名列表
jsp jspx jspf
asp asa cer aspx
php php php3 php4
exe exee
服务端绕过 - 配合文件包含绕过
()先上传一个内容为木马的txt后缀文件,因为后缀名的关系没有检验内容;
()然后再上传一个.php的文件,内容为<?php Include(“上传的txt文件路径”);?>
此时,这个php文件就会去引用txt文件的内容,从而绕过校验,下面列举包含的语法:
#PHP
<?php Include("上传的txt文件路径");?>
#ASP
<!--#include file="上传的txt文件路径" -->
#JSP
<jsp:inclde page="上传的txt文件路径"/>
or
<%@include file="上传的txt文件路径"%>
服务端绕过 - 配合服务器解析漏洞
WampServer2.0All Version (WampServer2.0i / Apache 2.2.) [Success]
WampServer2.1All Version (WampServer2.1e-x32 / Apache 2.2.) [Success]
Wamp5 All Version (Wamp5_1.7.4 /Apache 2.2.) [Success]
AppServ .4All Version (AppServ - 2.4. /Apache 2.0.) [Success]
AppServ .5All Version (AppServ - 2.5. /Apache 2.2.) [Success]
AppServ .6All Version (AppServ - 2.6. /Apache 2.2.) [Success]
iis漏洞版本
IIS6. (Win2003 SP2 + IIS6.) [Success]
构造:ss.asp;1.jpg
IIS7. (Win2008 R1 + IIS7.) [Success]
IIS7. (Win2008 R2 + IIS7.) [Success]
Nginx漏洞版本
• Nginx 0.5.*
• Nginx 0.6.*
• Nginx 0.7 <= 0.7.
• Nginx 0.8 <= 0.8.
• 以上Nginx容器器的版本下,上传⼀一个在waf白名单之内扩展名的⽂
文件1.jpg,然后以1.jpg%.php进行请求。
• Nginx 0.8. – 1.5.:
• 以上Nginx容器器的版本下,上传⼀一个在waf白名单之内扩展名的⽂
文1.jpg,然后以1.jpg%%.php进行请求
服务端绕过 - 配合操作系统文件命令规则
()上传不符合windows文件命名规则的文件名
test.asp.
test.asp(空格)
test.php:.jpg
test.php::$DATA
shell.php::$DATA…….
会被windows系统自动去掉不符合规则符号后面的内容 ()linux下后缀名大小写
在linux下,如果上传php不被解析,可上传pHp后缀的文件名。
服务端绕过 - 代码审计/CVE
PHPCMS9.6.0 富文本编辑器 - FCK
服务端绕过 - 配合其他规则 - 0x00截断 - include()
PHP版本低于5.3.4
.在url中加入%,如http://xxxx/shell.php%00.jpg
url中的%(形如%xx),web server会把它当作十六进制处理,然后将该十六进制数据hex()翻译成统一的ascii码值“NUL(null)”,实现截断 .在burpsuite的16进制编辑工具将”shell.php .jpg”(带空格的)中间的空格由20改成00
burpsuite用burp自带的十六进制编辑工具将”shell.php .jpg”(中间有空格)中的空格由20改成00,如果burp中有二进制编辑工具
服务端绕过 - 配合其他规则 - 0x00截断 - iconv()
php5.4之前,iconv()函数在转换编码的时候,遇到不合法的字符串的时候会将其截断
<?php
for($k=;$k<=;$k++)
{
$a='shell.php'.chr($k)."1.jpg";
echo 'k:'$k.' '.'$a:'.$a.' '.'iconv("UTF-8","gbk",$a):'.iconv("UTF-8","gbk",$a)."\n";
}
?>
iconv(“UTF-″,”gbk”,$a)或是iconv(“UTF-″,”gb2313″,$a)在chr()到chr()之间截断,使结果为shell.php;在iconv转码的过程中,utf->gb2312(其他部分编码之间转换同样存在这个问题)会导致字符串被截断,如:$filename=”shell.php(hex).jpg”; (hex为0×-×),经过iconv转码后会变成$filename=”shell.php “;
所以,经过iconv后$struct_file['name'])为shell.php,可成功的上传shell.php(前提是上传的文件名为shell.php{%-%}.jpg )
服务端绕过 - 双文件上传
右键审查元素,修改,上传文件<input ......>,出现两个上传框,第一个上传正常文件,第二个选择一句话木马,提交
<form enctype="multipart/form-data" method="post" action="http://pai.xx.com/server/">
<input type="file" name="files[]" />
<input type="file" name="files[]" />
<input type="submit">
</form>
服务端绕过 - 配合其他规则 - 0x00截断 - file_get_contents()
服务端绕过 - 配合其他规则 - 0x00截断 - file_exists()
服务端绕过 - 配合其他规则 - 0x00截断 - magic_quotes_gpc = Off php版本<5.3.4
http://www.ctfs-wiki.com/FI/FI.php?filename=../../../../../../../boot.ini%00 test.php(0x00).jpg
test.php%.jpg
服务端绕过 - 配合其他规则 - .htaccesss
服务端绕过 - 配合其他规则 - 幻数检测绕过
服务端绕过 - 配合其他规则 - 结构加载绕过
服务端绕过 - 配合其他规则 - 渲染测试绕过
服务端绕过 - 配合其他规则 - 二次渲染绕过
Waf绕过 - 垃圾数据
有些主机WAF软件为了不影响web服务器的性能,会对校验的用户数据设置大小上限,比如1M。此种情况可以构造一个大文件,前面1M的内容为垃圾内容,后面才是真正的木马内容,便可以绕过WAF对文件内容的校验;
Waf绕过 - filename
针对早期版本安全狗,可以多加一个filename
Waf绕过 - POST/GET转换
Waf绕过 - 利用waf本身缺陷
Conten-Type字段
Content-Disposition字段
Boundary字段
NTFS ADS特性
filename字段
name字段
实例 - 图片上传处
a.asp;.jpg
AutoReName ->
防御
1.文件扩展名服务端白名单校验 #0x00可绕过
2.文件内容服务端校验
3.隐藏上传文件路径
4.检查配置信息无误
5.上传后,文件重命名+时间戳+随机数
6.安装必要的防护软件
应用安全 - Web安全 - 上传漏洞 - 攻防的更多相关文章
- web文件上传漏洞
什么是文件上传漏洞? 指利用系统的对文件上传部分的控制不足或处理缺陷,上传可执行的动态脚本文件/webShell进行攻击行为. 原因 对于上传文件的后缀名(扩展名)没有做较为严格的限制 对于上传文件的 ...
- WEB文件上传漏洞介绍解决办法
引用:http://blog.csdn.net/kobejayandy/article/details/35861499 问题: -1. 上传文件WEB脚本语言,服务器的WEB容器解释并执行了用户上传 ...
- 攻防:文件上传漏洞的攻击与防御,转自H3C
WebShell就是以asp.php.jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门.黑客在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器WEB目 ...
- [红日安全]Web安全Day5 - 任意文件上传实战攻防
本文由红日安全成员: MisakiKata 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目 ...
- Web应用安全之文件上传漏洞详解
什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这 ...
- WEB安全:文件上传漏洞
文件上传漏洞过程 用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力. 一般的情况有: 上传文件WEB脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行: ...
- DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
说起文件上传漏洞 ,可谓是印象深刻.有次公司的网站突然访问不到了,同事去服务器看了一下.所有 webroot 文件夹下的所有文件都被重命名成其他文件,比如 jsp 文件变成 jsp.s ,以致于路径映 ...
- web服务端安全之文件上传漏洞
一.文件上传漏洞的原理 由于程序代码未对用户提交的文件进行严格的分析和检查,导致攻击者可以上传可执行的代码文件,从而获取web应用的控制权限. 常见于上传功能,富文本编辑器. 二.文件上传漏洞的防御 ...
- 基于 java 【Web安全】文件上传漏洞及目录遍历攻击
前言:web安全之文件上传漏洞,顺带讲一下目录遍历攻击.本文基于 java 写了一个示例. 原理 在上网的过程中,我们经常会将一些如图片.压缩包之类的文件上传到远端服务器进行保存.文件上传攻击指的是恶 ...
随机推荐
- nohup - 使程序运行时不挂起, 不向 tty 输出信息
总览 (SYNOPSIS) nohup COMMAND [ARG]... nohup OPTION 描述 (DESCRIPTION) 执行 COMMAND 命令, 忽略 hangup (挂起) 信号. ...
- JavaEE高级-SpringMVC学习笔记
*SpringMVC概述 - Spring为展示层提供的基于MVC设计理念的优秀Web框架,是目前最主流的MVC框架之一 - Spring3.0后全面超越Struts2,成为最优秀的MVC框架 - S ...
- Shell编程变量
shell变量 什么是变量,存放了各种数据,在linux怎么定义了变量,name=ken,name就是变量名,ken就是变量值, 但是在shell中,有三种方式: name=ken name='ken ...
- Linux如何配置ftp服务器、给ftp服务器添加访问用户
本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群: 281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...
- APP功能测试注意点
App功能测试的7大注意点 : APP测试 在日常工作的摸索中,我们将如何做好app测试的注意点简单归结为如下内容. 弱网测试,兼容性测试,UI测试.中断测试, 01 运行 1)App安装完成后 ...
- linux运维、架构之路-MySQL(二)
一.SQL语句实战 1.DDL语句——库管理 ①查看数据库 show databases; show databases like 'word%';#模糊查询数据库 ②创建数据库 create dat ...
- 弹性盒子FlexBox简介(二)
弹性盒子属性 一.align-content属性 属性作用:用于修改flex-wrap属性行为.类似于justify-content,但它不是设置弹性子元素的对齐,而是设置各个行的对齐. 属性值: f ...
- php中如何上传整个文件夹里的所有文件?
1.使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc) APC实现方法: 安装APC,参照官方文档安装,可以使 ...
- POJ 3061 Subsequence ( 二分 || 尺取法 )
题意 : 找出给定序列长度最小的子序列,子序列的和要求满足大于或者等于 S,如果存在则输出最小长度.否则输出 0(序列的元素都是大于 0 小于10000) 分析 : 有关子序列和的问题,都可以考虑采用 ...
- [luogu]P2279 [HNOI2003]消防局的设立[贪心]
[luogu]P2279 [HNOI2003]消防局的设立 题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两 ...