目录
前言:
正文:
0x01. 中间件-Apache
1. Apache解析漏洞
2. apache - 换行解析漏洞
3.不常见后缀名(绕黑名单)
4.分布式配置文件(.htaccess)
0x02 中间件 - IIS
1. iis - PUT漏洞
2. iis - 短文件名猜解 漏洞
3.iis - 解析漏洞
0x03 .中间件- Nginx
1.畸形解析漏洞
2.CRLF注入
3.目录穿越
文末
前言:
有时候会连中间件,服务器,容器分不清楚,我当时看过一篇博客,讲的很详细。于是我摘抄出来
掌握中间件漏洞,对渗透测试有很大的帮助,例如 Apache和iis的解析漏洞,以及weblogic反序列化漏洞
基础概念与作用
这里只介绍web中间件、web服务器、web容器,因为除了web以外,其概念还可以扩展为数据库等。
web服务器
web服务器用于提供http服务,即向客户端返回信息,其可以处理HTTP协议,响应针对静态页面或图片的请求,控制页面跳转,或者把动态请求委托其它程序(中间件程序)等。
web中间件
web中间件用于提供系统软件和应用软件之间的连接,以便于软件各部件之间的沟通,其可以为一种或多种应用程序提供容器。
web容器
web容器用于给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,是中间件的一个组成部分,它实现了对动态语言的解析。比如tomcat可以解析jsp,是因为其内部有一个jsp容器。
所属的类别
web服务器:IIS、Apache、nginx、tomcat、weblogic、websphere等。
web中间件:apache tomcat、BEA WebLogic、IBM WebSphere等。
web容器: JSP容器、SERVLET容器、ASP容器等。注意:web中间件与web服务器是有重叠的,原因在于tomcat等web中间件也具备web服务器的功能。
本段摘抄于一位前辈的一段,具体可以看看吧点击这里跳转
正文:
0x01. 中间件-Apache
1. Apache解析漏洞
① 漏洞介绍及成因
Apache文件解析漏洞与用户的配置有密切关系,严格来说属于用户配置问题。
Apache文件解析漏洞涉及到一个解析文件的特性:
Apache默认一个文件可以有多个以点分隔的后缀,当右边的后缀无法识别会继续向左识别,当我们请求这样一个文件:shell.php.aaa
当发现php时,发现识别成功,于是开始执行
②漏洞修复
将AddHandler application/x-httpd-php .php的配置文件删除。
③利用条件为:
- 使用module模式,且正则符合条件
- 文件扩展名中至少带有一个.php
2. apache - 换行解析漏洞
(CVE-2017-15715)
其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
这个漏洞我不多解释
3.不常见后缀名(绕黑名单)
php、php3、php4、php5、phpt、phtml
4.分布式配置文件(.htaccess)
.haccess 提供了针对目录改变配置的方法,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录
意思就是说 只要这个开启了,一切都听.htaccess的先进入命令行命名 就可以生成 .haccess文件了
ren 1.txt .htaccess AddType application/x-httpd-php .jpg
同时,1.txt里面要有上面这个代码。告诉给服务器说:把jpg文件当做php解析
例如:
在cmd中使用命令 ren 1.txt .htaccess
成功的自动生成了一个配置文件
步骤:先上传配置文件 .htaccess
然后 再上传图片马
0x02 中间件 - IIS
1. iis - PUT漏洞
①、漏洞介绍及成因
IIS Server 在 Web 服务扩展中开启了 WebDAV ,配置了可以写入的权限,造成任意文件上传。
版本: IIS6.0
②、漏洞复现
1) 开启WebDAV 和写权限
2) 利用burp测试
抓包,将GET请求改为OPTIONS
3)利用工具进行测试
成功上传,再上传一句话木马,然后用菜刀连接,getshell
3、漏洞修复
关闭WebDAV 和写权限
2. iis - 短文件名猜解 漏洞
1、漏洞介绍及成因
IIS的短文件名机制,可以暴力猜解短文件名,访问构造的某个存在的短文件名,会返回404,访问构造的某个不存在的短文件名,返回400。
2、漏洞复现
1)、在网站根目录下添加aaaaaaaaaa.html文件
3) 进行猜解
3、漏洞修复
修复方法:
1)升级.net framework
2)修改注册表禁用短文件名功能
快捷键Win+R打开命令窗口,输入regedit打开注册表窗口,找到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的 NtfsDisable8dot3NameCreation这一项的值设为 1,1代表不创建短文件名格式,修改完成后,需要重启系统生效
3)CMD关闭NTFS 8.3文件格式的支持
4)将web文件夹的内容拷贝到另一个位置,如c:\www到d:\w,然后删除原文件夹,再重命名d:\w到c:\www。
修复后:
4、局限性
1) 此漏洞只能确定前6个字符,如果后面的字符太长、包含特殊字符,很难猜解;
2) 如果文件名本身太短(无短文件名)也是无法猜解的;
3) 如果文件名前6位带空格,8.3格式的短文件名会补进,和真实文件名不匹配;
3.iis - 解析漏洞
补充 : iis 黑名单绕过
IIS6.0除了将ASP后缀当做ASP进行解析的同时,当文件后缀名字为.asa .cer .cdx 也会当做asp去解析,这是因为IIS6.0在应用程序扩展中默认设置了.asa .cer .cdx 都会调用 asp.dll
①. 分号(;)截断
IIS6.0 第二个漏洞,分号
;
分号(;)绕过,这个分号等于php版本问题导致的00截断一样
所以在上传的时候抓包,然后asp的马
改为qwe.asp;.jpg
他会截断,读取到qwe.asp 但是必须要把jpg带上,不然无法访问②~③特殊符号造成的解析漏洞
IIS5.1和IIS7.5无此漏洞。
IIS 6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:qwe.asp;.jpg
他将当做asp进行解析qwe.asp/123.jpg
他将当做asp进行解
理论上就是随便写个 xxx.jpg 然后它会去访问这个图片
如果不存在就会返回上个文件去执行请求 /aaa.asp;xxxx.jpg
N1:从头部查找查找 “.”号,获得 .asp;xxxx.jpg
N2:查找”;”号,如果有则内存截断
N3:查找”/“,如果有则内存截断
最终,将保留下来 .asp 字符串,从META_SCRIPT_MAP脚本映射表里与扩展名匹配对比,并反馈给了asp.dll处理
网上流传说法:
.asp结尾的目录下面,而被IIS当成可执行文件来解析
以及asp从左往右读,接下去的话会按照asp解析。这个具体不清楚
aa.asp/1.b
例如这个例子,这个1.b也会按照asp解析
0x03 .中间件- Nginx
1.畸形解析漏洞
Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设SCRIPT_FILENAME。
当访问www.xx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME(绝对路径)传递给PHP CGI,如果开启了cgi.fix_pathinfo=1选项(这个默认值就是1,所以没有设置过就是开启),那么就会触发在PHP中的如下逻辑:也是一个逻辑问题,所以说我们只需要在正常的.jpg后面加/.php就可以成功的绕过解析
进入靶场
上传成功,在去访问路径,在路径的后面加个
/.php
原理就是找上级文件意思漏洞修复
1) 将php.ini文件中的cgi.fix_pathinfo的值设为0.这样php在解析1.php/1.jpg这样的目录时,只要1.jpg不存在就会显示404;
2) 将/etc/php5/fpm/pool.d/www.conf中security.limit_ectensions后面的值设为.php
2.CRLF注入
1、 漏洞简介及成因
CRLF时“回车+换行”(\r\n)的简称。
HTTP Header与HTTP Body时用两个CRLF分隔的,浏览器根据两个CRLF来取出HTTP内容并显示出来。
通过控制HTTP消息头中的字符,注入一些恶意的换行,就能注入一些会话cookie或者html代码,由于Nginx配置不正确,导致注入的代码会被执行。
2、 漏洞复现
访问页面,抓包
请求加上/%0d%0a%0d%0a<img src=1 οnerrοr=alert(/xss/)>
由于页面重定向,并没有弹窗。
3、 漏洞修复
Nginx的配置文件/etc/nginx/conf.d/error1.conf修改为使用不解码的url跳转。
3.目录穿越
1、 漏洞简介及成因
Nginx反向代理,静态文件存储在/home/下,而访问时需要在url中输入files,配置文件中/files没有用/闭合,导致可以穿越至上层目录。
2、 漏洞复现
访问:http://192.168.139.128:8081/files/
访问:http://192.168.139.128:8081/files../
成功实现目录穿越:
3、 漏洞修复
Nginx的配置文件/etc/nginx/conf.d/error2.conf的/files使用/闭合。