web fuzzing i webaii
DESCRIPTION
Prezentacja z wewnętrznego spotkania Empathy - Internet Software House nt. web fuzzingu oraz WebAii.Zapraszamy na blog Empathy www.imagineblog.plTRANSCRIPT
Automatyzacja testowania:
Web fuzzing &
Beata Frączek
WebAii
O czym powiem:• Web Fuzzing
o Co to fuzzing?o Fuzzing a bezpieczeństwoo Jak się ma do aplikacji webowych?o Za i przeciwo Narzędzia (aplikacje i frameworki)
• WebAiio Co to i do czego służy?o Głównie zalety (i wady)o Demo
Webfuzzing ?ATAK? ZABAWKA HACKERA?TESTOWANIE
PRZYSZŁOŚCI?
WebfuzzingCo to fuzzing?
• Metoda testowania oprogramowania• Luki w bezpieczeństwie• Losowe dane
o Jakie? – najlepiej wadliwe (bazy payload-ów)o Co zrobi aplikacja?
Zaakceptuje i zachowa się nieprzewidzianie Cieszy się tester - nie cieszy się programista
Odrzuci i zachowa się według planuCieszy się tester – cieszy się programista
• Proces w pełni automatyczny• Nie stanowi standardowej metody testowania!
WebfuzzingCo to fuzzing?
Webfuzzin
g
Testy automatyczne
Testy automatyczne GrayBox
BlackBox
FuzzingJak się ma do aplikacji webowych?
Fuzzing – technika, Fuzzer – aplikacja
Działaniu fuzzera można poddawać:• Aplikacje działające lokalnie• Aplikacje sieciowe
• Aplikacje webowe !• Kontrolki ActiveX• Biblioteki współdzielone• Pliki• ...
WebfuzzingProces fuzzingu aplikacji webowej
Wykrycie potencjalnych
punktów wejściowych
Wygenerowanie i
przekazanie danych do programu
Raportowanie
Monitorowanie
WebfuzzingBłędy aplikacji webowych
Istnienie niebezpieczneRyzyko wystąpienia wysokie
• Cross-site Scripting (XSS)• Cross-site Request Forgery (CSRF)• Injection bugs (Code Injection, SQL Injection, LDAP Injection,
XPath Injection, SMTP Injection …)• Wyciek danych oraz zła obsługa błędów• Niepoprawne zarządzanie sesją (Session Fixation, Session
Poisoning itd.)• Path Traversal• Błędy autoryzacji i uwierzytelnienia
• Błędy logiczne? Błędy kombinowane?
Webfuzzing Straty:
• Utrata Danych• Podmiana Danych• Zniszczony wizerunek• Straty finansowe
Webfuzzing Straty:
Garbage in – garbage out
• Brak mechanizmu walidacji danych
• Brak mechanizmów badających tolerancje na nieprawidłowe dane
Fuzzer
FuzzingAplikacje i Frameworki
• Aplikacje:o Powerfuzzero Wapitio WFuzzo Rfuzz
• Frameworki:o Spike (typy danych
i struktury bloków, funkcje sieciowe)
o Rfuzz (Ruby)
o Język – dowolny. Polecane: Python, Ruby, Java
• do tworzenia oprogramowania testującego inne aplikacje pod kątem błędów bezpieczeństwa
• prostota • przejrzystość kodu źródłowego, • ogromnych możliwości manipulowania ciągami
tekstowymi.• mniej skomplikowanym niż C/C++,• napisanie w pełni funkcjonalnego programu zajmuje mniej czasu. • Minus: skryptowa natura Pythona
for w PHP wygląda znajomo: <?PHP for($i=1;$i <=5;$i++) {print $i.'<br />'; }?>
W Pythonie mniejfor i in range(1,6): print i
FuzzingFuzzery napisane w Pythonie
• Peach – wieloplatformowy framework, którego głównymi cechami są duże możliwości oraz prostota użycia
• Taof – fuzzer wyspecjalizowany w testowaniu protokołów sieciowych. Posiada rozbudowane GUI (Linux, Windows)
• SMUDGE – fuzzer wyłącznie protokołów sieciowych. • FileP – program do generowania zmodyfikowanych
plików na podstawie określonego wzorca i wysyłania ich do (testowanej) aplikacji.
• Antiparser – prosty framework
Składniki frameworku
Peach • Generators – służą do generowania różnego rodzaju
danych. Możemy używać także takich danych jak – złych adresów IP, nieprawidłowych łańcuchów tekstowych czy nieodpowiednich nazw plików.
• Publishers – jest to zbiór miejsc docelowych, do których będą wysyłane generowane dane. Peach pozwala nam wysyłać dane do standardowego wyjścia, plików, połączeń ODBC, TCP i UDP oraz sesji FTP
• Transformers – pozwalają zmieniać dane według określonego wzorca. Obsługiwane są m. in. kodowanie bzip2, gzip, algorytmy MD5 oraz SHA1, a także zmiana kodowania (UTF8, UTF16, URL).
• Group – grupy powiązane są z generatorami. Za ich pomocą możemy tworzyć schematy pracy generatorów i uzyskać nad nimi pełną kontrolę.
Autorski Fuzzer?Udowodnij programiście błąd :]
Bloki funkcjonalne odpowiedzialne za:
• nawiązywanie połączeń, wysyłanie, odbieranie oraz kodowanie danych • generowanie danych wysyłanych do aplikacji.• identyfikację punktów wejściowych• wykrywanie błędów.• agregowanie wyników działania fuzzera.
Każdy blok ma identyczny priorytet Jest integralną częścią fuzzera.
Wady i zalety fuzzingu:• Zalety:• Pełna automatyzacja testu!• Błędy trudne do identyfikacji za pomocą manualnych
testów• Możliwość szybkiego znalezienia błędu• Wady:• Błędy logiczne• Niejednolitość testów - wykorzystanie losowości • Pojedynczy test jest trudny do powtórzenia • Brak możliwości określenia dokładnego czasu
potrzebnego na wykonanie testu -> dynamicznie zmieniający się zbiór wartości testowych
WebAii™ Automation Framework
• Darmowa biblioteka .NET, .NET framework 3.5• Automatyzacja testów funkcjonalnych aplikacji
internetowych• Można zastosować do testów wydajnościowych
(performance)• Wsparcie dla ASP .NET• Zawiera przykłady w C# i VB .NET
WebAii™ Automation Framework
Biblioteka dedykowana do testów aplikacji Web 2.0• Rich Internet Applications (RIA)• AJAX• ASP .NET• Obsługa ramek• Obsługa okien dialogowych i pop-upów• Pełen dostęp do struktury DOM
WebAii™ Automation Framework
• zdolność testowania .NET• testowanie AJAX i Java Script• rozpoznawania różnych elementów stron www• testowanie Silverlighta
WebAii™ Automation Framework
Przeglądarki:• Wspólne API dla Internet Explorer 6 i 7, Firefox 2 i
3• konfiguracja przeglądarekŚrodowisko:• NUnit lub Visual Studio Team System• .NET framework 3.5, Visual Studio C# Express
2008• Primary Interop Assemblies (PIA)• Firebug, Internet Explore Developer Toolbar
WebAii™ Automation Framework
Źródła:• www.fuzzing.eu• www.fuzzing.org• Hakin9 09.05.2008• http://www.securitum.pl/