Kita semua telah melihatnya - presentasi konvensi menjatuhkan teknik baru yang mewah, dan perangkat baru yang hangat dirilis. Kemudian selama bulan-bulan dan tahun-tahun berikutnya, modifikasi lingkungan dan perangkat dibiarkan tidak terawat sampai sangat tidak berguna. Sekarang saya tidak akan membiarkan pernyataan itu ke Penyelundup Permintaan HTTP, dan sekarang saya senang memberikan informasi tambahan tentang penggantian utama yang diluncurkan minggu terakhir. Kiriman ini akan menjelaskan perubahan utama.

Membuka kunci akurasi yang ditingkatkan

Salah satu peningkatan terpenting dalam HTTP Request Smuggler adalah teknik pemindaian berbasis waktu, yang dapat menemukan kerentanan HTTP Request Smuggling yang dapat dicapai dengan hampir nol bahaya negatif palsu. Itu selalu memiliki beberapa positif palsu, tetapi harga positif palsu biasanya sangat rendah sehingga tidak menjadi masalah. Namun, mengingat fakta bahwa pencarian saya atas penyelundupan permintaan dulu dirilis untuk umum, bagian yang tepat dari situs web yang rentan kini telah menambal sistem mereka. Batas dalam berbagai struktur rawan telah menaikkan harga positif palsu alat ke tingkat yang mengkhawatirkan. Yang mengatakan, situs web yang kurang cenderung juga berpotensi kurang dapat dikelola untuk kerusakan yang tidak disengaja ...

Karena itu, saya telah memutuskan bahwa inilah saatnya untuk meluncurkan fitur yang saya kodekan pada bulan Januari untuk membantu penelitian saya, namun bertekad untuk menahan peluncuran publik pendahuluan HTTP Request Smuggler karena dapat digunakan untuk menyebabkan kerusakan besar yang tidak disengaja.

Karakteristik ini berpotensi untuk secara robotik mencoba tahap 'konfirmasi' yang tidak stabil secara teratur dari serangan penyelundupan permintaan, daripada memerlukan interaksi pengguna untuk meluncurkannya. Pada rilis ini, jika Anda mengizinkan preferensi poc: maka ketika Penyelundup Permintaan HTTP menganggap tujuan rentan, ia akan mencoba tahap penegasan dan mendokumentasikan kesulitan 2d berjudul Penyelundupan Permintaan HTTP Dikonfirmasi jika berhasil. Jika Anda memindai dalam skala besar dan tidak punya waktu untuk menyelidiki temuan yang mungkin positif palsu, cukup fokuskan pada temuan yang terbukti. Seperti biasa, harap perhatikan bahwa pendekatan konfirmasi tidak dapat diandalkan, dan cenderung negatif palsu pada situs web pengunjung yang berlebihan - jadi temuan yang belum dikonfirmasi juga mungkin tetap menarik.

Mendeteksi ATS

Selama beberapa bulan terakhir, di tengah banjir email yang meminta saya untuk membantu mengeksploitasi struktur unik (tolong, tidak lebih), saya memperoleh beberapa pemikiran dan saran yang berwawasan luas. Ini tumbuh menjadi dasar untuk berbagai fitur baru.

Seperti yang saya nyatakan sebelumnya, energi sebenarnya dari metode pengaturan waktu adalah tidak adanya negatif palsu. Namun, Erlend Oftedal menentukan pengecualian - Apache Traffic Server (ATS) yang tidak ditambal tidak terdeteksi. Itu tumbuh menjadi server ini secara internal tidak konsisten tentang apakah itu harus memprioritaskan konten-panjang atau pengkodean chunked, membuatnya tidak mungkin untuk mengikuti penilaian cerdas yang baik apakah itu hanya rentan atau tidak. Satu-satunya cara untuk menemukan server dengan perilaku ini adalah dengan benar-benar mencoba bukti serangan berpikir dan melihat apakah itu berhasil. Karena itu, saya telah membawa alternatif 'lompati langsung ke poc' yang akan melakukan itu. Harap perhatikan bahwa mungkin ada tujuan ini tidak selalu merupakan metode default - ini benar-benar tidak dapat diandalkan sehingga Anda dapat mengandalkan untuk melihat banyak positif dan negatif palsu juga. Untungnya, setelah banyak pemindaian, tampaknya ATS memiliki potensi khusus untuk menghindari strategi deteksi berbasis waktu.

Meningkatkan ketahanan muatan

Erlend juga memperhatikan setiap kemungkinan lain untuk meningkatkan perlindungan HTTP Request Smuggler - StackOverflow membawa beberapa ulasan tentang server 'memecahkan' permintaan kecil, yang mungkin akan merusak serangan desync yang dapat dilakukan. Untuk mengatasi ini, saya telah mengirimkan pilihan 'pad segalanya' yang memenuhi semua permintaan penyelidikan hingga lebih dari 40kb.

mile Fugulin pernah mengaduk-aduk kode pasokan gnunicorn yang mencari untuk menambal kerentanan penyelundupan permintaan tersebut, ketika dia melihat yang baru, berkat baris berikut yang menganalisis header Transfer-Encoding :

chunked = value.lower() == "chunked"

Penyelundup Permintaan HTTP dulu sudah memanfaatkan ini dengan muatan berikut :

Transfer-Encoding: cow, chunked
Transfer-Encoding: chunked, cow

tetapi mile melihat beberapa front-end telah memfilter penyandian yang tidak dikenal, dan menasihati strategi pilihan penggunaan 'identitas' penyandian yang benar-benar otentik (per RFC 2616) dan sering masuk daftar putih :

Transfer-Encoding: identity, chunked