[8]-文件上传漏洞-服务器关联型漏洞
学习服务器关联型漏洞以及其他更高阶上传漏洞的绕过和利用技巧,讲解足够多并且比较高级的绕过技巧的同时,积累漏洞利用方式,引发思考,希望能从量变到质变,一方面是实战利用;另一方面,漏洞挖掘、检测时启发式思考。
一、与webserver有关漏洞
1、IIS解析漏洞
- 存在版本
ISS 5.x/6.0- 漏洞触发原理
- 当创建
.asp
的文件目录的时候,在此目录.asp/
下的任意文件,服务器都解析为asp
文件- 服务器默认不解析
;
以后的内容- 漏洞利用形式:
www.xxx.com/xx.asp/xx.jpg
会被解析成asp
文件www.xxx.com/xxx.asp;.jap
会被解析为asp
文件- 具体细节
- windows平台下,所有的程序会去调用很多的外部动态链接库
- ISS解析asp文件时
- 在5.x-6.0的版本中,会调用
asp.dll
,去解析所访问的文件资源- 而在解析所访问的目录时,代码有处理不完善的地方,从而触发漏洞
- 此外由于微软嘴硬,不承认其为漏洞,故至今未曾修复。
- 深入探究漏洞
逆向常用且较好用的工具:IDA
以及F5
插件,组合逆向asp.dll
就可以找到相关的代码段
2.Nginx解析漏洞
- 触发条件
低版本nginx- 原理
低版本Nginx中存在一个由PHP-CGI导致的web解析漏洞
PHP的配置文件中一个关键选项cgi.fix_pathinfo
在php.ini
配置文件中,默认是开启的
当URL中有不存在的文件时,PHP就会默认向前解析- 漏洞利用流程
- 访问:
www.xx.com/phpinfo.jpg/1.php
(注:1.php
不存在)- 此时就会解析
phpinfo.jpg
文件,但按照php
格式解析
- 具体细节
- 访问后端托管在Nginx服务
- 用户访问后端托管在Nginx的服务时
- 如果URL中有不存在的文件,则PHP默认就会向前解析
- 直到解析到能够解析的文件为止。
- 内容检测绕过方式
通过内容检测的一个jpg文件执行php,见后续
3.Apache解析漏洞
- 触发条件
1.x和2.x版本中- 原理
Apache 1.x和2.x版本中,Apache从右至左开始判断后缀,跳过非可识别后缀,直到找到可识别后缀为止,然后将该可识别后缀进行解析。- 漏洞利用流程:
- 上传
shell.php.test
- 访问
shell.php.test
,服务器解析时,按照php格式解析
二、典型绕过及利用方式
1.前端验证绕过
- 前端输入不可信---web安全根本性原因
对于前端而言,非常好绕过,方式非常多。- 漏洞成因:
只在前端利用JS进行校验,而未曾在后端校验- 漏洞利用方式
- 使用
Burp Suite
抓包,修改发送至后端的数据包内容,然后发送至服务器- 通过浏览器禁止/删除JavaScript代码
2..htaccess
绕过
.htaccess
概念
.htaccess
文件即:分布式配置文件,- 该文件作用
提供一种方式,使得web服务器能对整个网站的配置来做一个灵活的调整,使得配置文件可以随文件夹不同而不同,其所放置的文件夹及所有的子文件夹都会受此影响。
其语法同apache
主配置文件- 如何利用
场景:启用了.htaccess
文件的网站,
利用:使用此文件类型来绕过限制较全面的黑名单过滤
原理:告知,可以某文件夹目录下可以去解析我们指定的某一类文件。- 实战场景流程
- 上传
.htaccess
文件,文件内容设置为AddType application/x-httpd-php .test
,即:将.test
文件解析为php
文件类型- 上传一句话木马,文件名称为
shell.test
- 访问
shell.test
即可执行一句话木马- 思考:
为什么shell.test
会执行?
3.大小写绕过
- 基础
与操作系统有关,windows操作系统对于大小写不敏感,而Linux对大小写敏感的特性
针对黑名单过滤
利用对url处理,对大小写不敏感特性- 场景
黑名单禁止上传.php
文件,则我们可以尝试上传.pHp
、PHP
等等此类文件,利用其对大小写敏感特性- 注意
虽然Linux对于大小写敏感,但事实上,也可以完成大小写绕过。- Linux绕过成因
Linux服务器的URL区分大小写,对用户不友好,因此一般都会手动配置部署在Linux的webapp对大小写不敏感。
本文来自博客园,作者:缪白(Miubai),转载请注明原文链接:https://www.cnblogs.com/Miubai-blog/articles/17066568.html