Apache任意文件执行和文件解析漏洞:
Tomcat远程代码执行:CVE-2017-12615
将 readonly参数设置为false时,即可通过PUT方式创建一个JSP文件,并可以执行任意代码。
文件名相关限制(如Windows中文件名不能以空格结尾)来绕过限制返回201说明文件已经上传成功。(直接请求会被拦截)
IIS文件解析漏洞:
漏洞利用:
文件解析漏洞一般用于各种上传漏洞中,在文件上传的地方一般会限制用户可以上传文件的后缀名,比如php的网站如果可以上传php文件,那么就可以上传一个php木马,然后控制该服务器了,也就是我们所说的get shell了。
那么实际的漏洞环境中IIS一般是和asp搭配的,上传的地方如果限制了.asp的后缀名,那么首先想到的应该是使用其它IIS支持的文件后缀。其实IIs解析asp脚本除了.asp后缀还有.cer和.asa。
IIS6.0
IIS6.0命令执行漏洞:CVE-2017-7269,在开启WebDav服务的情况下存在可远程执行漏洞。
漏洞原理:
在IIS6.0处理PROPFIND指令的时候,由于对url的长度没有进行有效的长度控制和检查,导致执行memcpy对虚拟路径进行构造的时候,引发栈溢出,该漏洞可以导致远程代码执行。
攻击方法:
GitHub上的一个开源exp:https://github.com/edwardz246003/IIS_ exploit
将exp中的IP地址改为目标IP地址。
攻击结果:
这个exp的结果是弹出计算机,验证漏洞可以执行代码可以在目标机中的进程中看到calc.exe。
---------------------------------------------------------
在处理含有特殊符号的文件路径时会出现逻辑错误,从而造成文件解析漏洞。这一漏洞有两种完全不同的利用方式:
- /test.asp/test.jpg
- test.asp;.jpg
第一种方式:
是新建一个名为“test.asp”的目录,该目录中的任何文件都被IIS当做asp程序执行(特殊符号是“/”)
第二种方式:
是上传名为“test.asp;.jpg”的文件,虽然该文件真正的后缀名是“.jpg",但由于含有特殊符号“;”,仍会被llS当做asp程序执行。
IIS7.5
test.jpg/.php一看到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,php“修理”文件路径“test.jpg/.php”得到“test.jpg”,该文件存在,便把该文件作为php程序执行了。
IIS短文件名:
为了兼容16位MS-DOS程序,Windows为文件名较长的文件(和文件夹生成了对应的windows8.3短文件名。
在Windows下查看对应的短文件名,可以使用命令dir/x。
在D盘下创建一个名为aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.html的文件,观察可得到如下规律:
- 1、文件名字符长度超过9位则显示短文件名
- 2、只有前六位字符直接显示,后续字符用~1指代。其中数字1还可以递增,如果存在多个文件名类似的文件(名称前6位必须相同,且后缀名前3位必须相同)
- 3、后缀名最长只有3位,多余的被截断
II短文件名漏洞利用
存在暴利列举短文件名的可能:
- 1.访问构造的某个存在的短文件名,会返回404
- 2.访问构造的某个不存在的短文件名,会返回400
payload:
http://x.x.x.x/*~1*/a.aspx(返回404说明有短文件名,后面四个通配符*是为了便于理解)
http://x.x.x.x/360*~1*/a.aspx(返回400说明没有以360开头的短文件名)