Читать книгу Na tropie błędów. Przewodnik hakerski - Peter Yaworski - Страница 37
5.
HTML INJECTION I FAŁSZOWANIE TREŚCI
Dodanie kodu HTML w serwisie HackerOne – część 2
ОглавлениеPoziom trudności: Średni
URL: https://hackerone.com/reports/
Źródło: https://hackerone.com/reports/112935/
Data zgłoszenia: 26 stycznia 2016
Nagroda: 500 $
Kiedy organizacja rozwiązuje zgłoszenie i tworzy poprawkę dla znalezionej podatności, nie zawsze może ona okazać się wolna od błędów. Po przeczytaniu raportu De Ceukelaire’a postanowiłem sprawdzić, jak po naprawie edytor Markdown wyświetlał nieoczekiwane wejście. W tym celu przesłałem następujący tekst:
[test](http://www.torontowebsitedeveloper.com "test ismap="alert xss" yyy="test"")
Pamiętaj, że w celu utworzenia znacznika kotwicy w Markdownie powinieneś podać adres URL i atrybut title otoczony podwójnym cudzysłowem w nawiasie. By przetworzyć atrybut title, Markdowna musi śledzić otwierający cudzysłów, następującą zawartość i zamykający cudzysłów.
Byłem ciekaw, czy jestem w stanie zmylić Markdowna dodatkowymi cudzysłowami i atrybutami, dzięki czemu również będzie je śledzić. Z tego powodu dodałem ismap= (prawidłowy atrybut HTML), yyy= (nieprawidłowy atrybut HTML) i dodatkowe cudzysłowy. Po wysłaniu wejścia edytor Markdown przetworzył kod w następujący HTML:
<a title="test" ismap="alert xss" yyy="test" ref="http://www. toronotwebsitedeveloper.com">test</a>
Zauważ, że poprawka z raportu De Ceukelaire’a omyłkowo utworzyła inny błąd, który pozwalał generować dowolny HTML przez parser Markdowna. Mimo że nie mogłem od razu zgłosić tego błędu, pomyślne dodanie HTML-a było wystarczającym dowodem dla serwisu HackerOne na odwrócenie poprzedniej poprawki i naprawę inną metodą. Możliwość dodania dowolnego kodu HTML mogło skutkować kolejnymi podatnościami, dlatego serwis nagrodził mnie wypłatą 500 $.
Wnioski
Aktualizacja kodu nie zawsze oznacza naprawę wszystkich podatności. Nie zapominaj sprawdzać zmian i bądź w tym czujny. Wdrożenie poprawki oznacza nowy kod, który może zawierać błędy.