Wyniki konkursu „bezpieczni z robakiem”

Kilka dni temu zakończył się konkurs bezpieczeństwa organizowany przez papryQArz i intive. Niestety nikomu nie udało się włamać do przygotowanego specjalnie na tę okazję sklepu internetowego 🙁 Wyniki konkursu zostały już opublikowane na Facebooku, jednak gdyby ktoś przeoczył – poniżej lista zwycięzców, którzy zgłosili najciekawsze i najbardziej krytyczne błędy.

1. Paweł W.
2. Paweł N.
3. Karolina M.-D.
4. Monika S.
5. Daniel D.
6. Michał K.
7. Michał L.

Aby pokrótce opisać najpoważniejsze błędy zawarte na stronie, podzielmy je na 3 grupy:

1. Dobre praktyki
2. Błędy bezpieczeństwa
3. Błędy funkcjonalne

ad.1

  • Brak implementacji CSP.
  • Brak odpowiednich flag na ciasteczkach (httpOnly, secure).
  • Możliwość wyświetlenia w oknie (brak chociażby X-FRAME-OPTIONS)
  • Brak prawidłowego certyfikatu SSL (w tym brak przekierowań na SSL).
  • Brak captchy / ochrony przed masowym wysyłaniem formularzy.
  • Wysyłanie hasła w mailu rejestracyjnym (I nie, nie oznacza to, że hasło przechowywane jest bez szyfrowania).

 

ad.2

  • Globalnie – brak tokenów CSRF, możliwość wysłania każdego formularza z kontekstu użytkownika.
  • SQL Injection w wyszukiwarce, wprowadzone dane nie są parsowane, znak „ ‚ ” był tutaj wektorem wejściowym.
  • SQL Injection w ciasteczku z informacją o produkcie znajdującym się w koszyku.
  • XSS Na stronach: logowania, rejestracji, kontaktu oraz wyszukiwarce.
  • Sonda – zabezpieczenie na poziomie ciastka, możliwość masowego oddawania głosów w formularzu.
  • Przewidywalny `token` używany do aktywacji konta użytkownika.
  • Możliwość przeglądania zamówień innych użytkowników.
  • Ogólnie dostępna strona logowania do panelu administracyjnego.
  • Konfiguracja serwera – wyświetlanie komunikatów z błędami.

 

ad.3

  • Brak stron polityka prywatności i regulaminu.
  • Przy zapisie odwracana zawartość pól adresu na dostawę i do faktury.
  • Brak funkcjonalności przypomnienia hasła.
  • Ankieta – nieprawidłowe zaokrąglanie wyników przy wyświetleniem.
  • Na ekranie podsumowania zamówienia przycisk `wstecz` składał zamówienie.
  • Widoczne placeholdery na stronie z danymi kontaktowymi
  • Niewidoczne nagłówki „MENU” oraz „KOSZYK”.
  • Brak weryfikacji akceptacji regulaminu przy rejestracji.

Dodatkowo oczywiście do znalezienia było mnóstwo literówek, liczne błędy składniowe. Błędy walidacji, oraz różne wymagania w formularzach na powiązanych ze sobą stronach. Kilku rzeczy niestety nie znaleźliście:

  • Po wyprowadzeniu błędów w kodzie JS istniała możliwość zapisu do newslettera, który otwierał kolejny SQL Injection.
  • Podobnie zapis opcji w panelu pozwalał na przeprowadzenie iniekcji.
  • Hasło do panelu administracyjnego można było uzyskać łamiąc hash hasła z bazy danych, oczywiście po wcześniejszej enumeracji zawartości bazy.

 

4

Dodaj komentarz