Upload-Labs渗透笔记
靶机项目地址:https://github.com/c0ny1/upload-labs
Pass-01
1.直接上传php一句话,报错
2.信息回显速度很快,猜想是前端验证,可以在修改前端代码,删掉checkFile()函数,或者上传jpg后缀通过burp抓包修改php后缀绕过前端验证
3.上传成功
4.菜刀连接成功
5.分析源码
Javascript前端语言定义函数,仅在前端判断文件的后缀。
Pass-02
1.直接上传,发现提示文件类型不正确
2.抓包修改文件类型,改成image/jpeg
3.改成image/jpeg
4.发包,上传成功
5.菜刀连接成功
6.分析源码
仅这条if语句判断了上传文件的类型,修改Content-Type即可绕过。
Pass-03
1.直接上传,提示
2.猜想可能是黑名单限制,利用其它后缀名进行绕过php3、phtml
3.上传成功,菜刀连接成功
4.分析源码
建立了个黑名单,其中的后缀都不能上传。但是其它可解析php的后缀可以上传并解析。
Pass-04
1.直接上传,提示
2.尝试利用apache解析漏洞,apache读取后缀从右向左,若遇见不认识的后缀名便向前继续读取,直到认识的后缀。
3.上传成功,连接菜刀成功
4.方法二,其实这关考察的目的是 .htaccess文件,上传一个.htaccess内容如下的文件:
SetHandler application/x-httpd-php
5.这样所有文件都会解析为php,然后再上传图片马,就可以解析:
6.连接菜刀成功
7.分析源码
这里把所有的后缀都过滤了,除了.htaccess,所以可以利用上传.htaccess规则来进行绕过,把可以上传的文件后缀解析成php。
Pass-05
1.直接上传,提示
2.上传.htaccess失败,可能也把.htaccess给过滤了,尝试使用apache解析漏洞绕过
3.连接菜刀成功
4.其实这题考察的是大小写绕过,
5.分析源码
在上一题pass-04的基础上多了个过滤.htaccess,但是没有对后缀的大小写进行统一,这里于是可以通过大小写绕过。
Pass-06
1.直接上传失败,加空格绕过
2.上传成功
3.菜刀连接成功
4.源码分析
还是黑名单,但是没有对后缀名进行去空处理,可在后缀名中加空绕过。
Pass-07
1.尝试利用windows特性,会自动去掉后缀名中最后的 . ,抓包,在后缀加 .
2.上传成功
3.连接菜刀成功
4.分析源码
同样是黑名单,但是没有对后缀名进行去 . 处理,利用windows特性,会自动去掉后缀名中最后的 . ,可在后缀名中加 . 绕过。
Pass-08
1.尝试使用 ::$DATA 加在后缀之后进行绕过
2.上传成功
3.连接菜刀成功
4.分析源码
php在window的时候如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,不会检测后缀名.且保持"::$DATA"之前的文件名,目的就是不检查后缀名。
Pass-09
1.通过尝试构造,加上点空格点绕过
2.上传成功
3.连接菜刀成功
4.分析源码
还是黑名单过滤,并删掉了文件名末尾的点,路径拼接的是处理后的文件名,通过构造 点+空格+点 绕过过滤。
Pass-10
1.直接上传发现把后缀php替换为空
2.这样可以使用双写绕过
3.上传成功
4.连接菜刀成功
5.分析源码
设置黑名单,把有问题的后缀名都替换为空,但是可以利用双写绕过。
Pass-11
1.直接上传,提示
2.应该是用到了白名单,抓包查看,尝试使用%00截断进行绕过
3.上传成功
4.菜刀连接成功
5.分析源码
白名单机制,但是$img_path直接拼接,因此可以利用%00截断绕过。
Pass-12
1.上传抓包查看,可以使用00截断,php后空格十六进制的20改为00
2.上传成功
3.菜刀连接成功
4.源码分析
同样是白名单,这次的save_path是通过post传进来的,还是利用00截断,但这次需要在二进制中进行修改,因为post不会像get对%00进行自动解码
Pass-13
1.制作图片马,copy 1.jpg /b + shell.php /a webshell.jpg
2.上传图片马
3.上传成功
4.分析源码
通过读文件的前2个字节判断文件类型,因此直接上传图片马即可。也可以在一句话文件内容前面加图片的标识例如GIF89a。
Pass-14
1.同样直接上传图片马
2.上传成功
3.分析源码
这里使用getimagesize函数获取文件类型,还是直接就可以利用图片马就可进行绕过。也可以在一句话文件前加图片标识码例如GIF89a。
Pass-15
1.同样可以使用图片马上传
2.上传成功
3.源码分析
这里是用php_exif模块来判断文件类型,还是直接就可以利用图片马就可进行绕过。
Pass-16
1.直接上传图片马
2.成功上传
3.分析源码
综合判断了后缀名、content-type,以及利用imagecreatefrompng
判断是否为png图片,最后再做了一次二次渲染。
Pass-17
1.提示代码审计,所以先分析下源码
这里先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名,否则删除,因此我们可以上传1.php只需要在它删除之前访问即可,可以利用burp的intruder模块不断上传,然后我们不断的访问刷新该地址即可。
2.抓包转到intruder模块,进行不断上传
3.在不断上传的中,不停刷新浏览器地址,即可访问到文件内容
Pass-18
1.通过代码审计,这个对文件后缀名做了白名单判断,然后会一步一步检查文件大小、文件是否存在等等,将文件上传后,对文件重新命名,同样存在条件竞争的漏洞。可以不断利用burp发送上传图片马的数据包,由于条件竞争,程序会出现来不及rename的问题,从而上传成功
2.通过条件竞争,图片马来不及改名就上传了
3.用文件包含查看文件
Pass-19
1.源码审计,发现move_uploaded_file()函数中的img_path是由post参数save_name控制的,因此可以在save_name利用00截断绕过
2.上传成功
3.文件执行成功
Pass-20
1.代码审计
2.通过上传一个php文件,改包
完。