55. 文件上传篇——绕服务器检测

服务器端扩展名检测黑名单绕过

原理:

当浏览器将文件提交到服务器端的时候,服务器端会根据设定的黑白名单对浏览器提交上来的文件扩展名进行检测,如果上传的文件扩展名不符合黑白名单的限制,则不予上传,否则上传成功。

绕过方法:

将一句话木马的文件名【evil.php】,改成【evil.php.abc】(奇怪的不被解析的后缀名都行)首先,服务器验证文件扩展名的时候,验证的是【.abc】,只要该扩展名符合服务器端黑白名单规则,即可上传。

JS检测上传文件绕过

原理:

上传文件时,对方使用JavaScript语句语法检测上传文件的合法性问题。

绕过方法:

在本地浏览器客户端禁用JS即可。使用火狐浏览器的NoScript插件、IE中禁用掉JS等方式实现。

重写规则绕过

原理:

上传覆盖.htaccess文件,重写解析规则,将上传的带有脚本马的图片以脚本方式解析。

绕过方法:

在可以上传.htaccess文件时,先上传.htaccess文件,覆盖掉原先的.htaccess文件;再上传【evil.gif】文件。

使用如下的.htaccess语句,即可将【evil.gif】文件以php脚本方式解析。

 

SetHandler application/x-httpd-php

 

其他方式绕过

原理:

部分程序员的思维不严谨,并使用逻辑不完善的上传文件合法性检测手段,导致可以找到方式绕过其检测方式。

绕过方法

1. 后缀名大小写绕过

用于只将小写的脚本后缀名(如php)过滤掉的场合;

例如:将Burpsuite截获的数据包中的文件名【evil.php】改为【evil.Php】

2. 双写后缀名绕过

用于只将文件后缀名,例如"php"字符串过滤的场合;

例如:上传时将Burpsuite截获的数据包中文件名【evil.php】改为【evil.pphphp】,那么过滤了第一个"php"字符串"后,开头的'p'和结尾的'hp'就组合又形成了【php】。

3. 特殊后缀名绕过

用于检测文件合法性的脚本有问题的场合;

例如:将Burpsuite截获的数据包中【evil.php】名字改为【evil.php6】,或加个空格改为【evil.php 】等。

你可能感兴趣的:(【信息安全】,———渗透测试基础,【渗透测试基础】,信息安全)