2024/7/8
文件上传upload-labs
Pass-01
绕过前端 js 检测上传
在⽂件上传时,⽤户选择⽂件时,或者提交时,有些⽹站会对前端⽂件名进⾏验证,⼀般检 测后缀名,是否为上传的格式。如果上传的格式不对,则弹出提示⽂字。此时数据包并没有提交 到服务器,只是在客户端通过 js ⽂件进⾏校验,验证不通过则不会提交到服务器进⾏处理;
允许jpg文件上传
上传2.jpg,在bp中抓包,修改后缀为.php
找到相关路径
http://10.94.137.37/upload-labs/upload/2.php
使用蚁剑连接
Pass-02
绕过 contnet-type 检测上传
有些上传模块,会对 http 的类型头进⾏检测,如果是图⽚类型,允许上传⽂件到服务器, 否则返回上传失 败。因为服务端是通过 content-type 判断类型,content-type 在客户端可被修改。则此⽂件上传也有可能被绕过的⻛险;
仅允许上传各种图片类型文件
方法同Pass-01
Pass-03
绕过⿊名单上传
上传模块,有时候会写成⿊名单限制,在上传⽂件的时获取后缀名,再把后缀名与程序中⿊ 名单进⾏检测, 如果后缀名在⿊名单的列表内,⽂件将禁⽌⽂件上传;
上传一句话木马,在bp中抓包,后缀名改为php3
上传成功
使用蚁剑连接,连接成功
Pass-04
htaccess 重写解析绕过上传
上传模块,⿊名单过滤了所有的能执⾏的后缀名,如果允许上传.htaccess。htaccess ⽂件的 作⽤是可以帮我们实现包括:⽂件夹密码保护、⽤户⾃动重定向、⾃定义错误⻚⾯、改变你的⽂ 关于AddType命令的作⽤解释 AddType 指令 作⽤:在给定的⽂件扩展名与特定的内容类型之间建⽴映射 语法:AddType MIMEtype extension [extension] … AddType指令在给定的⽂件扩展名与特定的内容类型之间建⽴映射关系。MIME-type指明了包含exte nsion扩展名的⽂件的媒体类型。 AddType 是与类型表相关的,描述的是扩展名与⽂件类型之间的关系。 1 2 3 4 5 6 Plain Text 14 件扩展名、封禁特定 IP 地址的⽤户、只允许特定 IP 地址的⽤户、禁⽌⽬录列表,以及使⽤其 他⽂件作为 index ⽂件等⼀些功能; 在 htaccess ⾥写⼊ SetHandler application/x-httpd-php 则可以⽂件重写成 php ⽂件。 要 htaccess 的规则⽣效 则需要在 apache 开启 rewrite 重写模块,因为 apache 是多数都开启这个模块,所以规则⼀般都⽣效;
上传.htaccess 到⽹站⾥.htaccess 内容是:
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
将所有的jpg⽂件解析成php⽂件
再上传恶意的 jpg 到.htaccess 相同⽬录⾥,访问图⽚即可获取执⾏脚本;
蚁剑测试连接
Pass-05
⼤⼩写绕过上传
有的上传模块,后缀名采⽤⿊名单判断,但是没有对后缀名的⼤⼩写进⾏严格判断,导致可以更改后缀⼤⼩ 写可以被绕过。如 PHP、 Php、 phP、pHp ;
使用bp抓包,修改上传的一句话木马后缀名为.phP
上传成功
使用蚁剑测试连接
Pass-06
空格绕过上传攻击
源码中缺少trim函数,利用bp抓包后,在php后面添加空格
Pass-07
利⽤ windows 系统特征绕过上传
在 windows 中⽂件后缀名. 系统会⾃动忽略.所以 shell.php. 像 shell.php 的效果⼀样。所 以可以在⽂件名后⾯加上 .绕过;
使用bp抓包进行修改,.php后缀后面加上一个.
使用蚁剑测试链接
Pass-08
NTFS 交换数据流::$DATA 绕过上传
如果后缀名没有对::$DATA 进⾏判断,利⽤ windows 系统 NTFS 特征可以绕过上传 ;
Pass-09
利⽤ windows 环境的叠加特征绕过上传
利用bp抓包,在后缀名后添加. .
Pass-10
双写后缀名绕过上传
在上传模块,有的代码会把⿊名单的后缀名替换成空,例如 a.php 会把 php 替换成空,但 是可以使⽤双写绕过例如 asaspp,pphphp,即可绕过上传;
利用bp抓包,修改后缀名
上传成功