目錄
- 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
原因很明确那就是使用者名或者密碼錯了,密碼我們沒得選(爆破作者應該會給提示)隻拿到了一個密碼,使用者名可以猜測嘗試一下:
- root
- Luke(盒子名)
- Derry
- admin
- web-admin
- webmaster
- administrator
等等,最後admin登陸成功,傳回了一個token,可以用于JWT bearer認證,來通路其他頁面
通路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系統的配置檔案
然後能夠拿到盒子的root賬戶密碼,在ajenti中直接使用web應用控制機器(挺友善的),而且還是root權限
關于JWT bearer token 認證可以參考:https://medium.com/@nieldw/using-curl-to-authenticate-with-jwt-bearer-tokens-55b7fac506bd, 可能需要科學上網