Vulnhub 靶場 DIGITALWORLD.LOCAL: SNAKEOIL
前期準備:
靶機地址:https://www.vulnhub.com/entry/digitalworldlocal-snakeoil,738/
kali攻擊機ip:192.168.11.129
靶機ip:192.168.11.192
一、資訊收集
1.使用nmap對目標靶機進行掃描
發現開放了 22、80和8080埠。
2. 80埠
沒發現什麼,掃一下目錄:
什麼也沒有。
3. 8080埠
檢視一下網站內的資訊,發現在 Useful Links 裡有個網址:
是一些配置資訊,,掃一下目錄:
發現了一些新的頁面,檢視一下:
/users 頁面下:
發現使用者名稱和加密過得密碼。
/registration 頁面下:
說請求方法錯了,抓包改下請求方式:
說 username 欄位不能為空,那就加上 username 欄位:
又提示 password 欄位不能為空,再加上 password 欄位:
說註冊成功了,那就在 /login 頁面登陸一下,要加上使用者名稱和密碼:
再訪問一些別的頁面(現在是在登陸狀態中):
/create 頁面:
無法瞭解請求,大概是傳入什麼東西。
/run 頁面:
說要以 url:port 形式提供要請求的 URL:
記得格式要換成 Content-Type: application/json, 在ajax中,如果沒加contentType:"application/json",那麼data就對應的是json物件;反之,如果加了contentType:"application/json",那麼ajax傳送的就是字串。
現在又說需要 secret key ,訪問一下 /secret 頁面:
POST 方式不行,再換成 GET :
還是不行,那就再加上之前返回的 cookie:
發現還是不行,想起來之前發現過一些配置資訊,從中找到了 cookie 的名稱:
再次提交 cookie:
得到 "secret_key": "commandexecutionissecret",再在 /run 裡面提交:
得到了返回資訊,像是系統的程序資訊,嘗試一些別的指令:
發現可以注入,嘗試往其中寫入 shell:
發現不行,找了找python,nc等都不行,那試試能不能上傳個 .ssh 私鑰檔案然後 ssh 登入。
二、製作ssh私鑰登入
首先先製作 ssh 私鑰:
開啟 http 服務,把私鑰檔案傳到靶機上:
檢視一下有沒有上傳成功:
時間上沒問題,上傳成功了,把 authorized_keys 檔案移到 /home/patrick/.ssh/ 目錄下:
檢視一下 .ssh 目錄下有沒有:
發現已經有了,驗證一下內容:
沒問題,那就直接 ssh 登入:
三、提權
登陸成功,看一下許可權:
發現可以以 root 身份執行任意命令
不過需要 patrick 的密碼,找找系統中的檔案,看有沒有線索,最後在 ~/flask_blog/app.py 檔案中找到了:
切換 root 賬戶:
完成。