【网络安全】文件上传绕过思路总结
硬怼
【技术资料】
硬怼的话,主要是从下面这些方法入手去操作。
(1)fuzz后缀名
看看有无漏网之鱼(针对开发自定义的过滤可能有机会,针对waf基本不可能。更多的情况是php的站寻找文件包含或者解析漏洞乃至传配置文件一类的,但是对于这种也大可不必fuzz后缀名了)
(2)http头变量改造
首先要明确waf的检测特征,一般是基于某种特定的情况下,去针对相应的拦截。几个例子,文件上传的时候,大多数Content-Type都是application/multipart-formdata这种,name对于waf来说,如果针对这种规则,对xxe ,sql注入,上传,命令执行,内容等所有都去做一波扫描是及其浪费内存的,所以有可能针对不同的类型,做了不同的校验规则。此时通过对Content-Type进行修改,可能会绕过waf。其他的http头添加删除等也是类似。
(3)文件后缀构造
这个和第一个有相似的就是都针对后缀名进行改造,不同的在于这里可能会利用waf的截取特征,比如回车换行绕过waf的检测,但是对于后端来说接收了所有的传入数据,导致了绕过waf。
(4)其他方法
这种就比较杂了,但是又不属于迂回打击的一类,比如重写等方法。接下来就实战来试试
第一步,先来对waf的规则做一个简单的判断。这里我的习惯是从内容,后缀两个方向进行判断。简单来说,基本分为这几种情况
(1)只判断后缀(基本碰到的比较少了,因为很多时候白名单开发都可以完成) (2)只判断内容(也比较少,因为一般的waf都会带后缀的判断)
(3)内容后缀同时判断(这种情况比较多,相对于来说会安全一点) (4)根据文件后缀来判断内容是否需要检测(较多)
(5)根据Content-Type来判断文件内容是否需要检测
暂时只想到这么多,以后碰到了再单独记吧。
有了思路,那么接下来就好说了。举个例子我这里的情况
(1)传脚本后缀(被拦截,判断了后缀) (2)传脚本后缀加不免杀代码(被拦截,可能后缀内容同时拦截)
(3)传非脚本名(可自己fuzz一个能过waf的任意后缀,里面加恶意内容,被拦截。也就是说同时会对内容和后缀进行判断)
说说我这里的情况,会对内容和后缀进行拦截。检测到上传jsp文件,任意内容都会被拦截。
先来fuzz一波能利用的后缀名,这里可以包括中间件的一些配置文件。希望不大,一点都不出意外,全部被拦截了。
既然我们需要对后缀名进行改造,就对后缀名后面加特殊符号做一个fuzz试试,测试了一下,在没有恶意内容的情况下,只有’被过滤了。所以如果有机会,我们看看能不能试试系统特殊,比如;去做截断。先记下来。因为最终还是需要免杀马的,jsp免杀又不会,先不考虑这个,先考虑把waf绕过。(这里我对filename做了换行,然后去掉了引号,加了一个;做截断绕过了waf,但是内容被查杀了,尴尬。)
接下来对http头部进行改造一下尝试绕过
一.filename改造
(2) 名字特殊符号替换以及构造异常闭合(符号方法很多自己天马星空,我这里就写几个就行了,但是要注意你改造了得让后端识别到,乱改造识别不到等于白搭)
filename=‘shell.jspx.jsp’
filename=shell.jspx.jsp
filename=shell.jspx.jsp’
“filename”=shell.jspx;
(3)重写
filename=shell.jpg;filename=shell.jspx;
filename=shell.jspx;filename=shell.jpg;
(4)大小写变化
FileName=shell.jspx.jsp’
(5)参数污染
FileName=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaashell.jspx.jsp’
FileName =shell.jspx(加空格)
filename====“shell.jspx.jsp1”(加等号)
FileName =shell.jspx(前后加空格,中间也可以加特殊符号fuzz)
(6)文件名字编码(filename一般为后端接收参数,编码了可能识别不到,这个就看情况)
filename=\u0073\u0068\u0065\u006c\u006c\u002e\u006a\u0073\u0070
(7)回车换行(有时候确实挺好用的,任意位置都可以试一下)
1.FileName=shell.jspx.
jsp
2.File
Name=shell.jspx.jsp’
二 name改造
name也可以任意改造,改造的方法和filename差不多,就不重复发了,主要是思路重要。
其他的比如奇奇怪怪的正则需要用到的特殊字符都可以在文件名中fuzz一下,看看能否打断waf规则,也就是把我们fuzz后缀的再跑一次,或者再找点其他的正则字母,这里就不重复写了。
http头部格式上传相关绕过
有一些用畸形相关的,不太推荐一来就试,fuzz的可以带一下,这种属于天时地利人和占据才用,毕竟底层的规定好的合规变了就不能识别,但是也说不准fuzz出问题了呢。fuzz本来就是一个天马行空的过程,好了,继续来看。
(1)Content-Disposition
溢出绕过
Content-Disposition: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa form-data; name=“file”; filename=shell.jpg;filename=shell.jspx;
回车换行绕过(注意不要把固定字段打散了,)
Content-Disposition:
form-data; name=“file”; filename=shell.jpg;filename=shell.jspx;
双写绕过(写两次)
Content-Disposition: form-data; name=“file”; filename=shell.jpg;filename=shell.jspx;
Content-Disposition: form-data; name=“file”; filename=shell.jpg;filename=shell.jspx.jpg;
还有一些参数污染加减空格啥的,和上面filename类似,就不重复写了。
(2)boundary
加减空格或者前面加恶意的参数
boundary =---------------------------8472011224916008542288311250
&boundary =---------------------------8472011224916008542288311250
123& boundary =---------------------------8472011224916008542288311250
多个污染(他是用来分割的,他变了下面的也要变一下)
boundary =---------------------------8472011224916008542288311251
boundary =---------------------------8472011224916008542288311252
回车换行污染
分割污染(简单来说就是他自定义了一些分割部分,我们可以把我们的恶意参数提交到其他的分割部分)见下图第一个,视情况而定。其他的常用方式和上面都可以重复的
(3)Content-Type
直接删除
修改类型为application/text或者 image/jpeg等等
回车换行
溢出
参数污染
重复传入Content-Type
大小写变换
设置charset
Content-Type: multipart/form-data;charset=iso-8859-13
列举几个
ibm869
ibm870
ibm871
ibm918
iso-2022-cn
iso-2022-jp
iso-2022-jp-2
iso-2022-kr
iso-8859-1
iso-8859-13
iso-8859-15
还有其他的方式,其实和上面的思路差不多
http头部其他绕过
这一块就比较多了,编码,长度等等,都可以试一下,具体的方法和上面的差不多。这里就用参考链接pureqh老哥的几个东西了。
1.Accept-Encoding 改变编码类型
Accept-Encoding: gzip
Accept-Encoding: compress
Accept-Encoding: deflate
Accept-Encoding: br
Accept-Encoding: identity
Accept-Encoding: *
下面截取的图片是我本次的,就不弄其他的了,长度那一块,主要是说内容方面相关的。
2.修改请求方式绕过
post改为get put等其他的请求方式(这一块主要是针对waf的拦截特性)
3.host头部绕过
对host进行回车,换行
修改host头部
host跟链接
host改为127.0.0.1
删除host
到这里就差不多了,再来回头理一下我们的思路。借用露迅先生的一句话,你如果啥都不晓得就莽起整,一些都等求于零。所以我们总结一下我们的思路。
waf的特性大多数是写了很多的规则,基于截取的内容做规则匹配,匹配到了就不放行,未匹配到就认为是安全的放行,所以我们需要做的就是绕过waf对于规则的匹配。大概是这几个方向
(1)基于正则匹配的绕过(也就是参数污染,正则破坏等上面的方法,打乱waf的检测)
(2)基于正则匹配的缺失(类似于修改请求等,让waf根本不去检测这部分的内容)
(3)基于操作系统的特性(类似于后缀名加特殊符号让操作系统进行识别)
我们做一切的前提都是既绕过了waf,也能让后端识别,所以可以乱来,不要太乱。基本也就是污染,多写,绕过,添加删除几个方向。
二 迂回打击
说是迂回打击,但是其实就是利用一些通用的手段,或者中间件的特性去绕过waf,甚至说寻找到了真实ip去直接绕过云waf等方法。这里我就简单总结一些,不全面的话忘体谅。这一块主要是内容相关的了。
基于http的绕过 这种属于硬怼,方法如下:
1.免杀马 这种是万能的,只要能免杀就能如履平地,但是现在的waf规则更新太快了,熬了一夜去弄了个免杀,第二天踩了蜜罐上去就被抓,蓝方产品支持加入规则,一点也不美滋滋,但是这也是一条YYDS的道路
2.分块传输 说实话这玩意儿我从来没有成功过,但是面试问的挺多的,有一次有个面试官还专门跟我提了这个所以我这里列举一下。但是分块参数+参数污染组合利用貌似效果还是不错
3.修改长度字段 和分块参数有点类似,作用是这样,有些时候做参数大数据污染的时候,waf判断数据过长直接丢弃,有些判断长度和内容相差太多也直接丢弃。这时候可以把两者结合起来使用,达到超长数据绕过waf的检测,同时数据送到了后端
4.修改传输编码 和分块传输类似,自己手动去改,burp那个插件工具我是一次都没成功过
5.基于网站系统特性添加字段 比如ASP专属bypass-devcap-charset,添加这些字段去绕过waf的检测(这也是我看到但是没机会实战,记录一下)
6.修改头部+内容结合 修改头部为其他格式,再把内容头加其他格式,例如图片,中间插入恶意代码,类似图片马
7.增加多个boundary 这样子打乱了恶意内容,有点类似分开传输,欺骗waf的检测,逃逸后面的代码。
8.文件名写入文件windows下利用多个<<<<去写入文件,详情可以看参考链接。
还有一些其他的方法,这一种也是类似于对waf欺骗,过着直接利用免杀硬过waf的。jsp免杀不会,就不献丑免杀了。
其他绕过
这种绕过就是一般适用于云waf了。咋说呢,这种我碰到的不怎么多,因为一般碰到的云waf基本都很强,注入上传类的绕过现在越来越难了,xss还好一点,但是不走钓鱼的话xss也没用太大的用处,毕竟可以一把梭最舒服。来看看吧,检测全球ping就行。
1.寻找真实ip
这个方法网上太多了,说下我常用的
(1)利用ssl证书寻找
(2)利用子域名寻找
(3)利用公司其他业务寻找(跑C端看运气,和子域名一样)
(4)利用信息泄露寻找(github,google,目录文件,js代码等)
(5)利用一些云网站或者专门查找cdn的网站,链接在家里电脑上,这电脑没有,就自己去找吧
(6)利用已知工具
(7)搜索引擎(fofa,夸克等,看以前收集的业务)
(8)利用http返回信息
(9)找邮箱弱口令,然后你懂的
(10)找朋友,你懂的。
2.利用子域名去打
有些网站,可能外面做了防护,子域名没加waf,而子域名又在白名单,迂回去锤就行了。
3.利用头部绕过
基本碰不到了,修改host为本地ip,现在已经绝迹了,突然想起来写一下。
4.找设备
找一些vpn一类的设备碰碰运气
其他的就不说了吧,头痛。总结下这个思路
(1)直接寻找waf保护后的目标地址,进行亲身拥抱(绕过waf去打)
(2)寻找waf后目标的子女子孙亲儿子(被waf加白的一些资产)去挑拨离间。
学无止境,点击获取【网络安全学习资料·攻略】
【网络安全】文件上传绕过思路总结相关推荐
- 文件上传绕过安全狗WAF实战
今天继续给大家介绍渗透测试相关知识,本文主要是文件上传绕过安全狗WAF实战. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未 ...
- 文件上传绕过姿势整理
文件上传绕过姿势整理 WAF绕过 安全狗绕过 1.绕过思路:对文件的内容,数据.数据包进行处理. 关键点在这里Content-Disposition: form-data; name="fi ...
- 【文件上传绕过】——后端检测_文件的扩展名检测漏洞
文章目录 一.漏洞说明: 二.工具: 三.实验环境: 四.实验目的: 五.检测方法: 1. 黑名单: 2. 白名单: 六.绕过方式: 1. 白名单绕过: 1.1 解析漏洞: 1.2 截断上传: 原理: ...
- CTF 总结01:文件上传绕过
问题描述 (⌐■_■)在做图片马上传的题目,发现自己折腾很久,终于成功达到了抽刀断水.南辕北辙的效果~距离正确的WP仅有一部西游记那么长-- 没关系,菜鸟做题就是这样屡败屡战~失败是成功的山顶洞人,也 ...
- 各种文件上传绕过姿势(一)
各种文件上传绕过姿势 **目录** 各种文件上传绕过姿势 写在前面 一.前端绕过 1.1 防护手段 1.2 绕过方法 二.检查MIME类型 2.1 防护手段 2.2 绕过方法 三.黑名单绕过(一) 3 ...
- 文件上传绕过各种姿势
漏洞简介 文件上传,顾名思义就是上传文件的功能行为,之所以会被发展为危害严重的漏洞,是程序没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验.文件上传漏洞是漏洞中最为简 ...
- 文件上传绕过WAF之Fuzz测试
今天继续给大家介绍渗透测试相关知识,本文主要内容是文件上传绕过WAF之Fuzz测试. 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调: ...
- 【甄选靶场】Vulnhub百个项目渗透——项目十八:pwnlab_init(LFI本地文件包含,PHP伪协议,文件上传绕过,逆向分析)
Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目十八:pwnlab_init(LFI本地文件包含,PHP伪协议,文件上传绕过,逆向分析) 靶场地址
- pph上传文件到window服务器,[upload_labs]文件上传绕过小结
前言: 在日常渗透中,上传文件是getshell的一个常用方案,在其中,我们常常直接修改后缀进行绕过,如果不行,往往会放弃,从而错失机会.这里是我通过github的一个上传绕过源码来记录下需要注意的点 ...
最新文章
- 北大校长王恩哥送给毕业生的十句话
- 最新县及县以上行政区划代码(截止2009年12月31日)
- VA01创建SO的增强点MV45AFZZ的几点实际应用总结
- python开发Day05(计算器代码)
- 概率论和数理统计 - 04 -
- Struts2中我所遇到的内存溢出(java.lang.OutOfMemoryError)异常错误介绍
- 推荐一款ORM工具 FOR ADOBE AIR
- 渗透之——Nmap+Zenmap+Amap+Zmap
- 2019程序员好书盘点:这些畅销新书的时间轴你对上没?
- 芥子纳须弥——浅谈数据压缩技术
- 用参数方程绘制椭球体
- SAP MM 采购订单中“Delivery Completed“ Indicator
- 三次握手 resend
- 三维地理信息系统空间的可视分析
- win10 wsl 安装 ubuntu 16.04
- 关于如何发挥最好的学习状态的思考暨《自控力》一书读后感
- 钟薛高为啥突然卖3-4元的雪糕?
- Source Insight入门教程
- 调css p 段落间距,CSS段落第一个文字空两格缩进text-indent 和 文字之间间距调整letter-spacing...
- 分布式数据库架构--分库、分表、排序、分页、分组、实现
热门文章
- Appendix之setup.py:附录文件内容记录setup.py
- ML之xgboost:利用xgboost算法(sklearn+3Split+调参曲线)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
- pyhanlp 分词与词性标注
- JAVA_OA管理系统(四)番外篇:使用Spring注解注入属性
- 百度云怎样提升下载速度
- MVC3.0删除数据的时候给提示信息
- 在Eclipse中编译maven项目出的问题
- rtmp服务器与播放器的交互
- c++ template笔记(2)模板类
- InterlockedIncrement函数详解