upload-labs训练
Upload-labs
Pass-01
打开网站上传shell马,提示只能上传图片类型的
根据F12大法,发现了检查文件后缀函数
发现是使用前端JS代码进行判断的
那么禁用JS,验证文件后缀就失效了,即可绕过。
Shell马地址就是这个图片的地址
Pass-02
F12大法已经不好用了,不在前端进行判断,那么就是在后端进行判断的
根据源码发现是根据MIME进行判断的,只能是图片类型
收集了一些常见的MIME类型
参考链接:https://blog.csdn.net/fuhanghang/article/details/105347378
然后抓包修改为image/png
成功绕过
Pass-03
根据源码发现是基于黑名单判断的
但是也有绕过方法,用.phtml .phps .php5 .pht进行绕过,需要注意的是要在apache的httpd.conf中有如下配置代码:AddType application/x-httpd-php .php .phtml .phps .php5 .pht,如果不配置它是无法解析php5代码的,访问的时候就是一个空白页
Pass-04
还是黑名单过滤,只是这次几乎所有的后缀都给过滤了
但是也有姿势,在 Apache 里,.htaccess 是一个配置文件。可以用来控制所在目录的访问权限以及解析设置。可以通过修改该文件的配置项,将目录下的所有文件作为 php 文件来解析。
服务端允许.htaccess 文件生效,需要在 httpd.conf 中修改两处配置项:Apache 加载 rewrite 模块 LoadModule rewrite_module modules/mod_rewrite.so AllowOverride All(默认为 None)
所以我们上传一个恶意的.htaccess文件改变解析,上传含有下面内容的.htaccess文件
1 | AddType application/x-httpd-php |
然后制作一个图片马,连Shell就OK
Pass-05
这下.htaccess文件也被禁止了
但是还是有操作,在源码中没有发现转换为小写的代码,所以可以使用大小写绕过。
成功绕过美滋滋
Pass-06
也是黑名单绕过,该禁的都禁了,但是没有去除末尾的空格,所以可以在末尾加空格绕过
Pass-07
根据源码发现没有对后缀名进行去点处理,只是获取了以点开始后面的结尾内容,所以可以在末尾加点绕过(在Windows中末尾如果出现.(点)则会自动过滤)
Linux不行哦
Pass-08
在源码中没有发现对::$DATA进行处理
在window中,如果以 文件名+“::$DATA” 命名,会把::$DATA
之后的数据当成文件流处理,不会检测后缀名,且保持::$DATA
之前的文件名,他的目的就是不检查后缀名,所以即可绕过
Pass-09
源码中第15行这儿拼接的是文件名
所以我们要想办法在文件名中保留.php,所以可以在末尾加 点空格点 这样的方式绕过
Pass-10
经过调试,后缀被替换为空了
可以双写绕过,因为源代码里只替换了一次,哈哈哈
Pass-11
根据源码发现是白名单检测了,不过是直接拿路径来拼接的,所以只要在路径里截断就能绕过
返回的地址是这样
1 | http://192.168.1.144/upload/shte.php%EF%BF%BD/7420221016220352.jpg |
把截断后面的内容删了就是shell的地址
1 | http://192.168.1.144/upload/shte.php |
Pass-12
这题和111题很相似,经过对比,发现这次是用的POST方式传参的
POST传参就不会自动进行解码,所以%00就不会被解析,但是还有办法绕过,那就是在二进制中修改
继续使用%00截断
加个文件名和空格,下面也别忘了改为.jpg
Pass-13
要求jpg,png,gif三种都通过才算过关,先准备三张不同的图片
图片马制作
1 | copy i1.jpg/b+php.txt/a 1.jpg |
上传都没问题,接下来就是需要文件包含来进行利用了。
Pass-14
使用getimagesize函数获取图片信息
还是可以使用图片马进行绕过
Pass-15
使用exif_imagetype函数校验图片信息,还是可以使用图片马进行绕过
Pass-16
本关验证content-type、还使用了imagecreatefromgif判断是否是GIF图片,并且最后还进行了二次渲染,本来还是GIF图片马能上传成功,但是这题考点好像不止于此。
网上的思路:二次渲染会对图片特定地方进行重写,按照标准格式进行存储,先上传一张正常gif然后下载上传完毕后的图片,作对比,在即使经过二次渲染也没有改变的地方植入木马,最后文件包含执行。
这个题还是有点意思,可以看看详细分析:https://xz.aliyun.com/t/2657#toc-12
可以看到经过二次渲染后一句话没了
经过对比,这部分灰色的没有被渲染,所以重新一句话马写在这个灰色的地方。
Pass-17
出现unlink函数,如果不是图片类型的就会执行删除操作,那么只要我们在执行删除操作之前访问进行触发,即可绕过
发送至爆破模块
1 | <?php fputs(fopen('bs.php','w'),'<?php @eval($_POST["10086"])?>');?> |
批量发包过程中,只要访问到这个shell.php文件,就会立马生成一个bs.php一句话马文件
成功创建
Pass-18
这题同样也是条件竞争,不过不能直接传PHP马了,只能传图片马,这里做了白名单判断,再检查图片大小,检查文件是否存在,然后把文件上传后立马进行重命名,所以要在重命名之前进行文件包含访问触发。
Pass-19
本关考察CVE-2015-2348 move_uploaded_file() 00截断,可以使用点绕过,也可以在二进制中插入00
直接改后缀也是可以的
Pass-20
暂定…
网上其他文章备份(推荐1)
备份这个大佬写的思路,以防丢失
https://www.cnblogs.com/8gman/p/12319141.html
WAF绕过
安全狗绕过
1.绕过思路:对文件的内容,数据。数据包进行处理。
1 | 关键点在这里Content-Disposition: form-data; name="file"; filename="ian.php" |
2.通过替换大小写来进行绕过
1 | Content-Disposition: form-data; name="file"; filename="yjh.php" |
3.通过删减空格来进行绕过
1 | Content-Disposition: form-data; name="file"; filename="yjh.php" |
4.通过字符串拼接绕过
1 | 看Content-Disposition: form-data; name="file"; filename="yjh3.php" |
5.双文件上传绕过
1 | <form action="https://www.xxx.com/xxx.asp(php)" method="post" |
6.HTTP header 属性值绕过
1 | Content-Disposition: form-data; name="file"; filename="yjh.php" |
7.HTTP header 属性名称绕过
1 | 源代码: |
8.等效替换绕过
1 | 原内容: |
9.修改编码绕过
1 | 使用UTF-16、Unicode、双URL编码等等 |
WTS-WAF 绕过上传
1 | 原内容: |
百度云上传绕过
1 | 百度云绕过就简单的很多很多,在对文件名大小写上面没有检测php是过了的,Php就能过,或者PHP,一句话自己合成图片马用Xise连接即可。 |
阿里云上传绕过
1 | 源代码: |
360主机上传绕过
1 | 源代码: |
MIME类型绕过
1 | 上传木马时,提示格式错误。直接抓包修改Content-Type 为正确的格式尝试绕过 |
文件内容检测绕过
1 | 抓包,在正常图片末尾添加一句话木马 |
多次上传Win特性绕过
1 | 多次上传同一个文件,windows会自动更新补全TEST (1).php。 |
条件竞争绕过
1 | 通过BURP不断发包,导致不断写入Webshell,再写入速度频率上超过安全软件查杀频率,导致绕过。 |
CONTENT-LENGTH绕过
1 | 针对这种类型的验证,我们可以通过上传一些非常短的恶意代码来绕过。上传文件的大小取决于,Web服务器上的最大长度限制。我们可以使用不同大小的文件来fuzzing上传程序,从而计算出它的限制范围。 |
文件内容检测绕过
1 | 针对文件内容检测的绕过,一般有两种方式, |
垃圾数据填充绕过
1 | 修改HTTP请求,再之中加入大量垃圾数据。 |
黑名单后缀绕过
文件扩展名绕过
1 | Php除了可以解析php后缀 还可以解析php2.php3,php4 后缀 |
ashx上传绕过
1 | cer,asa,cdx等等无法使用时候。 |
特殊文件名绕过
1 | 比如发送的 http包里把文件名改成 test.asp. 或 test.asp_(下划线为空格),这种命名方式 |
Windows流特性绕过
1 | php在windows的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名。 |
白名单后缀绕过
00截断绕过上传
1 | php .jpg 空格二进制20改为00 |
htaccess解析漏洞
1 | 上传的jpg文件都会以php格式解析 |
突破MIME限制上传
1 | 方法:找一个正常的可上传的查看其的MIME类型,然后将马子的MIME改成合法的MIME即可。 |
Apache解析漏洞
1 | 1.一个文件名为test.x1.x2.x3的文件,apache会从x3的位置开始尝试解析,如果x3不属于apache能够解析的扩展名,那么apache会尝试去解析x2,直到能够解析到能够解析的为止,否则就会报错。 |
IIS解析漏洞
1 | IIS6.0在解析asp格式的时候有两个解析漏洞,一个是如果目录名包含".asp"字符串, |
Nginx解析漏洞
1 | 解析: (任意文件名)/(任意文件名).php | (任意文件名)%00.php |
解析漏洞
1 | Content-Disposition: form-data; name="file"; filename=php.php;.jpg |
前端限制绕过
1 | 1.使用BURP抓包修改后重放 |
下载绕过
远程下载文件绕过
1 |
|
文件包含绕过
1 | 上传图片木马 |
网上其他文章(推荐2)
地址:https://txluck.github.io/2021/08/23/文件上传绕过思路拓展/
贴个图