>>客户端
防御
使用 js 函数检测扩展名。
绕过
- 开启浏览器的禁用 js 功能。
- F12 在源码中删除相关 js 函数。
- F12 修改 js 函数里的扩展名 list 。
>>服务端
MIME类型检测
抓包,改 Content-Type 。
扩展名黑名单
漏洞源于操作系统特点、PHP 特点及服务器解析漏洞。
Windows 特点:(需要服务器运行在 Windows 上)
-
对大小写不敏感
- 绕过:抓包修改扩展名如 “.phP” 。
- 限制:需要 PHP 版本为 5.2.x+Apache、5.4.x+Apache 才能识别这样的扩展名。
-
自动去除扩展名末尾的空格、点、“::$DATA”
- 绕过:抓包,依此修改扩展名,最终上传后都会变成 xxx.php 。
- 不必担心 PHP 版本。
PHP 特点:
Apache 解析漏洞:
文件内容检测
图片马制作:
-
标准马:执行命令copy/b 图片名+文件名 图片马名 。 -
简易马:在 <?php ?> 前加 GIF89a ,并将 .php 改为 .gif 。 -
简易马比较鸡肋,即需要文件包含来解析,但可行度又不及标准马,一般不用。
图片马需要被文件包含解析才能发挥作用,单纯访问上传的图片马是没用的。
检测方式:
- 检测文件头(前2个字节):简易、标准马均可突破。
- 使用 getimagesize 函数:简易、标准马均可突破。
- 使用 exif_imagetype 函数:需标准马才能突破。
开发者
条件竞争:
二次渲染:
代码逻辑:
危险扩展名替换: ???????如检测到扩展名为 “.php” ,则替换为空,使其无法被解析,可双写为 “.pphphp" 绕过。 ???????需要查看源码知道怎么个替换法。
|