privesc-linux logo

privesc-linux

Linux privilege escalation — SUID/SGID abuse, kernel exploits, capabilities, sudo misconfig, cron jobs, writable paths, container escape

SKILL.md

Full skill instructions

Linux Privilege Escalation

When to Activate

  • Gained an initial unprivileged shell on a Linux host and need root or a higher-privileged account
  • Post-exploitation lateral/vertical movement on Linux servers, workstations, CI runners, or appliances
  • Container / Kubernetes pod foothold that needs to escape to the host node
  • Triaging a host for misconfig-based LPE (SUID, sudo, capabilities, writable units/cron) before reaching for kernel 0-day
  • CTF / lab challenges requiring privilege escalation with a defensible, detection-aware methodology

Technique Map

TechniqueATT&CKCWEReferenceScript
Automated + manual enumeration (LinPEAS/pspy/LES2)T1082, T1057CWE-200references/enumeration-tooling.mdscripts/linpriv_enum.py
Detection-aware / low-noise enumerationT1082CWE-200references/enumeration-tooling.mdscripts/linpriv_enum.py
SUID/SGID binary abuse (GTFOBins)T1548.001CWE-269references/suid-sudo-capabilities.mdscripts/cap_suid_hunter.sh
sudo misconfig + GTFOBins escapeT1548.003CWE-269references/suid-sudo-capabilities.mdscripts/cap_suid_hunter.sh
sudo host option LPE (CVE-2025-32462)T1548.003CWE-863references/suid-sudo-capabilities.mdscripts/sudo_cve_2025_check.sh
sudo chroot/NSS LPE (CVE-2025-32463)T1548.003CWE-829references/suid-sudo-capabilities.mdscripts/sudo_cve_2025_check.sh
Linux capabilities abuse (setuid/dac_read/sys_admin)T1548CWE-250references/suid-sudo-capabilities.mdscripts/cap_suid_hunter.sh
LD_PRELOAD / LD_LIBRARY_PATH sudo hijackT1574.006CWE-426references/suid-sudo-capabilities.mdscripts/cap_suid_hunter.sh
nf_tables double-free LPE (CVE-2024-1086)T1068CWE-416references/kernel-exploits.mdscripts/kernel_exploit_suggester.py
io_uring memory-sharing LPE (CVE-2024-0582/2025-21836)T1068CWE-416references/kernel-exploits.mdscripts/kernel_exploit_suggester.py
Dirty Pipe page-cache overwrite (CVE-2022-0847)T1068CWE-787references/kernel-exploits.mdscripts/kernel_exploit_suggester.py
GameOver(lay) OverlayFS (CVE-2023-2640/32629)T1068CWE-269references/kernel-exploits.mdscripts/kernel_exploit_suggester.py
udisks/libblockdev loop-mount LPE (CVE-2025-6019)T1068CWE-250references/service-misconfig-lpe.mdscripts/linpriv_enum.py
PAM allow_active bypass (CVE-2025-6018)T1068CWE-863references/service-misconfig-lpe.mdscripts/linpriv_enum.py
glibc ld.so Looney Tunables (CVE-2023-4911)T1068CWE-787references/service-misconfig-lpe.mdscripts/kernel_exploit_suggester.py
polkit pkexec PwnKit (CVE-2021-4034)T1548.001CWE-787references/service-misconfig-lpe.mdscripts/linpriv_enum.py
Cron/systemd/PATH/writable-file abuseT1053.003, T1574.007CWE-732references/service-misconfig-lpe.mdscripts/linpriv_enum.py
NFS no_root_squash SUID dropT1222.002CWE-732references/service-misconfig-lpe.mdscripts/linpriv_enum.py
runc fd-leak container escape (CVE-2024-21626)T1611CWE-668references/container-namespace-escape.mdscripts/container_escape_check.sh
Docker socket / privileged container escapeT1611, T1610CWE-269references/container-namespace-escape.mdscripts/container_escape_check.sh
cgroup release_agent / CAP_SYS_ADMIN escapeT1611CWE-269references/container-namespace-escape.mdscripts/container_escape_check.sh
Kubernetes pod/token escapeT1611CWE-668references/container-namespace-escape.mdscripts/container_escape_check.sh

Quick Start

# 0. Stabilize shell + baseline context
python3 -c 'import pty;pty.spawn("/bin/bash")'; export TERM=xterm
id; uname -a; cat /etc/os-release

# 1. Fast, detection-aware enumeration (custom, no external download needed)
python3 linpriv_enum.py --quick            # quick wins triage
python3 linpriv_enum.py --full --json out.json   # full sweep -> JSON evidence

# 2. SUID / capabilities / sudo triage (maps directly to GTFOBins)
./cap_suid_hunter.sh                        # ranks exploitable SUID + caps + sudo -l

# 3. sudo 2025 LPE check (no creds needed; default-config killers)
./sudo_cve_2025_check.sh                    # tests CVE-2025-32462 / -32463 + PwnKit

# 4. Kernel + glibc CVE mapping for current host
python3 kernel_exploit_suggester.py        # uname/glibc/distro -> ranked modern LPEs

# 5. If containerized, check escape surface
./container_escape_check.sh                 # runc fd-leak, docker.sock, caps, k8s token

# 6. Validate root, then drop SUID backup or stable persistence per ROE
id; cp /bin/bash /tmp/.b && chmod 4755 /tmp/.b   # only if authorized

OPSEC & Detection (summary)

TechniqueTelemetry / IOCDetection (Sigma/EDR)OPSEC note
LinPEAS / mass enumBurst of find / -perm, hundreds of reads, which/getcap spamauditd execve of linpeas; EDR file-scan anomalyPrefer targeted enum (linpriv_enum.py --quick); avoid full FS walks on EDR hosts
SUID/GTFOBins escapesetuid() to 0 from non-root parent, shell with -pauditd uid-change without login; Falco Run shell untrustedUse the least-noisy binary; many GTFOBins one-liners are flagged by name
sudo CVE-2025-32463syslog sudo ... CHROOT=, NSS libnss_*.so from world-writable pathElastic "Potential CVE-2025-32463 Sudo Chroot Execution"; auditd -R usagechroot dir + fake nsswitch.conf are durable IOCs — clean the tree
sudo CVE-2025-32462sudo log with -h/HOST mismatch vs real hostnameauditd sudo with --host not paired with -lleaves clean sudo log entry; blends with normal sudo
nf_tables CVE-2024-1086unshare/CLONE_NEWUSER + nftables from non-root; dmesg slab/UAFFalco Unprivileged Delegation of Page Faults; auditd unshare+nftnamespace creation is logged; disable userns to neutralize
io_uring LPEio_uring_setup syscall from unexpected procauditd syscall=io_uring_setup; eBPF LSMmany distros now ship io_uring_disabled=2
Looney Tunables CVE-2023-4911setuid exec with GLIBC_TUNABLES= containing =; core dumpsElastic "Potential Privilege Escalation via CVE-2023-4911"env var is recorded in auditd execve; unset before exec where possible
udisks CVE-2025-6019D-Bus Filesystem.Resize/Check, loop mount in /tmp w/o nosuidauditd mount w/o nosuid; Falco mount-from-loopleaves loop device + XFS image; detach + shred image
pkexec PwnKitpkexec with argc==0, GCONV_PATH= env, /var/... GConv moduleauditd pkexec + empty argv; Sigma proc_creation_lnx_pkexecdropped GConv .so + dir are IOCs; remove them
Container escape (runc)/proc/self/fd/* cwd, host paths from container, runc exec anomaliesFalco Container escape/Mount launched in container; CrowdStrike CWPescapes are heavily monitored in CWP — confirm scope before running
cron/PATH/writable unitnew file in /etc/cron*, systemctl daemon-reload, PATH-prepended binauditd watch on /etc/cron*,/etc/systemd/*; Sigma cron tamperrevert file mtimes / remove dropped scripts post-exploit

Detailed Sigma rules, auditd rule snippets and IOC lists live inside each reference file's Detection subsection.

Deep Dives

  • references/enumeration-tooling.md — LinPEAS/pspy/LES2/unix-privesc-check, the linpriv_enum.py methodology, quick-win checklists, and low-noise enumeration for EDR-monitored hosts.
  • references/suid-sudo-capabilities.md — SUID/SGID + GTFOBins, sudo misconfig escapes, sudo CVE-2025-32462 (host) and CVE-2025-32463 (chroot/NSS), Linux capabilities (cap_setuid/cap_dac_read_search/cap_sys_admin), and LD_PRELOAD/LD_LIBRARY_PATH sudo hijacking.
  • references/kernel-exploits.md — nf_tables CVE-2024-1086 (and 2026 nftables UAFs), io_uring CVE-2024-0582 / CVE-2025-21836, Dirty Pipe CVE-2022-0847, GameOver(lay) CVE-2023-2640, plus a kernel-CVE selection methodology and ROP/commit_creds primer.
  • references/service-misconfig-lpe.md — udisks/libblockdev CVE-2025-6018/6019 chain, Looney Tunables CVE-2023-4911, PwnKit CVE-2021-4034, polkit/D-Bus abuse, cron/systemd/PATH hijacking, writable /etc/passwd, and NFS no_root_squash.
  • references/container-namespace-escape.md — runc Leaky Vessels CVE-2024-21626, Docker socket / privileged-container / --pid=host / CAP_SYS_PTRACE escapes, cgroup-v1 release_agent, user namespaces, and Kubernetes service-account-token → pod escape.