天天看點

Hackthebox-Luck (Machine Maker: H4d3s)writeup

目錄

  • writeup
    • 1.掃掃掃(搜集資訊)
    • 2. Odd Port

writeup

首先感謝盒子創作者H4d3s的工作第一次做hackthebox的盒子,挑了一個比較簡單的(是在下錯了),還是經驗不足啊。

1.掃掃掃(搜集資訊)

這個盒子沒有啥特别的技巧,掃掃掃就能發現一大堆的東西,端口開了:21,22,80,8000,3000,目錄不少,有價值的頁面也不少,甚至還有一個資料庫配置檔案。但是你以為這就結束了?不不不,看下面的結果就知道為什麼會如此讓人崩潰:

端口 目錄 頁面内容
80 /login.php 登陸界面(貌似沒啥用)
80 /management 需要http認證
80 /config.php 資料庫配置檔案,第一個可以拿到的憑證
8000 ajenti 基于web的系統管理系統,需要登陸
3000 /users & /login 需要認證(ppp協定認證)

拿資料庫的使用者名密碼去登陸或者認證一下,發現全都不可行,暫時先放一下,後面可以再猜測一下使用者名。

然後嘗試一下ftp匿名登陸,竟然真的可以,隻發現了一段話:

Dear Chihiro !!

As you told me that you wanted to learn Web Development and Frontend, I can give you a little push by showing the sources of 
the actual website I've created .
Normally you should know where to look but hurry up because I will delete them soon because of our security policies ! 

Derry  
           

。。。難道有啥備份檔案不成(目錄掃了幾遍并沒有發現),這裡就隻能獲得一個使用者名資訊了(Derry),嘗試登陸認證,還是無果。

2. Odd Port

在讨論區逛了一圈,發現3000端口很重要,突破點就在這,在大佬的熱心提示下了解了一下JWT( JSON Web Token)認證,這在3000端口的登陸認證以及其他頁面的通路需要使用到,由于上面隻發現了兩個頁面,login和users,是以猜想需要首先使用前面的使用者名密碼登陸,使用curl來進行POST登陸(username/password)

curl -X POST  -H 'Content-Type: application/json' -d '{"username":"root","password":"Zk6heYCyv6ZE9Xcg"}' http://10.10.10.137:3000/login

           

顯示forbidden,如果文法錯誤的話會顯示Bad Request

原因很明确那就是使用者名或者密碼錯了,密碼我們沒得選(爆破作者應該會給提示)隻拿到了一個密碼,使用者名可以猜測嘗試一下:

  1. root
  2. Luke(盒子名)
  3. Derry
  4. admin
  5. web-admin
  6. webmaster
  7. administrator

等等,最後admin登陸成功,傳回了一個token,可以用于JWT bearer認證,來通路其他頁面

Hackthebox-Luck (Machine Maker: H4d3s)writeup

通路users指令如下:

curl  -H 'Accept: application/json' -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNTYzODk1NDczLCJleHAiOjE1NjM5ODE4NzN9.h7EKzLdZGRbgTzkR8_67VutLQKLPaBRZE7gtMUJgd8Q" http://10.10.10.137:3000/users
           

可以得到很多使用者:

{"ID":"1","name":"Admin","Role":"Superuser"},{"ID":"2","name":"Derry","Role":"Web Admin"},{"ID":"3","name":"Yuri","Role":"Beta Tester"},{"ID":"4","name":"Dory","Role":"Supporter"}]
           

下一個目标自然是擷取它們的密碼了,可能需要一個遞歸的掃描器(使用加上token的請求頭),可能比較慢,當然也能猜測出來啦(提示:每一個使用者單獨傳回密碼,答案在注釋裡)

然後就擷取了4個憑證,再來嘗試前面掃描到的登陸認證頁面,80端口的/management可以使用Derry賬号登陸,然後就能夠發現8000端口的ajenti系統的配置檔案

Hackthebox-Luck (Machine Maker: H4d3s)writeup

然後能夠拿到盒子的root賬戶密碼,在ajenti中直接使用web應用控制機器(挺友善的),而且還是root權限

關于JWT bearer token 認證可以參考:https://medium.com/@nieldw/using-curl-to-authenticate-with-jwt-bearer-tokens-55b7fac506bd, 可能需要科學上網