labs(1

1、Pass-01-js检查
查看代码后端没有对上传文件进行过滤 , 且上传php木马代替图片:没有后端交互php登录页面改为响应式网站,只有前端;
修改前端代码;先点击浏览选中php木马文件,将文件上传位置代码内容中的onsubmit中的内容删除(删除return checkFile()),然后点击上传文件就显示木马文件上传成功;
2、Pass-02- content-type(MIME文件类型)
从代码中发现只对上传文件的Content-Type类型判断,通过burp抓包,修改Content-Type类型为图片类型进行绕过 , 就可以上传成功;
3、Pass-03-.php3和.php5后缀绕过
从代码中可看出只允许上传asp、aspx、php和jsp后缀文件,但有些版本支持php3和php5;可通过这个漏洞上传木马;就可直接将木马文件后缀改为php3或php5,完成木马文件上传:
4、pass-04-PHP 和 Windows特性绕过
分析代码发现,这里对上传的后缀名的判断增加了 , php3.php5….已经不允许上传 , 利用PHP 和 Windows环境的叠加特性 , 以下符号在正则匹配时的相等性:
利用PHP 和 Windows环境的叠加特性,以下符号在正则匹配时的相等性: 双引号” = 点号.
大于符号> = 问号?
小于符号< = 星号*
注意,在windows直接修改文件名称,肯定是不让你加冒号的 , 所以我们先以图片的格式上传,然后抓
包,修改文件名称,加上冒号,上传一个名为 tj.php:.jpg 的文件
上传上去之后的效果,由于文件名称不允许出现冒号 , 所有windows就将冒号和后面的字符都去掉了,就剩下123.php了,但是有个点就是 , 文件为0kb;
然后将文件名改为 tj. 或 tj.>>< 后再次上传,重写 tj.php 文件内容,Webshell代码就会写入原来的 tj.php 空文件中 。
5、pass-05-大小写混合绕过
但是 $file_ext = strtolower($file_ext); //转换为小写 这一句没有了,我们就可以使用,文件名后缀大小写混合绕过,把x.php改为x.phP来上传:
6、pass-06&07-空格和点配合绕过
从代码中看出将上传的文件名都改为小写了 , 利用Windows系统的文件名特性 。用burpsuite抓包修改,将上传的文件名shell.php文件名最后增加空格和点,写成shell.php .,上传后保存在Windows系统上的文件名最后的一个.会被去掉,实际上保存的文件名就是shell.php;
7、pass08-基于文件流特性::DATA绕过
从代码中看php登录页面改为响应式网站,少了 $file_ext = str_ireplace(‘::$DATA‘, ‘‘, $file_ext);//去除字符串::$DATA这一句 , 我们可以采用Windows文件流特性绕过,文件名改为shell.php::$DATA, 上传成功后保存的文件名其实是shell.php:

labs(1

文章插图
8、pass09-点空格点绕过
原理同Pass-06,上传文件名后加上点+空格+点,改为 shell.php. . (php后面加点空格点)就可以绕过 , 上传文件;
9、pass10-双写绕过
从代码中发现,由于 $file_name = str_ireplace($deny_ext,””, $file_name); 只对文件后缀名进行一次过滤,可通过双写文件名绕过,文件名改成shell.pphphp:
10、pass11&19-截断绕过
这个属于白名单绕过,这是php语言自身的问题 , php低版本存在的漏洞(这一关上传前需将phpstudy中php版本修改到5.3.4版本以下才能实现,同时把magic_quotes_gpc关闭) 。
分析代码,这是以时间戳的方式对上传文件进行命名 , 使用上传路径名截断绕过,不过这需要对文件有足够的权限,比如说创建文件夹 , 上传的文件名写成shell.jpg, save_path改成../upload/shell.php (shell.php.jpg经过url转码后会变为shell.php00.jpg),最后保存下来的文件就是shell.php:
11、pass12-0x00绕过
原理同Pass-11,上传路径0x00绕过 。利用Burpsite的Hex功能将save_path改成../upload/shell.php【二进制00】形式(这里的二进制00先在php后面加个空格 , 再再hex中将空格的二进制数20改为00,同时将filename后面的shell.php的后缀php改为jpg,就可以完成上传绕过):
12、pass13&14&15-图片文件头绕过
绕过文件头检查,添加GIF图片的文件头GIF89a,绕过GIF图片检查 。
13、pass16-二次渲染绕过
原理:是将用户上传过来的文件数据重新读取保存到另外一个文件中,那么在读取写入的过程中 , 将特殊的数据剔除掉了 。将一个正常显示的图片,上传到服务器 。寻找图片被渲染后与原始图片部分对比仍然相同的数据块部分 , 将Webshell代码插在该部分,然后上传 。具体实现需要自己编写Python程序或者从github上找些可绕过的图片马 , 人工尝试基本是不可能构造出能绕过渲染函数的图片webshell的 。
使用可绕过二次渲染图片马上传绕过:
14、pass17-时间竞争绕过
利用条件竞争删除文件时间差绕过 。使用命令pip install hackhttp安装hackhttp模块,运行下面的Python代码即可 。如果还是删除太快 , 可以适当调整线程并发数 。
#!/usr/bin/env python
#coding:utf-8
#Build By LandGrey
import hackhttp
from multiprocessing.dummy import Pool as ThreadPool
def upload(lists):
【labs(1】本文到此结束 , 希望对大家有所帮助!

猜你喜欢