Apa itu HTTP Basic Authentication? HTTP Basic Authentication (Basic Auth) adalah salah satu mekanisme paling sederhana untuk proteksi akses di HTTP.
- Server minta client kirim username + password.
- Client mengirim kredensial dalam bentuk Base64-encoded di header HTTP.
- Jika benar → server kasih akses. Kalau salah → server balas
401 Unauthorized.
Cara Kerja
- Client akses resource dilindungi
GET /admin.cgi?sid=1 HTTP/1.1 Host: www.example.com - Server balas 401 Unauthorized + header
WWW-AuthenticateHTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Restricted Area" - Client kirim ulang request dengan header
AuthorizationGET /admin.cgi?sid=1 HTTP/1.1 Host: www.example.com Authorization: Basic YWRtaW46cGFzc3dvcmQ=👉
YWRtaW46cGFzc3dvcmQ=adalah Base64 dari:admin:password - Server cek kredensial → kalau valid, balas
200 OK.
Ciri-Ciri Basic Auth
- Tidak ada form login HTML, browser langsung munculkan popup login.
- Sangat lemah, karena password hanya di-encode Base64 (mudah dibongkar).
- Biasanya dipakai untuk halaman admin lama / CGI (contohnya Shoutcast admin).
Contoh manual pakai curl
Kalau kamu tahu user & pass:
curl -u admin:12345 http://www.example.com:30000/admin.cgi?sid=1
Curl otomatis menambahkan header:
Authorization: Basic YWRtaW46MTIzNDU=
Bedanya dengan Form Login
| Basic Auth | Form Login |
|---|---|
Username & password dikirim via HTTP Header (Authorization) |
Username & password dikirim via body (POST) atau URL (GET) |
Ditandai dengan WWW-Authenticate: Basic realm="..." |
Ada <form> HTML dengan input username & password |
| Browser popup login otomatis | Login page dengan HTML form |
| Sangat simpel tapi lemah | Bisa lebih kompleks (captcha, CSRF, dsb.) |
👉 Jadi, saat kamu lihat WWW-Authenticate: Basic realm="Shoutcast Server", itu jelas pakai HTTP Basic Authentication.
Uji coba login pada url http://www.coba.com:30000/admin.cgi?sid=1 dengan hydra
hydra -V -f -l admin -P 1000000-password-seclists.txt -s 30000 www.ujcoba.com http-get '/admin.cgi?sid=1'
-
-V→ verbose, tampilkan setiap attempt (user+password yang sedang dicoba). -
-f→ berhenti otomatis setelah menemukan satu kombinasi valid. -
-l admin→ username yang dipakai adalahadmin(fix, bukan daftar). -
-P 1000000-password-seclists.txt→ file wordlist berisi daftar password yang akan dicoba. -
-s 30000→ port target adalah30000(karena default HTTP biasanya port 80). -
www.ujicoba.com→ nama host target. -
http-get→ modul yang dipakai Hydra, dalam hal ini untuk menyerang HTTP Basic Authentication via GET request. -
'/admin.cgi?sid=1'→ path yang dilindungi Basic Auth. Dikutip'...'supaya zsh/bash tidak mengacaukan karakter?
Jadi maksud keseluruhan
Hydra akan mencoba login ke
http://www.ujicoba.com:30000/admin.cgi?sid=1
menggunakan usernameadmindan password-password dari file1000000-password-seclists.txt.
Hydra akan menampilkan setiap percobaan, dan berhenti begitu menemukan password yang valid.
Output kalau berhasil
Biasanya Hydra akan menampilkan sesuatu seperti ini:
[30000][http-get] host: www.ujicoba.com login: admin password: 123456 1 of 1 target successfully completed, 1 valid password found