应用安全 - 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 写了一个示例. 原理 在上网的过程中,我们经常会将一些如图片.压缩包之类的文件上传到远端服务器进行保存.文件上传攻击指的是恶 ...
随机推荐
- linux下的系统服务管理及日志管理
1.ntsysv服务配置工具 用来配置哪些服务开启或关闭,图形界面,使用键盘来操作. 安装ntsysv服务的命令:yum install -y ntsysv 直接运行命令ntsysv 弹出配置界面: ...
- xtrabackup备份mysql以及创建自动定时任务
xtrabackup的安装 安装依赖关系 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo y ...
- luogu P3601 签到题
链接P3601 签到题 求\[\sum_{i=l}^{r} i-\phi_i\] \(l,r\leq 10^{12},\ r-l\leq 10^6\) 杜教筛似乎做不了. 然后再看\(l\),\(r\ ...
- USB-TTL
- margin属性以及垂直外边距重叠问题
盒子的margin属性 盒子的外边距margin 指的是当前盒子与其他盒子之间的距离,环绕在盒子周围的空白区域,属于不可见的区域,,不会影响到可见框的大小,而是会影响到盒子的位置 ...
- 代理修饰词weak/assign/strong的区别
基于项目报错: WebViewJavascriptBridgeBase 中定义:@property (assign) id <WebViewJavascriptBridgeBaseDelegat ...
- Android与IOS的优缺点比较 对 Android 与 IOS 比较是个个人的问题。 就好比我来说,我两个都用。我深知这两个平台的优缺点。所以,我决定分享我关于这两个移动平台的观点。另外,然后谈谈我对新的 Ubuntu 移动平台的印象和它的优势。 IOS 的优点 虽然这些天我是个十足的 Android 用户,但我必须承认 IOS 在某些方面做的是不错。首先,苹果公司在他们的设备更新方面有更
Android与IOS的优缺点比较 对 Android 与 IOS 比较是个个人的问题. 就好比我来说,我两个都用.我深知这两个平台的优缺点.所以,我决定分享我关于这两个移动平台的观点.另外,然后谈谈 ...
- VGA驱动时序说明
根据不同的显示器分辨率,需要不同的刷新频率. 其中显示模式中@60表示显示器1秒钟刷新60帧. 其中时钟(MHz),表示FPGA输出给显示器的时钟频率.需要我们配置PLL的时钟频率为对应频率. 其中行 ...
- 【rust】Rust 的构建系统和包管理工具Cargo认识并初步使用(2)
Cargo 是 Rust 的构建系统和包管理工具,同时 Rustacean 们使用 Cargo 来管理它们的 Rust 项目.Cargo 负责三个工作:构建你的代码,下载你代码依赖的库并编译这些库.我 ...
- [USACO19JAN]Shortcut题解
本题算法:最短路树 这是个啥玩意呢,就是对于一个图,构造一棵树,使从源点开始的单源最短路径与原图一模一样.怎么做呢,跑一边Dijkstra,然后对于一个点u,枚举它的边,设当前的边为cur_edge, ...