IIS中间件
1.什么是IIS
IIS的全称是Internet Information Services(互联网信息服务),是微软提供的运行在Windows系统下的中间件,主要用来解析.ASP,.ASA,.CER三种文件格式的文件。在实际上传环境中一般ASP这种文件都是黑名单的,所以有时候可以尝试一下ASA和CER这两种格式上传,有时候会有意想不到的结果。
2.什么是文件解析
当服务器收到一个HTTP请求时,IIS(中间件)首先需要决定如何去处理这个请求(一般都是根据文件后缀名,如果是PHP就丢给PHP程序去处理,如果是ASP就丢给IIS去处理)。服务器获取所请求页面的后缀名以后,会在服务器端寻找可以处理这类后缀名的应用程序,如果找不到就直接把这个文件返回给客户端(这就是之前的实验中有时候返回来的直接是PHP代码的原因,服务器没找到能解析的程序,所以直接把代码返还回来了)
3.不同Windows对应不同的IIS版本
Windows 2003 server ------->IIS 6.0
Windows 7 ------->IIS 7.0和IIS 7.5
Windows 2008 server sp2 -------> IIS 7.0
Windows 2008 server R2-------->IIS 7.5
xp和2000 server对应的IIS 5.0
4.在2003 server添加一个IIS服务的步骤
开始-->管理工具-->配置您的服务器向导-->下一步-->下一步(这一步需要等待一段时间)-->选择“自定义配置”并选择“下一步”-->选择“应用程序服务器”并“下一步”
这里注意,有时候这里会弹出来一个让你勾选解析ASP,.net之类的,这时候勾选了就行,如果不弹的就需要在后面的IIS服务管理器自己在web服务扩展中允许Active Server Pages这个选项,默认是禁止的
有的没有后面的括号内容.png
别人的经历
今天老大让我把别人公司一个做好的ASP立站点在我们这边搭建起来,本以为是几分钟的事情,可是在浏览ASP页面的时候出现问题,但可以解析HTML的,后来才记起原来我这是在虚拟机里建的个2003的系统 ,ASP服务是需要手动起的。
控制面板 -> 管理工具 ->IIS(Internet 服务器)- Web服务扩展 -> Active Server Pages -> 允许(修改以后记得重启IIS服务器)
tips:默认的web目录是Inetpub\wwroot
5.IIS 6.0的漏洞利用(斜杠和分号)
1.第一种可以结合别的方法在浏览器建立一个名为xxx.asp的这种目录,6.0默认在.asp下的文件都以ASP文件来解析,形如/test.asp/1.jpg,在实际中1.jpg会被ASP解析(记得之前的墨者学院就有一道这样的题)
2.第二种就是利用分号这个符号。形如test.asp;.jpg这种文件本质上是jpg的文件,但是在6.0由于分号的作用会被当做ASP程序执行
6.IIS 7.5解析漏洞(斜杠的原因进行了修剪)
一看到URL中的文件后缀名是.php,便无论该文件是否存在,都直接交给PHP程序处理,而这时如果PHP又默认开启cgi.fix_pathinfo的话,会对文件路径进行修理,何谓修理?就是当PHP遇到文件路径/aaa.xxx/bbb.yyy时,若/aaa.xxx/bbb.yyy 不存在,则会去掉最后的bbb.yyy,然后去判断/aaa.xxx是否存在,若存在,则把/aaa.xxx当做文件去解析。
如果有文件test.jpg,在访问时在其后加了/.php,便可以让IIS把test.jpg/.php交给PHP去处理,由于test.jpg/.php这个路径是肯定不存在的,于是进行修理,得到test.jpg,这个文件是存在的,于是就把这个文件交给PHP去处理解析,如果是个恶意代码就会产生一些破坏。
7.关于IIS的防御方法
只能升级自己的IIS服务器版本,像IIS 6.0的那个漏洞现在依然存在,只要是这个版本都可以利用,因为微软不认为这是漏洞,就一直没有修复,所以避免这两个IIS漏洞的方法就是升级IIS版本
8.IIS 6.命令执行漏洞(CVE-2017-7276)
GitHub上有对应的payload
这个漏洞的条件是IIS 6.0的版本而且开放了WebDAV服务的前提下。默认WebDav是关闭的,如果自己想要做实验需要在IIS服务管理器中的web服务扩展设置允许来开启这个服务。这是一个栈溢出漏洞,由于IIS 6.0在处理PROPFIND指令的时候,对URL的长度没有进行有效的长度控制和检查,导致执行memcpy对虚拟路径进行构造的时候引发了栈溢出,改漏洞可以导致远程代码执行。