【HTB】Craft Machines Writeup

0x00 靶機信息

在這裏插入圖片描述

0x01 信息收集

使用nmap掃描靶機端口:
在這裏插入圖片描述只開了兩個端口,直接訪問https://10.10.10.110,得到如下界面:
在這裏插入圖片描述
沒有進一步的暗示,再查看頁面源碼,得到如下兩個域名:
在這裏插入圖片描述

https://api.craft.htb/api/
https://gogs.craft.htb/

但是直接訪問是失敗的,因爲沒有dns的關係。
於是需要現在hosts文件下添加兩個域名並保存。
網站是craft cms搭建的。再分別訪問以上兩個網址:
在這裏插入圖片描述在這裏插入圖片描述這個是類似github的代碼託管倉庫,這裏存放了craft-api的開發代碼。
跟進查看,發現是flask開發的。
在這裏插入圖片描述

0x02 Port22嘗試:

使用hydra進行ssh爆破測試
爆破無果

0x03 Port443嘗試:

0x03-1 代碼審計

下載Gogos裏面的代碼做審計。
craft-api/api/endpoints/brew.py的第43行有eval函數:

在這裏插入圖片描述
要觸發該eval函數需要訪問/brew/後經過身份認證,之後取post中的json數據,而如果在json的abv變量中輸入命令執行的語句,就可以執行命令。

而要通過認證,可以在craft_api/api/auth/endpoints/auth.py中找到:
在這裏插入圖片描述
即在header中添加X-Craft-Api-Token的值。值就是login認證的token

0x03-2 getshell

訪問https://10.10.10.110/api/,先進行登陸認證操作:
在這裏插入圖片描述
這裏的登陸密碼需要從代碼倉庫的更新記錄中找到:
在這裏插入圖片描述
登陸成功後會返回toke值
在這裏插入圖片描述
之後在/brew的api那塊選擇POST選項卡,然後在選項卡中的數據區域的abv變量處輸入payload:
在這裏插入圖片描述
payload可以參考

https://blog.csdn.net/u011721501/article/details/47298723

發送的數據包如下:
在這裏插入圖片描述
然後用nc監聽6909端口:
在這裏插入圖片描述

0x03-3 搜索

嘗試搜索user.txt和root.txt但都無果。查看當前目錄,跟代碼倉庫的差不多。
在這裏插入圖片描述
運行dbtest.py,發現返回了一個用戶信息:
在這裏插入圖片描述
修改dbtest.py,查看user表中的數據:
在這裏插入圖片描述

0x03-4 再訪代碼倉庫

從項目的開發者名單裏面發現有三個人,正好對應從數據庫中查詢出來的。
挨個賬號登陸,發現gilfoyle這個賬戶下有個項目,而且還有ssh密鑰。
在這裏插入圖片描述在這裏插入圖片描述
下載項目到本地,使用密鑰進行ssh登陸,但是一直失敗,仔細看了警告信息:
在這裏插入圖片描述
說明id_rsa的權限過高,使用命令chmod 0600 ~/.ssh/id_rsa進行修改,然後再次ssh,使用原來的密碼就可以了。
登陸後查找user.txt,得到對應的flag信息

在這裏插入圖片描述

Root權限

這裏不能用sudo提權,困擾了很久,也看了別人的留言,最後注意到vault這個文件夾。
搜索vault,發現是一種用於在現代應用程序體系結構中安全地管理機密信息的流行工具。而且從泄漏的信息中找到secrets.sh可以看到:

#!/bin/bash

# set up vault secrets backend

vault secrets enable ssh

vault write ssh/roles/root_otp \
    key_type=otp \
    default_user=root \
    cidr_list=0.0.0.0/0

使用命令:
vault write ssh/creds/root_otp ip=<靶機ip>
在這裏插入圖片描述
然後輸入keyd的值即可以root的身份登陸。
搜索root.txt即可獲得flag
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章