Matuesz Olejarka - Realia testów bezpieczeństwa

Post on 22-Jun-2015

1.173 views 0 download

description

Prezentacja Matuesza Olejarki przedstawiona na drugim spotkaniu KraQA. Kraków, 31 marca 2014r.

Transcript of Matuesz Olejarka - Realia testów bezpieczeństwa

Mateusz OlejarkaMateusz Olejarka

Realia testów bezpieczeństwaRealia testów bezpieczeństwa

22

Kto zacz?

• Starszy specjalista ds. bezpieczeństwa IT, SecuRing

• Ocena bezpieczeństwa aplikacji webowych i mobilnych

• Przegląd kodu źródłowego i konfiguracji

• (były) programista

33

Agenda

• Testy bezpieczeństwa, czyli co?

• Potrzeba, zakres, przygotowania

• Realizacja – narzędzia i przykłady błędów

• Raportowanie, co dalej?

44

Testy bezpieczeństwa

• Co to znaczy bezpieczna aplikacja?!

• Problem z przełożeniem tego na zakres testów

• Wymagania związane z bezpieczeństwem aplikacji

• Funkcjonalne

• Niefunkcjonalne

55

Testy funkcjonalne vs Testy bezpieczeństwa

Symulacja działań użytkownika

Symulacja działań intruza

Scenariusze użyciaCoś co jest w interfejsie

Scenariusze nadużyć (ataku)Coś czego nie ma w interfejsieWymaga analizy zagrożeń

Opisane (lub intuicyjne) wymagania

Z reguły brak zdefiniowanych wymagań (zwłaszcza niefunkcjonalnych)

Pozostawione defekty może znaleźć użytkownik

Pozostawione defekty może znaleźć intruz

Defekt w niszowej funkcjonalności z reguły nie jest bardzo istotny

Defekt w dowolnym miejscu systemu może mieć ogromne skutki

66

Przygotowania

• Biznes aplikacji

• Modelowanie zagrożeń

• Dostępy, konta, kontakty

• Dokumentacja, model uprawnień

• Rekonesans funkcjonalny

77

Realizacja

• Mapa funkcjonalna aplikacji

• Mechanika aplikacji

• Wygenerowane scenariusze ataku

• Checklisty dla standardowych mechanizmów,formularzy, list, usług…

• A może ASVS ?

88

Realizacja

99

Zbrojownia

• Przeglądarki – IE, Chrome, Firefox

• Narzędzia deweloperskie pod klawiszem F12

• Dodatki – Firebug, Web Developer

• HTTP proxy – Burp, Fiddler

• Myśl, myśl, myśl

1010

Zbrojownia

• HTTP proxy

Przeglądarka SerwerProxy

1111

Przykłady błędów

• Elementy zablokowane/ukryte

• Globalny identyfikator

• Zmiana hasła

• Przypomnij hasło

1212

Elementy zablokowane/ukryte

• zablokowane: pole input z atrybutem disabled

• przeglądarka nie wysyła wartości pola przy wykonaniu akcji

1313

Elementy zablokowane/ukryte

• Usuwamy atrybut disabled z kodu html pola input

• przeglądarka wysyła wartość pola przy wykonaniu akcji

1414

Web Developer

1515

Elementy zablokowane/ukryte

• ukryte: pole input typu hidden

• przeglądarka wysyła wartość pola, ale nie widać go na stronie

1616

Web Developer

1717

Elementy zablokowane/ukryte

• Błąd jest dopiero wtedy, gdy

• Zmiana wartości pola zablokowanego/ukrytego jest akceptowana przez serwer bez dodatkowych pytań

• Pozwala na obejście logiki aplikacji

• Podobnie bywa z walidacją danych po stronie kodu JavaScript

1818

Globalny identyfikator

• Nazwa często zawiera id

• Liczba całkowita

• Co będzie jak dodamy 1 ?

1919

Zmiana hasła

2020

Zmiana hasła bob@securing.pl

2121

Zmiana hasła

• Mając adres email użytkownika możemy zmienić mu hasło

• Skutki

• Atak DoS poprzez masową zmianę haseł

• Uszczerbek na wizerunku

2222

Przypomnij hasło

• Wysyłamy adres email użyty w rejestracji

• Dostajemy link w postaci: http://myapp.securing.pl/reminder/{hash}

• Po wejściu na link widzimy:

2323

Przypomnij hasło

• eve1@securing.pl

• 08f08f0900950c00d10c008c09b0ce0c00be0d00cd0c40c90c20890cb0c7

2424

Przypomnij hasło

• eve1@securing.pl

• 08f08f0900950c00d10c008c09b0ce0c00be0d00cd0c40c90c20890cb0c7

• Drugi raz przypominamy:

• 08f08f0910950c00d10c008c09b0ce0c00be0d00cd0c40c90c20890cb0c7

2525

Przypomnij hasło

• eve1@securing.pl

• 08f08f08c0950c00d10c008c09b0ce0c00be0d00cd0c40c90c20890cb0c7

• eve2@securing.pl

• 08f08f08d0950c00d10c008d09b0ce0c00be0d00cd0c40c90c20890cb0c7

2626

Przypomnij hasło

• eve1@securing.pl

• 08f08f08c0950c00d10c008c09b0ce0c00be0d00cd0c40c90c20890cb0c7

• eve2@securing.pl

• 08f08f08d0950c00d10c008d09b0ce0c00be0d00cd0c40c90c20890cb0c7

2727

Przypomnij hasło

• aab@securing.pl

• 08f08f0920950bc0bc0bd09b0ce0c00be0d00cd0c40c90c20890cb0c7

• aba@securing.pl

• 08f08f0930950bc0bd0bc09b0ce0c00be0d00cd0c40c90c20890cb0c7

2828

Przypomnij hasło

• Wygląda na szyfr podstawieniowy

• Na końcu jest zaszyfrowany adres email

• A może to tekst zakodowany szesnastkowo ?

2929

Przypomnij hasło

• hash z linku dla aba@securing.pl:

• 08f08f0940950bc0bd0bc09b0ce0c00be0d00cd c4 c9 c2 89 cb c7

• hex(aba@securing.pl) = 616261407365637572 69 6e 67 2e 70 6c

• różnica: 0x5b (d’91)

3030

Przypomnij hasło

• Szyfr Cezara z kodowaniem szesnastkowym - odwracalny

• Tekst jawny ma postać:

• 449:aba@securing.pl

• Na początku jest licznik rosnący o 1 przy kolejnym resecie hasła

3131

Przypomnij hasło

• mając:

• adres email użytkownika

• ustawiając dobrą wartość licznika

• możemy poznać hasło innego użytkownika

• Skutki ?

3232

Raportowanie

• Ogólny opis problemu

• Sposób odtworzenia

• Ryzyko = f(skutki, warunki wykorzystania)

• Rekomendacje

3333

Raportowanie

• Ogólny opis problemu

• Sposób odtworzenia

• Ryzyko = f(skutki, warunki wykorzystania)

• Rekomendacje

• Opisuj błąd tak, jakby osoba mająca robić retesty była seryjnym mordercą i znała Twój adres

3434

Co dalej ?

• Retesty wewnętrzne

• Weryfikacja podatności z raportu w innych aplikacjach

• Rozbudowa bazy wiedzy

• Rzut oka na OWASP ASVS

3535

???

3737

Dziękuję za uwagę

http://www.securing.pl e-mail: info@securing.pltel. (12) 4252575fax. (12) 4252593

Mateusz Olejarkamateusz.olejarka@securing.pl