Bypass 302 Found Response

200 OK, 302 Found itu apa?

Sebelum kita membahas lebih lanjut, kita perlu mengerti terlebih dahulu apa itu HTTP dan cara kerjanya. HTTP merupakan singkatan dari Hypertext Transfer Protocol, dimana HTTP adalah sebuah protokol pada application layer yang berguna untuk mentransfer informasi seperti dokumen, file, gambar, dan video antar komputer. Contoh dari penggunaan HTTP adalah komunikasi atau interaksi antara suatu komputer dengan web server. Secara singkat, komputer akan mengirimkan HTTP request ke web server, lalu web server akan mengembalikan request dalam bentuk HTTP response

HTTP response sendiri memiliki HTTP response status codes yang telah diatur oleh Internet Assigned Numbers Authority (IANA). HTTP response status codes terdiri dari tiga digit angka yang memiliki arti berbeda-beda pada setiap angkanya. Digit pertama dari HTTP response status codes menunjukkan class dari response dan dua digit setelahnya menunjukkan merupakan pembeda antara status code yang satu dengan yang lainnya. Terdapat lima class atau tipe HTTP response status codes, yaitu:

  • 1xx → informational response, artinya request telah diterima dan sedang diproses.
  • 2xx → successful, artinya request telah diterima, dipahami, dan accepted.
  • 3xx → redirection, artinya butuh tindakan lebih lanjut untuk menyelesaikan request.
  • 4xx → client error, artinya request mengandung bad syntax atau request tidak dapat dipenuhi.
  • 5xx → server error, artinya server gagal memenuhi request dimana request terlihat valid.

Contoh HTTP response status codes yang paling sering ditemui adalah 200 dan 404. HTTP response status codes 200 berarti response standar untuk HTTP request yang berhasil. Sedangkan HTTP response status codes 404 berarti sumber daya yang diminta tidak dapat ditemukan tetapi bisa jadi akan tersedia di masa yang akan datang. Untuk melihat seluruh HTTP response status codes, kalian bisa mengakses link wikipedia berikut https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Dalam exploit kali ini, akan ada 2 HTTP response status codes yang digunakan, yaitu HTTP response status codes 200 dan 302. HTTP response status codes 302 sendiri berarti pengalihan (sumber daya yang diminta telah dipindahkan) ke URL lain. Dengan mengganti HTTP response status codes yang awalnya 302 menjadi 200, maka kita dapat mengakses web server yang sebelumnya tidak bisa diakses.

Exploit

Di sini, saya mencoba mengakses halaman web http://previse.htb/index.php. Namun, setiap kali saya menuju halaman tersebut, saya dipindahkan kepada halaman login http://previse.htb/login.php. Oleh sebab itu, saya mencoba melakukan intercept request halaman index.php menggunakan aplikasi Burpsuite.

Ketika saya intercept request menggunakan aplikasi burpsuite, saya mengirim request yang ter-intercept tersebut ke dalam repeater untuk mempermudah melakukan pengiriman request berulang kali.

Sesampainya di repeater, saya mencoba mengirim pesan tersebut. Namun, kita mendapatkan respons “302 Found” (halaman web sedang dipindahkan sementara ke halaman web lain), bukannya “200 OK” (permintaan request berhasil).

Namun, apabila kita lebih jeli dalam melihat respons yang diberikan oleh server, kita dapat menemukan sesuatu yang cukup aneh. Hal itu adalah respons yang diberikan oleh server tetap menyertakan isi dari halaman http://previse.htb/index.php.

Kalau begitu, kita tetap bisa melihat isi dari web tersebut, dong? Jawabannya adalah iya! 

Pertama, kita intercept respons dari server menggunakan Burpsuite. Kemudian, kita ubah 302 Found menjadi 200 OK. Sehingga, browser akan menampilkan halaman web dan kita bisa melihat isinya. Kita bisa melakukannya secara manual maupun otomatis. Di sini, saya akan menunjukkan cara melakukannya secara otomatis.

Steps:

Pertama, kita menuju Proxy > Options > Intercept Server Responses > Centang box (Intercept responses based on …).

Kemudian, pada lokasi yang sama, kita menuju bagian “Match and Replace”.

Pada bagian “Match and Replace”, kita pilih Add. 

Pada bagian “Add”, kalian isi bagian yang kosong dengan ini:

Type : Response header

Match : 302 Found

Replace : 200 OK

Comment : Redirection Bypass

Setelah selesai mengisi, kalian pilih OK dan saatnya mencoba!

Kita buka halaman http://previse.htb/index.php dan tunggu hingga burpsuite menangkap request yang baru saja kita lakukan. Setelah tertangkap, kita forward request web kita.

Setelah forward request web kita, Burpsuite akan intercept respons dari web server juga. Sehingga, kita forward juga respons tersebut.

Ketika burpsuite menangkap respons dari web server, kita dapat lihat bahwa respons telah berubah menjadi 200 OK dan kita diarahkan ke index.php.

Arjuna Accha Dipa & Erik Hendrawan