Mereka menemukan versi baru dari serangan Penyelundupan Permintaan HTTP

Los sistem web di mana frontend menerima koneksi melalui HTTP / 2 dan meneruskannya ke backend melalui HTTP / 1.1 htelah terkena versi baru dari serangan "Penyelundupan Permintaan HTTP", Ini memungkinkan dengan mengirimkan permintaan klien yang dirancang khusus, untuk membagi konten permintaan pengguna lain yang diproses dalam aliran yang sama antara frontend dan backend.

Serangan itu dapat digunakan untuk menyuntikkan kode JavaScript berbahaya dalam sesi dengan situs yang sah, melewati sistem pembatasan akses dan mencegat parameter otentikasi.

Penulis studi mendemonstrasikan kemungkinan menyerang sistem Netflix, Verizon, Bitbucket, Netlify CDN, dan Atlassian, dan menerima $56.000 dalam program hadiah untuk mengidentifikasi kerentanan. Masalahnya juga telah dikonfirmasi dalam produk F5 Networks.

Masalahnya sebagian memengaruhi mod_proxy di server http Apache (CVE-2021-33193), perbaikan diharapkan dalam versi 2.4.49 (pengembang diberitahu tentang masalah pada awal Mei dan menerima 3 bulan untuk memperbaikinya). Di nginx, kemampuan untuk secara bersamaan menentukan header "Content-Length" dan "Transfer-Encoding" diblokir di versi sebelumnya (1.21.1).

Prinsip pengoperasian metode baru permintaan yang cocok dalam lalu lintas mirip dengan kerentanan yang ditemukan oleh peneliti yang sama dua tahun lalu, tetapi terbatas pada antarmuka yang menerima permintaan melalui HTTP / 1.1.

Serangan "Penyelundupan Permintaan HTTP" klasik didasarkan pada fakta bahwa frontend dan backend menafsirkan penggunaan header HTTP "Content-Length" secara berbeda (menentukan ukuran total data dalam permintaan) dan "Transfer-Encoding: chunked" ( memungkinkan Anda untuk mentransfer data dalam potongan) ...

Misalnya, jika antarmuka hanya mendukung "Content-Length" tetapi mengabaikan "Transfer-Encoding: fragmented", penyerang dapat mengirim permintaan yang berisi header "Content-Length" dan "Transfer-Encoding: fragmented", tetapi ukurannya id "Panjang konten" tidak cocok dengan ukuran string yang dipotong. Dalam hal ini, frontend akan memproses dan mengarahkan permintaan sesuai dengan "Panjang konten", dan backend akan menunggu blok selesai berdasarkan "Transfer encoding: chunked".

Berbeda dengan protokol HTTP / 1.1 tekstual, yang diurai pada level baris, HTTP / 2 adalah protokol biner dan memanipulasi blok data dengan ukuran yang telah ditentukan. Namun, HTTP / 2 gunakan pseudo-header yang sesuai dengan header HTTP normal. Saat berinteraksi dengan backend menggunakan protokol HTTP / 1.1, frontend menerjemahkan pseudo-header ini di header HTTP / 1.1 HTTP yang serupa. Masalahnya adalah backend membuat keputusan tentang analisis transmisi berdasarkan header HTTP yang ditetapkan oleh frontend, tanpa mengetahui parameter permintaan asli.

Bahkan dalam bentuk pseudo-header, nilainya "Content-length" dan "transfer-encoding" mereka dapat dialirkan, meskipun tidak digunakan dalam HTTP / 2, karena ukuran semua data ditentukan dalam bidang terpisah. Namun, saat mengonversi permintaan HTTP / 2 ke HTTP / 1.1, header ini melewatinya dan dapat membingungkan backend.

Ada dua opsi serangan utama: H2.TE dan H2.CL, di mana backend tertipu oleh pengkodean transfer yang salah atau nilai panjang konten yang tidak sesuai dengan ukuran sebenarnya dari badan permintaan yang diterima oleh frontend melalui Protokol HTTP / 2.

Sebagai contoh serangan H2.CL, ukuran yang salah ditentukan dalam pseudo-header panjang konten saat mengirimkan permintaan HTTP / 2 ke Netflix. Permintaan ini mengarah pada penambahan tajuk Panjang Konten HTTP serupa ketika mengakses backend melalui HTTP / 1.1, tetapi karena ukurannya di Panjang Konten kurang dari yang sebenarnya, sebagian data dalam antrian diproses sebagai awal dari permintaan berikutnya.

Attack Tools telah ditambahkan ke Burp's Toolkit dan tersedia sebagai ekstensi Turbo Intruder. Proksi web, penyeimbang beban, akselerator web, sistem pengiriman konten, dan konfigurasi lain di mana permintaan dialihkan dalam skema frontend-backend rentan terhadap masalah.

sumber: https://portswigger.net


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.