CVE-2019-14287:利用sudo提權復現

  • 2019 年 12 月 15 日
  • 筆記

本文作者:violin(Timeline Sec核心成員)

本文共847字,閱讀大約需要2分鐘

0x00 簡介


sudo是linux系統管理指令,是允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,如halt,reboot,su等等。這樣不僅減少了root用戶的登錄和管理時間,同樣也提高了安全性。sudo不是對shell的一個代替,它是面向每個命令的。

0x01 漏洞概述


該漏洞是一個sudo安全策略繞過問題,可導致惡意用戶或程式在目標 Linux 系統上以 root 身份執行任意命令,CVE 編號為CVE-2019-14287。個人覺得該漏洞比較雞肋,因為需要特殊的配置才能觸發,在默認的Linux中並不會存在該安全問題。

0x02 影響版本


Sudo版本 < 1.8.28

0x03 環境搭建


任何linux機器上執行sudo -V得到的版本 < 1.8.28均可

本人使用的環境為sudo 1.8.23

由於需要特定的配置,所以首先修改配置文件sudoers(文件位置/etc/sudoers)

在 root ALL=(ALL:ALL) ALL 下面添加一行配置:

test    ALL=(ALL,!root) ALL

1、其中的test表示用戶名 2、第一個ALL表示允許該用戶在任意機器或者終端中使用sudo 3、括弧裡面的(ALL,!root)表示命令可以被除了root以外的任意用戶身份去執行 4、最後一個ALL表示被允許執行

添加的這一行的配置的意思就是:test這個用戶可以使用sudo命令,以除了root以外的任意身份去執行命令。

0x04 漏洞利用


切換到test用戶:$su test

執行 $sudo id 失敗

執行 $sudo -u#111 id 成功

所以我們就可以直接是使用 sudo -u#id 指定用戶 id 去執行命令,由於可以指定id,所以可以使用-u#-1或者-u#4294967295繞過限制,從而以root身份去執行任意程式碼:

這是因為 sudo 命令本身就已經以用戶 ID 為0 運行,因此當 sudo 試圖將用戶 ID 修改成 -1時,不會發生任何變化。這就導致 sudo 日誌條目將該命令報告為以用戶 ID 為 4294967295而非 root (或者用戶ID為 0)運行命令。(來自程式碼衛士)

0x05 修復方式


更新至 Sudo 1.8.28 版本

參考鏈接:

https://mp.weixin.qq.com/s/FV1V_CguP1PQE68yJnEkvQ

https://www.exploit-db.com/exploits/47502