Web中间件漏洞之IIS漏洞(转)
PUT漏洞
前提条件:IIS 6.0
开启了WebDAV
并且拥有IIS
来宾用户拥有写入权限
复现过程:
用IIS PUT SCANNER
探测一下目标IIS
是否拥有写入权限
是YES
所以可以利用
先看原来的服务器上面存在的内容
我们利用另一个工具对文件进行写入,我们写入一句话webshell
上传test.txt
成功
上传上去是txt
格式,于是我们用MOVE
或者COPY
选项把它改成asp
后缀
菜刀连一下,拿到webshell
提权
上传cmd.exe
和pr.exe
上去,这二者的用法是pr
提权
执行下面这条命令,把当前终端的执行程序设置成我们上传的 cmd.exe
1 | setp "路径cmd.exe" |
然后我们就可以pr
提权,查看一下当前是system
权限
于是我们新建管理员账户
1 | pr.exe "net user hack1 123 /add" 新建一个hack1用户,密码为123 |
如果对方开启了3389
端口那么就可以用新建的用户登录,如果没有开启那么我们就上传一个bat
文件,它可以远程开启目标的3389
端口
此时运行利用pr.exe
运行3389open.bat
,成功开启3389
端口,可以连接
附上3389open.bat
文件代码
1 | //3389open.bat |
漏洞修复
关闭WebDAV
和写权限
远程代码执行(CVE-2017-7269)
前提条件:IIS 6.0
开启WebDAV
复现过程:
exp下载地址:https://github.com/zcgonvh/cve-2017-7269
下载后放入msf
中,路径为/usr/share/metasploit-framework/modules/exploits/windows/iis/
注意文件名中-
应该改为_
否则无法识别,然后拿到了shell
(失败后靶机恢复快照,否则可能之后的攻击无效)
这里说说我开始失败的原因
这种叫非默认绑定
这个exp
可以直接利用,如果是绑定了的,就需要手动输入物理路径的长度和端口即可
目前网络上存在三种脚本,我使用的这种是第二种,区别附图
很明显第一种用处不大,可以用第二种代替,第二种和第三种区别就是需不需要手动输入物理路径的长度和端口,第三种方便,但是第三种不咋稳定我们来看看如何手动输入物理路径长度
现在我们默认绑定
批量检测工具
下载地址:https://github.com/admintony/Windows-Exploit/tree/master/IIS6_WebDAV_Scanner
检测出了长度为71
然后在msf
上设置PhysicalPathLength
为71
即可
提权
输入whoami
都不行,是一个低权限账户
再次使用pr
提权,利用meterpreter
上传pr.exe
然后创建用户hack1
并添加到管理员组netstat -an
查看是否打开了3389
端口,发现并没有
输入exit
回到meterpreter
上传3389open.bat
然后利用pr.exe
运行netstat -an
查看一下,发现3389
端口已经打开
成功登陆
漏洞修复
关闭WebDAV
解析漏洞
前提条件:
IIS 6.0
IIS 7.5
复现过程:IIS 6.0
解析漏洞有两种利用方式
(1)在.asp
目录下的任意文件会以asp
格式解析
(2);
截断,上传test.asp;.jpg
是一个jpg
文件但是会以asp
执行IIS 7.0
解析漏洞
在文件后面加上/xx.php
(xx可加可不加)就会将该文件以php
格式执行,比如
漏洞修复
(1)限制上传的脚本执行权限,不允许执行脚本
(2)对新建目录文件名进行过滤,不允许新建包含‘.’的文件
(3)不允许新建目录
(4)过滤.asp/xx.jpg
,通过ISApi
组件过滤
短文件猜解
前提条件:
1 | IIS 1.0,Windows NT 3.51 |
短文件名特征:
1.只显示前6
位的字符,后续字符用~1
代替。其中数字1
是可以递增。如果存在文件名类似的文件,则前面的6
个字符是相同的,后面的数字进行递增
2.后缀名最长只有3
位,超过3
位的会生成短文件名,且后缀多余的部分会截断
3.所有小写字母均转换成大写的字母
4.长文件名中包含多个”.”的时候,以文件最后一个”.”作为短文件名的后缀
5.文件名后缀长度大于等于4
或者总长度大于等于9
时才会生成短文件名,如果包含空格或者其他部分特殊字符,不论长度均会生成短文件
漏洞原理:
访问构造的某个存在的短文件名,会返回404
,访问构造的某个不存在的短文件名,返回400
自动化探测:
https://github.com/lijiejie/IIS_shortname_Scanner
漏洞修复
(1)升级.net framework
到4.0
以上
(2)修改注册表禁用短文件名功能快捷键Win+R
打开命令窗口,输入regedit
打开注册表窗口,找到路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
,将其中的NtfsDisable8dot3NameCreation
这一项的值设为1
,1
代表不创建短文件名格式,修改完成后,需要重启系统生效(之前存在的文件依然有短文件,新建的文件满足生成短文件条件但是不会再生成)
(3)那么之前的文件已经存在短文件名仍能够被猜解怎么办呢?将目录内所有文件剪切到另外地方再粘贴回来就行,相当于新建,这些就没有短文件名无法被猜解了
使用自动化脚本试试
Server is not vulnerable 防御成功
参考链接
http://www.admintony.com/CVE-2017-7269.html
https://www.freebuf.com/articles/web/192063.html
https://www.jianshu.com/p/354fcf0939cc
https://www.freebuf.com/articles/web/172561.html
https://www.jb51.net/article/166405.htm