声明:
由于笔者能力有限,难免出现各种错误和漏洞。全文仅作为个人笔记,仅供参考。
笔记内容来源于各类网课。
环境:蚁剑,upload-labs
一、概述
- 使用.htaccess绕过黑名单检测攻击。(服务端)
- 后缀名大小写绕过黑名单检测攻击。(服务端)
- 空绕过黑名单检测攻击。(服务端)
- 点绕过黑名单检测攻击。(服务端)
- ::DATA绕过黑名单检测攻击。(服务端)
二、攻击
打开Pass-04,我们尝试上传webshell。提示不允许上传。
按照之前的方法验证,判断是服务端检测后缀名,我们使用php其他可以解析的后缀绕过。
但是依然被过滤了。但可以上传.htaccess文件(是Apache的配置文件)。
我们上传如下内容的.htaccess文件。
SetHandler application/x-httpd-php
这样我们所有的文件可以被当作php解析。
前提条件:
mod_rewrite模块开启
AllowOverride All
上传ht.htaccess文件,在BurpSuite中修改请求,将ht.htaccess的文件名删除,只保留后缀名。
上传webshell.jpg文件。
使用蚁剑连接。
打开Pass-05。上传webshell.php被过滤,同时判断处这是服务端黑名单过滤。
- 我们上传其他可解析后缀名(php3,php4...)被过滤
- 我们上传.htaccess也被过滤
尝试使用后缀名大小写绕过,上传webshell.pHP。
使用蚁剑连接即可。
打开Pass-06,同时Pass05上传依然是被黑名单过滤,并且.htaccess和大小写无法绕过。
我们尝试在后缀名后增加几个空格绕过。
上传webshell.php,在BurpSuite中修改为webshell.php ,上传成功。
打开Pass-07,同上依然是黑名单过滤,但是不能使用空格绕过。
我们尝试使用在后缀名后加入点(.)来绕过黑名单,在windows中最后的一个点会被默认省略掉。
同样使用BurSuite进行修改,webshell.php改为webshell.php.,生成成功。
打开Pass-08,依然是服务端黑名单检测,大小写、空格、点都不能绕过。
在windows+php环境中,文件名尾部使用'::$DATA',利用的是Windows的NTFS文件系统中的DATA属性。windows把::$DATA之后的数据当成文件流处理,不会检测后缀名,且保持"::$DATA"之前的文件名。利用windows特性,可在后缀名中加"::$DATA"绕过。(来源于参考其他博客)
我们生成webshell.php,在BurpSuite中修改为webshell.php::$DATA,上传成功。
使用蚁剑连接时不包含::$DATA。