Żądny wiedzy? Wbijaj na Mega Sekurak Hacking Party w maju! -30% z kodem: majearly

Za niekonwencjonalne użycie %00 otrzymał ~120 000 PLN nagrody w ramach bug bounty

22 grudnia 2019, 13:37 | W biegu | 0 komentarzy

Czasem prosta metoda daje dość spektakularne wyniki. Tak i było w tym przypadku.

Najpierw badacz próbował założyć konta z nietypowymi znakami w loginie (np. %00) – zakładając że może założy się admin%00, ale np. w trakcie umieszczania w bazie stosownego rekordu, feralne znaki zostaną jednak usunięte. Nic z tego, jednak założenie konta victim%00@domain.com skutkowało zwróceniem informacji typu: założyłeś konto z loginem: victimL@domain.com.

Losowa litera L? Niby tak choć np. taki login victim%00%00%00@domain.com dawał victimIdL@domain.com. Dalej losowo? Okazało się, że przy większej liczbie %00 badacz otrzymał całe bloki pamięci z serwera (loginy/hasła w plaintext, klucze RSA, …).

Istota problemu? Długość np. takiego stringu: abc%00 była kalkulowana jako 4, niby OK, ale przed momentem operacji na nim (tj. kopiowania) ciąg miał 3 bajty (%00 rzeczywiście było usuwane w trakcie wcześniejszej walidacji). Czwarty bajt był kopiowany z względnie losowego miejsca w pamięci. Więcej ciągów %00 – więcej losowych bajtów kopiowanych z pamięci.

Odosobniony przypadek? Niekoniecznie. Niedawno podobny bug zgłoszony był w mail.ru (z nagrodą $10 000).

Jeśli ktoś chciałby poznać więcej tego typu smaczków odsyłam również do naszej nowej książki o bezpieczeństwie aplikacji www.

–ms

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



Komentarze

Odpowiedz