文件上传漏洞
0x0 WHAT-什么是文件上传漏洞
文件上传漏洞是指服务器未对用户上传的文件做限制,导致用户可以肆意上传可执行的文件
黑客上传恶意可执行文件,导致网站被控制
0x1 WHY-上传漏洞可能产生的原因
0x1.1 本地过滤绕过
- 用户可以通过禁用JS来绕过
0x1.2 远端限制绕过
- 更改请求消息头绕过,修改content-type - content-type:image/jpg
-
Magic检测绕过 - 在shell前添加字节进行绕过
-
后缀绕过 - php / php5 / pht / phtml / shtml / pwml / phtm /pHp
- 系统命名绕过 - Windows系统中,上传 index.php. 会重命名为 . ,可以绕过后缀检查 - index.php%20 、 index.php:1.jpg 、 index.php::$DATA - index.php/. 或者 ./aa/../index.php/.
- 查找中间间可能存在的解析漏洞
- Apache
- 从右往左解析,如果解析失败就解析下一个后缀
- nginx
- 畸形解析漏洞:test.jpg%00xxx.php
- 访问链接加:/xxx.php test.jpg/xxx.php
- iis:
- IIS6.0文件解析 xx.asp;.jpg
- IIS6.0目录解析 xx.asp/1.jpg
- IIS7.0畸形解析 xxx.jpg/x.asp
- Apache
0x1.3 攻击技巧
- Apache重写Getshell
- 上传.htaccess 将.png文件按照php文件进行解析
AddType application/x-httpd-php .png
php_flag engine 1
- 上传.htaccess 将.png文件按照php文件进行解析
0x2 防御技巧
- 使用白名单限制上传文件的类型
- 使用更严格的文件类型检查方式
- 限制Web Server对上传文件夹的解析