应用安全 - 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-day-1
1. ls 作用:列出文件信息,默认为当前目录下 常用选项: -a: 列出所有的文件,包括所有以.开头的隐藏文件 -d: 列出目录本身,并不包含目录中的文件 ...
- 03python面向对象编程1
1.创建和使用类 1.1 创建 Dog 类.根据 Dog 类创建的每个实例都将存储名字和年龄.我们赋予了每条小狗蹲下( sit() )和打滚( roll_over() )的能力: In [2]: cl ...
- pam模块
main 循环监控 独立的程序 根据配置防护 登陆 ca cert 私有口令 openssl 证书口令??
- 神经网络训练技巧:训练参数初始化、Drop out及Batch Normalization
参数初始化: xavier初始化: https://blog.csdn.net/VictoriaW/article/details/73000632 条件:优秀的初始化应该使得各层的激活值和梯度的方差 ...
- HTML5 入门基础
HTML5概述HTML5於2004年被WHATWG(网页超文本技术工作小组)提出,於2007年被W3C接纳.在2008年1月22日,第一份正式草案已公布.WHATWG表示该规范是目前正在进行的工作,仍 ...
- Qt 打包release发布问题
除了使用depens查看exe依赖的dll,本文使用qt5.13自带的打包工具windeployqt.exe tips: demo.exe(x86) :C:\Qt\Qt5.12.3\5.12.3\ms ...
- css3 宽度百分比减去固定宽度 无效问题
一定要注意中间横线的间距才有效果 正确 width: calc(50% - 10px); 错误 width:calc(50%-10px);
- 封装storage
export const local = { getItem(key) { let value = localStorage.getItem(key) if (/^\{.*\}$/.test(valu ...
- 无线网络中的MIMO与OFDM技术原理分析
无线网络中的MIMO与OFDM技术原理分析CNET中国·ZOL 07年08月14日 [原创] 作者: 中关村在线 张伟 从最早的红外线技术到目前被寄予重望的WIFI,无线技术的进步推动我们的网络一步步 ...
- Redis实战(十一)Redis面试题
序言 单线程的redis为什么这么快? 1.纯内存操作不需要进行磁盘的 IO 2.单线程操作避免了频繁上下文切换 3.采用非阻塞的多路I/O复用模型 什么是路I/O复用模型? 核心是监听socket, ...