复现环境

ubuntu 20.4.2

Sudo version 1.9.5p1 源码下载地址 https://github.com/sudo-project/sudo

漏洞影响范围

1.9.0 <= Sudo <= 1.9.5 p1 所有稳定版(默认配置)

1.8.2 <= Sudo <= 1.8.31 p2 所有老版本

最新的系统,如Ubuntu 20.04 (Sudo 1.8.31), Debian 10 (Sudo 1.8.27), Fedora 33 (Sudo 1.9.2) 都受到影响。

漏洞的描述

sudo的一个堆溢出漏洞,可以用来进行本地提权

由于sudo错误的转义了\导致了一个堆溢出漏洞。

当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/edfd6e5d-77b6-4861-bffd-aa7915a2c0c3/Untitled.png

漏洞测试

利用 sudoedit -s / 来测试是否存在漏洞如果存在漏洞 会出现报错

sudoedit: /: not a regular file

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6e4c8541-627f-46e4-a5b4-db7788b70a2a/Untitled.png

但是我不知道为啥我用上面的 sudoedit -s / 这个命令要输入正确密码才能看到这个报错

所以还可以利用其它的方法测试 sudoedit -s '\\' perl -e 'print "A" x 65536' 这个指令也可以利用测试他对应的报错为