Vulnhub Node:1 詳解(nodejs)
vulnhub 裡面有很多靶場,適合web安全選手練習,今天和大家分享下node:1的思路。
資訊收集
arp-scan 用來發現系統和指紋識別的命令列工具。
從結果中可以看到node的ip是"192.168.92.129"
使用nmap對埠進行探測,如下圖所示:
可知開放的埠有2個,分別是:22和3000,其中3000是個web服務;
詳細banner資訊,如下圖所示:
訪問3000埠,有如下介面:
該web介面使用node.js編寫,通過審計js原始碼,在“assets/js/app/controllers/home.js”這個檔案中可以獲取到儲存敏感資訊的位置 /api/users/latest/
,如下圖所示:
訪問該位置,獲取到使用者名稱和密碼,如下圖所示:
使用 hash-identifier
判斷加密方式,為SHA-256,如下圖所示:
接下來,就是破解出這個密碼,使用線上工具,獲得密碼如下:
使用任意一個口令登入,登陸後如下圖所示,沒有獲取到任何有價值的資訊:
這裡面說 Only admin users have access to the control panel currently, but check back soon to test the standard user functionality!
只有管理員使用者才能訪問這個介面,猜想應該還有另外的管理員帳號,直接訪問 /api/users/
獲取到了另外一個使用者(myP14ceAdm1nAcc0uNT),如下圖所示:
解出該使用者的密碼(manchester)後,登入可以下載該網站的備份原始碼,如下圖所示:
審計原始碼
下載原始碼後,發現不能直接開啟,首先對其進行base64解碼,如下圖所示:
發現是個加密檔案,需要先進行破解,可以使用kali自帶工具 fcrackzip
進行破解,該工具支援暴力破解和字典猜解兩種方式,如下圖所示:
fcrackzip -u -D -p /usr/share/wordlists/rockyou.txt myplace.zip
引數 | 描述 |
---|---|
-D | 指定方式為字典猜解 |
-p | 指定猜解字典的路徑 |
-u | 表示只顯示破解出來的密碼,其他錯誤的密碼不顯示出 |
通過字典猜解出密碼為 magicword
:
解壓出原始碼,如下圖所示:
熟悉nodejs的同學瞭解app.js的作用, 專案入口及程式啟動檔案
,裡面儲存著重要配置資訊,從該檔案中,獲取到mongodb的配置資訊,如下圖所示:
使用mark的使用者資訊,成功登入到ssh,如下圖所示:
當前使用者(mark)沒有root許可權,需要進行提權操作。
許可權提升
確定當前系統的核心版本和系統版本,如下圖所示:
命令 | 描述 |
---|---|
lsb-release | 檢視發行的系統版本資訊 |
arch | 機器的體系架構 |
通過檢視版本資訊,使用 searchsploit
(漏洞查詢工具) 查詢,可以知道該核心版本存在漏洞可以直接提權,如下圖所示:
使用 scp
命令(遠端檔案拷貝)將payload上傳至靶機,如下圖所示:
對上傳的檔案進行編譯,如下圖所示:
執行該檔案,可成功提權,如下圖所示;
最終將會獲取到兩個flag:
一個是在 /root/root.txt/
;
另一個是在 /home/tom/user.txt
文章首發:https://xz.aliyun.com/t/2695

感覺文章有幫助,煩請關注 ▶▶▶
