文章目录
一、绕过客户端检测
客户端检测是利用JavaScript代码对上传的文件进行判断,因此禁用掉JavaScript即可绕过检测上传Webshell。
一、绕过服务端检测
1.绕过MIME类型检测
修改MIME类型为合法类型即可,一般为图片类型。
2.绕过后缀名检测
(1)绕过黑名单后缀名检测
1) 解析后缀绕过
修改后缀名即可,如php3、php5等。
2) 配置文件+图片绕过
- 先上传.htaccess文件。
- 然后上传php文件,抓包,修改为对应名称即可。
3)点空格点绕过
利用Windows系统的文件名特性,会自动去掉后缀名最后的.,上传tset.php. .进行绕过。
4)后缀大小写绕过
利用Windows对大小写不敏感的特性。上传as.PHP进行绕过。
5)空格绕过
在文件名后面增加空格。
6)点绕过
在文件名后添加.。
7)::$DATA绕过
::$DATA是Windows系统中用于存储文件实际数据的隐藏属性,它对于普通用户来说是透明的,只有系统和特定程序才能访问和使用它。
8)双写后缀绕过
(2)绕过白名单后缀名检测
由于白名单限制较大,为确保可行,以下是环境配置:
phpStudy2018
php版本5.2.17
php.ini的magic_quotes_gpc的值为Off
。
php.ini的;extension=php_exif.dll修改为extension=php_exif.dll
httpd.conf的#AddType application/x-httpd-php .php去掉井号注释并添加.phtml
1)%00截断绕过
2)0x00截断绕过
- 添加文件名和一个空格。
- 找到上图位置,把20改为00并回车。
3.绕过文件内容检测
(1)图片马绕过
图片马可理解为在图片里加入木马。
打开cmd,执行以下命令,制作图片马。
将文件上传后可以发现文件内容的php代码还在。
再配合文件包含漏洞进行利用。
(1)绕过二次渲染
用正常的图片马上传发现文件里的php代码消失了,并且图片看起来也没有任何的变化,说明它在不改变图片原内容的情况下,重新制作了图片。那么就应该找到那个没有改变的地方,并插入木马。
- 上传一张gif图片,然后再将图片下载下来,比较两张图片的差异。在相同的地方插入php代码并重新上传即可。
四、其他绕过方式
1.条件竞争绕过
- 准备一个php文件,内容为:
<?php fputs(fopen('shell.php', 'w'), "<?php phpinfo();?>");?>
上传该文件并抓包,对该请求包进行重放,也可以使用Burp Suite的Null payloads进行爆破。
并同时访问该文件,也可以用爆破的方式,出现状态码200说明访问到该文件。
访问新生成的php文件。
2.条件竞争+解析漏洞绕过
由于是白名单验证,因此只能上传符合白名单的文件。再配合Apache的解析漏洞,在Apache版本符合条件下,对mime.types中没有涉及的文件后缀不会解析,查看httpd.conf文件下的mime.types,没有发现7z后缀,说明不会解析7z文件,比如test.php.7z这个文件,Apache的解析是从后往前,当7z不能解析时,其向前解析一直到可以解析的后缀为止,所以将test.php.7z当作test.php执行。
- 首先上传test.php.7z然后抓包,并对该请求包进行多次的重放。
- 访问test.php.7z并进行多次重放。
- 成功生成info1.php。
3.绕过move_uploaded_file
实际上是绕过黑名单验证