Czym jest HTTP Request Smuggling? Animacja

12 lutego 2020, 11:21 | W biegu | komentarze 4
Tagi: ,
: zin o bezpieczeństwie - pobierz w pdf/epub/mobi.

Eksperymentalnie, przez tydzień postaramy się codziennie publikować minimum jedną podatność (nową, lub po prostu ciekawą) – wpisy można obserwować pod tagiem vulnz (tutaj RSS).

W zeszłym roku pojawił się ~nowy rodzaj ataków: HTTP Request SmugglingJak sama nazwa wskazuje chodzi o pewne „przemycanie” żądań HTTP w komunikacji atakującego. Po co? Ano po to żeby np. dostać się do panelu administracyjnego bez uwierzytelnienia czy wstrzyknąć coś „ciekawego” innemu użytkownikowi atakowanego serwisu webowego.

Ciekawe wykorzystanie tego błędu zapewne jeszcze przed nami, a jako zajawkę pokazano atak na Paypala (za oba linkowane warianty wypłacono niemal $80 000…). Jeśli ktoś nie ma podstaw związanych z protokołem HTTP (zerknij na nasz przykładowy rozdział z książki), może szybko się zniechęcić. Dlatego mamy dla Was przygotowaną od zera interaktywną animację pomagającą  zrozumienie o co tak naprawdę chodzi.

Celem będzie uzyskanie nieuprawnionego dostępu do katalogu /admin. Przed startem oglądania warto przypomnieć sobie, że protokół HTTP daje możliwość ustalenia długości body żądania HTTP na dwa sposoby. Nagłówek Content-Length:

GET /test HTTP/1.0
Content-Length: 1

a

Druga opcja to nagłówek Transfer-Encoding z wartością chunked (jedynka oznacza długość jeden, a ostatnie zero to zakończenie żądania HTTP).

GET /test HTTP/1.0
Transfer-Encoding: chunked

1
a
0

A co się stanie jeśli użyjemy jednocześnie obu nagłówków? Może być z tego niezła zadyma, co obrazujemy na animacji.

PS
Animacja przestawia tylko jeden z możliwych wariantów tematu HTTP request smuggling.

–ms

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Dario

    Animacja ma błąd :) , bo na początku autor korzysta z skrótu , a potem z . Czeski błąd?

    Odpowiedz
  2. heliar

    „HTTP Request Smuggling was first documented back in 2005 by Watchfire …” – albinowax nie jest autorem tego błędu. :)

    Odpowiedz
    • Dlatego „~nowy” nie „~nowy”. AFAIR jest też o tym mowa w stosownym RFC dotyczącym HTTP (zostawiam jako zadanie dla czytelników :) – może to nawet było wcześniej tam zapisane niż Watchfire.

      Tak czy siak – dzięki też za zwrócenie uwagi na to.

      Odpowiedz

Odpowiedz