男人的天堂一区二区视频在线观看-男人的天堂亚洲-男人的天堂天堂网-男人的天堂视频在线观看-91综合在线-91综合视频

EN

Linux權限提升:Python庫劫持

發布時間:2021-07-02
瀏覽量: 9928

在這篇文章中,我們將介紹一些在基于Linux的設備上通過利用Python庫和腳本提升權限的方法。

1.介紹

一般來說,當攻擊者處于有python文件的環境中,可以用來提升其訪問權限的方式比較有限。本文將介紹利用寫權限、sudo權限和編輯Path變量,這三種提權方式。

為了方便演示,我們先創建一個導入一些庫的示例腳本。在實際情況中,這可能是個一般的python腳本或是一個開發人員正在進行的項目。在CTF比賽中,可能很容易找到一個包含與此相類似的腳本。我們創建的示例腳本中,首先導入webbrowser模塊,然后使用open函數來運行設備上的默認web瀏覽器,來打開http://www.1218.com.cn/網頁(此處以任子行官網舉例),如圖1-1。

圖片1.png

                   圖1-1可以看到運行腳本程序會打開任子行官網

方法一:這個漏洞利用是基于我們導入的模塊文件要具有寫權限。當被導入的模塊文件具有允許任何用戶編輯的權限時,它就可能成為一個漏洞。在我們創建的python示例腳本中,調用了webbrowser.py模塊文件。為了更好地了解這種提權方式,我們將首先在ubuntu環境中創建脆弱性漏洞環境,然后使用另一個機器來攻擊利用這個漏洞。


漏洞創建:正如前文所講,在這種方法中,漏洞是基于模塊文件的權限。為了構造這個漏洞,我們首先需要找到模塊文件。我們可以用locate命令來找到它,當然也可以利用find之類的命令進行查找。我們可以看到它位于/usr/lib/python3.8/里面,然后我們可以看到,模塊文件的默認權限是:所有者有讀、寫、執行的權限,組有執行和讀的權限,其他用戶只有執行的權限。這意味著除非用戶是root權限,否則任何人不能編輯該文件。為了構造這個漏洞,我們需要用chmod命令改變一下權限,使每個用戶都可以讀取、寫入和執行。這從下圖1-2中可以看到。

圖片3.png

                  圖1-2可以看到所有用戶對文件具有讀,寫,執行權限。

要想讓Linux機器變得易受攻擊,下一步要做的就是提供一個運行python腳本的方法。最簡單的方法是寫入sudoers文件中,這樣攻擊者(可以訪問用戶lele就可以執行我們創建的python腳本(hack.py)。如圖1-3.

圖片4.png 

圖1-3

以上就是一個完整使機器容易受到Python庫劫持的攻擊的過程,其余沒有提到的配置都為Linux的默認配置。

漏洞利用:該漏洞利用的前提是我們在目標機上已經獲得初始立足點。然后我們可以利用這種方法在獲得初始立足點后提升權限。為了模仿這種情況,我們先以用戶lele的身份連接到目標機。作為一個需要提升權限的攻擊者,我們運行sudo -l命令,看看哪些腳本或二進制文件是以提升的權限運行的。可以看到,我們能使用python3.8來運行hack.py。作為一個攻擊者,我們使用cat命令查看腳本內容,看到它導入一個名為webbrowser的模塊。我們使用locate命令找到該模塊的位置,發現它位于/usr/lib/python3.8中。然后我們還可以發現lele用戶擁有該模塊的寫權限如圖1-4,圖1-5所示。

圖片5.png

                     圖1-4可以看到哪些腳本擁有root權限

圖片6.png

                   圖1-5可以看到目標腳本所處位置

我們用vim編輯器打開該模塊文件,然后在被hack.py文件調用的函數里面加入了反彈shell的python腳本。在前面我們可以看到,它使用一個open函數在瀏覽器中打開了一個網頁。因此,我們將反彈shell的代碼添加到該模塊文件中,如下圖1-6所示。

vim /usr/lib/python3.8/webbrowser.py

圖片6.png

                      圖1-6將反彈shell的代碼寫入圖中位置

編輯完模塊文件后,我們保存并關閉編輯器。打開ctf機器的另一臺終端,我們在shellcode腳本中指定的端口上打開一個Netcat監聽器,然后以lele用戶回到終端,用sudo執行hack.py腳本,如圖1-7所示。

圖片7.png

                               圖1-7

當腳本運行時,我們就可以看到一個會話連接到了我們的Netcat監聽器。通過whoami命令和id命令可以看到我們已經成功地將Linux權限從lele用戶提升到了root權限用戶。

方法二:

這個漏洞是基于Python庫路徑的優先級順序,它適用于我們腳本正在導入的模塊文件。當一個模塊在腳本中被導入時,Python會以特定的優先順序在默認目錄中尋找特定的模塊文件。在我們創建的python腳本中,我們有webbrowser.py模塊文件被調用。因為如果在與原始腳本相同的目錄下存在一個Python模塊文件,它將獲得優先于默認路徑的地位。為了更好地了解背后發生了什么,以及怎么樣導致權限升級的,我們先在ubuntu環境中創建漏洞,然后使用另一個機器Linux來利用這個漏洞。

漏洞構建:

正如前面所討論的,在這種方法中,漏洞是基于模塊文件執行的優先順序。為了構造這個漏洞,首先,我們需要把方法一加入的反彈shell的代碼注釋掉或者直接刪掉(如圖2-1),避免產生干擾,然后恢復我們先前賦予文件的權限(如圖2-2)。這樣,這臺機器就不會在多個方面出現漏洞。

圖片9.png

圖2-1 注釋掉先前加的反彈shell代碼

圖片10.png

圖2-2恢復webbrowser.py的權限。

接下來,我們回到我們先前創建的python腳本。我們可以看到,它位于lele用戶的home目錄下,它仍然包含相同的代碼,需要導入 webbrowser模塊,如圖2-3所示。

圖片11.png

                             2-3

sudoers文件中與方法一中的編寫一致使其包含腳本hack.py的正確路徑,如圖2-4所示。

圖片12.png

圖2-4

以上是一個完整的使機器容易受到Python庫劫持的攻擊過程。其余沒有提到的配置都為Linux的默認配置。

漏洞利用:

同樣,該漏洞利用的前提是我們在目標機上已經獲得初始立足點。然后我們可以利用這種方法在獲得初始立足點后提升權限。為了模仿這種情況,我們以用戶lele的身份連接到目標機器。作為一個需要提升權限的攻擊者,我們運行sudo -l命令,看看我們可以用哪些腳本或二進制文件是以提升的權限運行的。我們看到,我們可以使用python3.8來運行hack.py。作為一個攻擊者,我們使用cat命令查看該腳本,看到它導入了一個名為webbrowser的模塊如圖2-5。

圖片13.png

圖2-5

由于 hack.py 位于 lele 用戶的主目錄內,而我們有 lele 用戶的訪問權限,我們可以在主目錄內創建一個文件。在這種情況下,需要注意的是我們不能編輯 hack.py 文件。在這種情況下,我們將創建一個webbrowser.py文件。然后在創建的webbrowser.py文件中添加反彈shell的代碼。如圖2-6

圖片14.png 

圖2-6 反彈shell代碼

接下來,我們需要運行一個Netcat偵聽器端口,我們提到在反向shellcode。然后我們將繼續使用sudo執行hakc.py腳本,如圖2-7。

圖片15.png

圖2-7

當腳本運行時,我們看到一個會話連接到Netcat偵聽器。會話的id命令證明在目標機器上已經是root權限。我們已經成功地把lele用戶提升特權為root用戶如圖2-8。

圖片16.png

圖2-8提權為root權限

方法3

這個漏洞是通過Python PATH環境變量進行搜索的Python庫來利用的。這個變量有一個目錄列表,在這個列表中,Python會搜索導入模塊的不同目錄。如果攻擊者能夠改變或修改該變量,那么他們就可以利用它來提升目標機器的權限。為了更好地了解是怎么樣導致權限升級的,我們和前面一樣先在ubuntu環境中創建漏洞,然后使用另一臺Linux來攻擊利用這個漏洞。

漏洞構建

正如前面所討論的,這個方法的漏洞利用是基于python環境path變量的。為了構造這個漏洞,首先,和前面一樣,我們需要恢復Linux環境到最初的配置。然后,在tmp目錄內創建hack.py腳本,我們可以驗證該腳本的內容與之前一樣,如圖3-1,圖3-2所示。

圖片17.png

圖3-1運行該腳本會打開任子行官網

圖片18.png 

圖3-2 可以看到腳本內容

接下來,我們需要在sudoers文件中做一些修改。首先,我們把文件的位置改為/tmp目錄,然后在文件中加入SETENV標記,如圖3-3所示。這意味著lele用戶可以使用具有sudo權限的SETENV命令,而無需輸入root密碼。SETENV是個可以改變Python PATH環境變量的值,并將任何位置納入我們在前面的方法中學到的執行順序的命令。

圖片19.png 

圖3-3給我們的文件加上SETENV標記配置環境變量

以上就是使機器容易受到Python庫劫持的完整過程。其余沒有提到的配置都被設置為Linux的默認配置。

漏洞利用

同樣,該漏洞利用的前提是我們在目標機上已經獲得初始立足點。然后我們可以利用這種方法在獲得初始立足點后提升權限。為了模仿這種情況,我們以用戶lele的身份連接到目標機器。作為一個需要提升權限的攻擊者,我們運行sudo -l命令,看看我們可以用哪些腳本或二進制文件是以提升的權限運行的。我們看到,我們可以用root權限使用SETENV,這意味著我們可以用它來改變導入模塊的優先順序。由于hack.py位于/tmp目錄內,我們進入其中并檢查hack.py腳本,如圖3-4所示。

圖片20.png 

圖3-4 可以看到已經以root權限進行設置環境變量

由于它需要導入webbrowser模塊,我們首先將創建一個名為webbrowser.py的惡意模塊文件,然后利用改變環境變量Python PATH的能力導入我們的惡意模塊文件,惡意模塊文件中包含反彈shell的代碼。如圖3-5接著在腳本中提到的同一端口上啟動一個Netcat監聽器,并繼續將/tmp目錄添加到Python路徑中,然后執行hack.py文件以提升我們的訪問權限。

圖片21.png

圖3-5惡意模塊文件里包含反彈shell的代碼

當腳本運行時,我們可以看到一個會話連接到了我們的Netcat監聽器。whoami和id命令表明了我們已經成功地將權限從lele用戶提升到了root權限用戶如圖3-6。

圖片22.png 

圖3-6已經從普通訪問權限提權為root權限

在這篇文章中,我們通過人為的為Python庫的環境設置三個真實的場景,然后介紹了一些錯誤的配置可能導致攻擊者將其訪問權限提升到root權限級別的方法。


熱點內容

開始試用任子行產品
申請試用

20年公安服務經驗

7*24小時應急響應中心

自主知識產權的產品裝備

專家級安全服務團隊

網絡空間數據治理專家

榮獲國家科學技術二等獎

置頂
電話

400-700-1218

官方熱線電話

咨詢
留言
二維碼
微信公眾號
公司微博