一、前端验证绕过
检测恶意代码依靠后端检测,前端检测(JS)相当于没有检测
(1)修改浏览器设置,直接禁用JS
(2)使用Burp抓返回包,删除JS检测代码
(3)前端代码只能在浏览器执行,先将恶意代码更改为可执行后缀,使用Burp抓包,更改上传文件后缀名
二、Content-Type方式绕过
白名单:只允许白名单上的内容。例如只允许上传jpeg、png、gif后缀的文件,后端会检测文件的类型
在文件上传解析漏洞中,后缀名很重要,后端可能会更改前缀名,但后缀名一般不会更改。
先上传一个JPG文件,使用Burp抓包后,修改文件名后缀,因为后端只检测Content-Type,不再检测文件名后缀,可以绕过。而WEB容器是根据后缀来识别格式的,只要上传的文件后缀是.php就可以识别。
三、黑名单绕过
黑名单:禁止黑名单上的内容。如果允许上传不规范后缀名的文件,例如1.a,证明是黑名单机制。
能够被解析的文件扩展名:
jsp jspx jspf
asp asa cer aspx
php php3 php4 php5 phtml
exe exee
四、.htaccess文件绕过
开发者禁止了(”.php”,”.php5”,”.php4”,”.php3”,”.php2”,”php1”,”.html”,”.htm”,”.phtml”,”.pHp”,”.pHp5”,”.pHp4”,”.pHp3”,”.pHp2”,”pHp1”,”.Html”,”.Htm”,”.pHtml”,”.jsp”,”.jspa”,”.jspx”,”.jsw”,”.jsv”,”.jspf”,”.jtml”,”.jSp”,”.jSpx”,”.jSpa”,”.jSw”,”.jSv”,”.jSpf”,”.jHtml”,”.asp”,”.aspx”,”.asa”,”.asax”,”.ascx”,”.ashx”,”.asmx”,”.cer”,”.aSp”,”.aSpx”,”.aSa”,”.aSax”,”.aScx”,”.aShx”,”.aSmx”,”.cEr”,”.sWf”,”.swf”)大量的恶意文件后缀名。
.htaccess文件全称是Hypertext Access(超文本入口),也被称为分布式配置文件,提供了针对目录改变配置的方法。在一个特定的文档目录中放置一个包含一个或多个指令的文件,来作用于此目录及其所有子目录。
.htaccess功能:
文件夹密码保护、用户自定义重定向、自定义404页面、扩展名伪静态化、禁止特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表
但是,这个强大的功能在Apache中是默认不开启的,在伪静态中可以试一试。
AddType application/x-httpd-php .jpg
这个指令代表.jpg文件会当做php来解析
如果无法将文件命名为.htaccess,可以使用CMD的重命名,注意,只需要后缀,不需要前缀。以下的命令为CMD命令,将1.txt命名为.htaccess。
CMD:ren 1.txt .htaccess
(1)先上传jpg木马
(2)建立txt文件,写入指令AddType application/x-httpd-php .jpg,重命名为.htaccess
(3)上传.htaccess文件
五、后缀大小写绕过
开发者限制了.htaccess文件的上传,但没有强制将后缀名转化为小写。
六、文件后缀(空)绕过
Windows会自动去除后缀名后多余的空格,即php和php空格是相同的,但对于后端检测代码来说,php和php空格并不相同。所以,绕过检测时可以增加一个空格,上传到服务器后,Windows又会自动去除空格。
使用Burp抓包,在文件名后增加一个空格。
上传流程:
文件上传 -> 检测 -> 上传到缓存文件(tmp) -> 后端代码将其移动到特定目录并重命名
七、文件后缀(点)绕过
Windows会自动清除后缀名后多余的点,而后端检测代码不会。使用Burp抓包,在文件名后添加一个点。
八、::$DATA(Windows文件流绕过)
::$DATA(Windows文件流绕过)利用了NTFS交换数据流(ADS),ADS是NTFS磁盘格式的一个特性,在NT