当前位置:   article > 正文

Web中间件漏洞复现合集---IIS篇_iis 漏洞复现

iis 漏洞复现

目录

前言

一、Win2003_IIS6.0环境搭建

二、PUT漏洞

1.漏洞介绍

2.漏洞复现

3.报错问题解决

4.漏洞修复方案

三、短文件名猜解

1.漏洞介绍

2.复现过程

3.漏洞修复

三、Win2008 R2_IIS环境搭建

四、远程代码执行

(一)Cve-2017-7269(0day漏洞)

1.漏洞介绍

2.漏洞复现

3.漏洞修复

(二)cve-2015-1635

1.漏洞介绍

2.漏洞复现

3.漏洞修复

五、解析漏洞

(一)目录解析

1.漏洞介绍

2.漏洞复现

(二)文件解析

1.漏洞介绍

2.漏洞复现

(三)漏洞修复


前言

        从大佬们那里学习了一下Web中间件相关漏洞,这次尝试复现IIS常见的一些漏洞,包括PUT漏洞、短文件名猜解、远端代码执行、解析漏洞等。复现也有靶场环境搭建,漏洞介绍与修复方法。

并提供一下我复现过程中使用的工具/软件:(iiswrite/iisputscanner/iis6.0exe/3389.bat)

链接:百度网盘 iis漏洞复现工具

提取码:qtqu

一、Win2003_IIS6.0环境搭建

1.安装win2003:

具体安装过程我就不写了,安装好后我的win2003的IP为192.168.111.138。

镜像包链接:百度网盘 win2003 r2 sp2镜像包

提取码:ao2w

%提供一个密钥:

DVB4Y-KF6GK-MT3XX-FW3HC-VXTB6

2.安装IIS:

2.1依次点击开始->控制面板->添加或删除程序->添加/删除Windows组件(左侧第三个)->找到应用程序服务器:

2.2双击打开(或点击详细信息),如图勾选:

2.3确定后,点击下一步安装,完成后可以在开始->管理工具->进入Internet信息服务(IIS)管理器:

2.4至此一个简单的IIS6.0搭建完成。

二、PUT漏洞

1.漏洞介绍

根据put协议,当我们浏览某个网站,访问某个资源时,如果网站存在这个资源,则会进行替换,若网站不存在这个资源,则会创建这个资源,所以我们可以利用put直接对网站写shell。

而IIS Server 如果在 Web 服务扩展中开启了 WebDAV ,配置了可以写入的权限,结合put协议就会造成任意文件上传漏洞。

2.漏洞复现

2.1在靶机win2003搭建好IIS服务(iis6.0),开启IIS的WebDAV功能:

2.2选择左侧网站->默认网站(右击)->属性->主目录,允许写入(必需)、脚本资源访问(非必需,之后解释,这里先允许):

2.3默认网站(右击)->权限,允许来宾用户的写入权限,IIS_WPG默认读取与运行权限即可:

2.4访问http://192.168.111.138(win2003),burp抓包,修改GET为OPTIONS发送,测试允许的方法。

2.5再使用IIS put scanner扫描一下判断是否允许put方法:

2.6如果这时候把WebDAV禁止,再次扫描发现PUT-NO:

2.7使用iiswrite工具进行iis put漏洞测试利用,首先使用PUT方法进行绕过,上传包含asp一句话木马的test.txt文件:

2.8回到靶机,发现目录下已生成相应文件:

2.9之后利用move方法将txt转为木马文件,执行后出现报错但依然可以发现生成了shell.asp文件:

2.10使用蚁剑进行连接,成功getshell:

3.报错问题解决

3.1如果网站属性中未允许脚本资源访问(如图),那么会在move方法修改txt文件时报错,但可以通过利用IIS目录解析漏洞中的文件解析漏洞,使脚本正常生成:

3.2利用IIS目录解析漏洞,在shell.asp后面加上【 ;.txt】,提交数据包成功绕过,发现网站生成了一个shell.asp;.txt文件:

3.3再次通过蚁剑连接,成功上线:

4.漏洞修复方案

4.1.在Web 服务扩展中关闭 WebDAV;

4.2.禁用访客写入权限。

三、短文件名猜解

1.漏洞介绍

IIS的短文件名机制,用户通过特殊payload访问构造的某个存在的短文件名,会返回404,访问不存在的短文件名,返回400,故而可以暴力猜解短文件名。

它使攻击者可以获取Web根目录下的文件/文件名,造成敏感信息泄露。

更多关于短文件名的原理请参考:iis短文件名猜解一晓风的博客-CSDN博客iis短文件

2.复现过程

2.1首先在默认网站根目录下创建符合字符长度的文件bbccddee.html以及文件夹webtest_efwef:

2.2同时由于使用的是IIS6.0(<8.0),需要在web服务拓展里开启ASP.NET:

2.3打开cmd命令行,进入web目录,通过dir /x命令,查看短文件名:

2.4通过访问http://your-ip/*~1*/a.aspx查看返回结果,如果是404,则代表存在短文件,如果出现bad request(400)则表示不存在:

http://192.168.111.138/*~1*/a.aspx

2.5修改访问链接,http://your-ip/XXX*~1*/a.aspx通过返回结果判断短文件名,如果是404则猜测正确。现在我们测试一下‘wa’,返回Bad Request,不存在:

http://192.168.111.138/wa*~1*/a.aspx

2.6将‘wa’修改为‘we’,发现返回404,表示该文件名正确:

http://192.168.111.138/we*~1*/a.aspx

2.7进而我们可以通过不断修改url判断完整的短文件名(最多6个),这里也可以通过编写脚本快速测试:

http://192.168.111.138/webtes*~1*/a.aspx

2.8判断出了短文件名‘webtes‘后,接下来还要判断该短文件是文件还是文件夹,通过修改访问http://your-ip/*~1/a.aspx,如果返回404则表示该短文件是文件夹:

http://192.168.111.138/webtes*~1/a.aspx

2.9接下来我们判断另一个html文件,首先判断第一个字符,测试‘c’,发现返回bad request,代表错误:

http://192.168.111.138/c*~1*/a.aspx

2.10修改字符为‘b’,发现返回404,则该短文件第一个字符为b:

http://192.168.111.138/b*~1*/a.aspx

2.11继续修改为‘bbccdc’,查看返回结果为400,说明错误需要继续测试:

http://192.168.111.138/bbccdc*~1*/a.aspx

2.12最后修改为‘bbccdd‘后返回404,成功得到短文件名:

http://192.168.111.138/bbccdd*~1*/a.aspx

2.13根据之前分辨文件夹的方法,得到返回结果400,所以判断该短文件不是文件夹:

http://192.168.111.138/bbccdc*~1/a.aspx

2.14确定了文件名,之后就以类似的方法判断文件后缀,修改http://your-ip/xxxxxx~1.XXX/a.aspx,逐一判断后缀字符,首先判断‘a’,发现返回400,继续尝试:

http://192.168.111.138/bbccdd*~1.a*/a.aspx

2.15修改到‘h’后,访问返回404,说明后缀第一个字符为h:

http://192.168.111.138/bbccdd*~1.h*/a.aspx

2.16确定了‘h’,我们可以简单猜测该文件是html文件,修改url为’htm‘(短文件后缀不超过3个),访问后返回404,所以该文件是html文件:

http://192.168.111.138/bbccdd*~1.htm*/a.aspx

2.17根据这种方法我们可以得到其他短文件,比如在put漏洞中上传的shell.asp;.txt所形成的短文件:

http://192.168.111.138/shella*~1.txt*/a.aspx

3.漏洞修复

3.1升级.net framework;

3.2修改注册表禁用短文件名功能:

快捷键Win+R打开命令窗口,输入regedit打开注册表窗口,找到路径‘HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem’,将其中的 NtfsDisabledotNameCreation这一项的值设为 1,1代表不创建短文件名格式,修改完成后,需要重启系统生效;

3.3CMD关闭NTFS 8.3文件格式的支持;

3.4将web根目录的内容拷贝到另一个位置,如c:\wwwroot到d:\wroot,然后删除原文件夹,再重命名d:\wroot到c:\wwwroot。

三、Win2008 R2_IIS环境搭建

1.安装win2008 R2

具体安装过程就不说了,很简单。安装好后的IP为192.168.111.143。

我这里提供一下镜像包:

链接:百度网盘 win2008 r2镜像包

提取码:2rhl

进入win2008安装vmware tool时会提醒你升级到sp1,否则无法安装,我这里给一下补丁网址,在虚拟机内下载安装升级补丁:

WindowsServer2008R2下载_Windows7Server2008R2SP1绿色版官方下载-华军软件园

2.安装IIS

2.1开始->管理工具->服务器管理器->点击角色->选择添加角色:

2.2默认下一步,在服务器角色选择Web服务器(IIS),点击下一步:

2.3在角色服务中勾选应用程序开发->ASP.NET,之后下一步,安装:

2.4安装完成后关闭界面,可以在服务器管理器中看到成功安装Web角色:

2.5访问界面:

四、远程代码执行

(一)Cve-2017-7269(0day漏洞)

1.漏洞介绍

        Windows server 2003 R2版本IIS6.0的WebDAV服务中的ScStorgPathFromUrl函数存在缓冲区溢出漏洞,远程攻击者通过以“if:<http://"开头的长header PROPFIND请求,执行任意代码。

        在IIS6.0处理PROPFIND指令的时候,由于对url的长度没有进行有效的长度控制和检查,导致执行memcpy对虚拟路径进行构造的时候,引发栈溢出,从而导致远程代码执行。

2.漏洞复现

2.1做好环境准备,打开IIS管理器,开启Web服务扩展中WebDAV功能:

2.2getshell:

查找并下载exp,并将其放入metasploit中:

2.3修改exp文件名格式,并赋予执行权限:(必须,否则msf无法检测到该exp)

2.4使用msf工具进行利用getshell,使用刚刚的exp,设置好sessions,执行:

2.5执行后成功上线,下一步开始提权:

2.6Ctrl+z退出shell,上传IIS6.0.exe木马程序,经测试暂无法上传,再次shell进入,在c中创建一个文件目录‘shelliis’:

2.7退出后重新上传,shell进入后查看文件夹,木马程序上传成功:

2.8通过IIS6.0.exe方式执行命令,如whoami,发现成功提权:

2.9通过该方法添加用户test1,设置密码为123456:

2.10之后赋予该用户系统管理员权限,将test1加入管理员组:

2.11Net user查看用户:

2.12攻击端开启远程桌面,首先查看靶机是否开启远程连接服务,发现3389端口未开启:

2.13自己编写一个开启3389端口的脚本(脚本很简单,自己可以网上找,这里我将脚本分享一下),编写好后将3389.bat上传到shelliis目录下:

##创建文档,写入以下内容,保存为.bat文件即可:

echo Windows Registry Editor Version 5.00    1>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000    1>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]    1>>3389.reg
echo "PortNumber"=dword:00000d3d    1>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]    1>>3389.reg
echo "PortNumber"=dword:00000d3d    1>>3389.reg
regedit /s 3389.reg
del 3389.reg

2.14通过IIS6.0.exe程序运行3389脚本,如图为正确执行状态:

2.15再次netstat -an查看开放端口,发现3389端口成功开启:

2.16在攻击端远程连接,因为刚刚已经将test1加入管理员组,所以直接用test1用户登录:

2.17远程连接登录成功:

3.漏洞修复

禁用WebDAV,做好相关限制。

(二)cve-2015-1635

1.漏洞介绍

IIS中默认启用 内核缓存,执行与请求处理管道中缓存有关的任务。当HTTP协议堆栈(HTTP.sys)不正确地解析HTTP请求时会导致IIS远程代码执行漏洞。

安装了微软IIS 6.0以上的win 7/8/8.1/2008 R2/2012/2012 R2都受到这个漏洞的影响。

2.漏洞复现

2.1在kali上执行命令curl http://192.168.111.143 -H "Host:192.168.111.143" -H "Range:bytes=0-18446744073709551615"

如果返回结果为Requested Range Not Satisfiable则存在漏洞,若返回“the request has an invalid header name”,则说明该漏洞已修补。

2.2msf工具漏洞利用,开启msf后查找模块:

2.3使用第一个模块,设置好session,进行ddos攻击:

2.4攻击成功后靶机蓝屏重启:

2.5接下来我使用第二个模块进行内存数据爆破,但是失败了,应该是靶机IIS服务配置出现了问题:

2.6后续通过测试,应该是靶机IIS服务器下没有创建网页等,所以回到靶机IIS管理器->选择网站->右键添加网站->设置好一些信息:

2.7再次回到kali,运行,发现成功读取靶机内存信息:

3.漏洞修复

3.1请到官网下载补丁:

Microsoft 安全公告 MS15-034 - 严重 | Microsoft Learn

3.2暂时禁用IIS内核缓存,不过保险起见,直接打补丁是最好的。

五、解析漏洞

(一)目录解析

1.漏洞介绍

IIS5.x/6.0,在网站下建立文件夹的名称中带有.asp、.asa等可执行脚本文件后缀为后缀的文件夹时,其目录内的任何扩展名的文件都被IIS当作可执行文件来解析并执行。

2.漏洞复现

这里我通过墨者学院提供的靶场- 内部文件上传系统漏洞分析溯源进行复现,官方地址:内部文件上传系统漏洞分析溯源_文件上传_在线靶场_墨者学院_专注于网络安全人才培养

2.1启动靶场环境,上传一个test.txt文件测试,发现上传成功路径为.asp结尾:

2.2再次上传一个包含asp一句话木马的shell.txt文件,抓包,在upload后添加/.asp,发送:

2.3上传成功,并且在upload目录下创建了一个.asp文件夹,而asp一句话木马文件也保存于.asp文件夹内:

2.4使用蚁剑,设置好url与密码:

2.5成功上线:

(二)文件解析

1.漏洞介绍

在IIS6.0下,分号后面的不被解析,也就是说xx.asp;.jpg将被当做xx.asp解析并执行。

2.漏洞复现

在PUT漏洞中的报错问题解决中利用过,在此不表。

(或者可以参考我之前博客发的一个关于nginx文件解析漏洞靶场)

(三)漏洞修复

3.1对新建目录文件名进行过滤,不允许新建包含‘.’的文件;

3.2曲线网站后台新建目录的功能,不允许创建文件夹;

3.3限制上传的脚本执行权限,不允许执行脚本;

3.4编写正则过滤.asp/xm.jpg,通过ISApi组件过滤.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/1003624
推荐阅读
相关标签
  

闽ICP备14008679号