Testy penetracyjne webaplikacji piotr.konieczny@niebezpiecznik.pl
niebezpiecznik.pl testujemy (web)aplikacje, ludzi i sieci komputerowe pod kątem odporności na ataki (nie tylko komputerowe...) doradzamy i konsultujemy projekty IT pod kątem bezpieczeństwa szkolimy programistów i administratorów
Dziś wszystko jest Autostrada A4 webaplikacją...
Autostrada A4
Autostrada A4
Czym jest bezpieczeństwo (web)aplikacji?
Ciągła walka!
z developerami mam zabezpieczenia, ale źle je stosuję
z zarządem (budżet) małe kłamstwo, duże kłamstwo, statystyka
z czasem 0day e na Twitterze (sic!)
No, srsly! 0 daye na Twitterze!
ale nie tylko tam
http://explo.it
Ciągla Walka (w liczbach) niebezpiecznik.pl odpiera ok. 60 ataków dziennie a wystarczy jeden 0day na Wordpressa i leżymy
Z kim walczymy?
Lata 70-90 vs "lata neostrady" umiejętność myślenia, zdolności programistyczne tzw. "hacking" to wyzwanie umiejętność czytania programy do "hakowania" hacking to LOL! & $$$
zone-h.org @LulzSec: we did it for teh lulz
Bezpieczeństwo Webaplikacji to nie tylko bezpieczeństwo kodu
Techniki Ataków masowe lub ukierunkowane warstwa 3: znane dziury w protokołach/urządzeniach/usługach warstwa 7: SQL injection, XSS, CSRF, inne ataki na webaplikacje warstwa 666: dostęp do treści opublikowanych przez pomyłkę (czeski rząd ujawnia agentów na stronach www) http://niebezpiecznik.pl/post/mon-i-pkw-ujawniaja-tajne-dane-o-polskim-wojsku/ http://niebezpiecznik.pl/post/poradnik-jak-nie-dac-sie-zatrzymac-na-granicy-usa/
Błędy, bugi, podatności, dziury są, były i będą badanie Carnegie Mellon University s CyLab, 1 KLOC (1000 linii kodu) zawiera ~ 30 bugów czasem zagrażają życiu THERAC25 - race condition, 5 osób, 1985r. Ariane 5 - overflow, 5 milionów USD Mars - metric units, 125 milionów USD, 1999 LA Airport - 2^32, max 50 dni, brak restartu.
Projektowanie oprogramowania Czy kiedykolwiek przed projektowaniem (web)aplikacji wykonałeś tzw. threat modeling? Czy masz przygotowaną "wycenę zasobów" dla swojej (web)aplikacji? Jakie standardy dot. jakości oprogramowania znasz/spełniasz? np. Systems Development Life Cycle (SDLC)
Przykłady ataków na polskie serwisy
WYKOP. PL można (było) zaatakować nie dotykając webaplikacji
Systemy developerskie i testowe
O2.pl - kciuk w dół
o2.pl - kciuk w dóŀ Kiepskie usability serwisu może przerodzić się w błąd bezpieczeństwa
Błędy wynikające z architektury
Niezaufany Kanał Komunikacyjny i Granice Zaufania
`
Paradoks: wersje mobilne Ograniczona funkcjonalność (liczy się wygoda) - np. brak CAPTCHA oraz cache owanie danych - http://niebezpiecznik.pl/post/uwaga-na-facebookowa-aplikacje-makemelaughnow/! "Desynchronizacja" z głównym projektem - Programiści przy patchowaniu głównej wersji serwisu, zapominają o patchowaniu wersji mobilnej...! Problemy zrootowanych telefonów - zapis danych na karcie SD - OWASP Mobile Jailbreaking Cheet Sheet! https://www.owasp.org/index.php/ios_developer_cheat_sheet https://www.owasp.org/index.php/owasp_mobile_security_project
Błędy wynikające z niewiedzy programisty! część praktyczna
Fingerprinting serwera HTTP!?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
Fingerprinting serwera HTTP!?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 Niebieski słoń 5.3.0 Królik 5.0.0 5.0.3 Rozmazane logo PHP 5.1.3 5.2.13 Czarny pies 4.3.11 4.4.6 oraz 5.0.4 5.1.2 Brązowy pies 4.3.0 4.3.10 Twarz z frytkami 4.0.0 4.2.3
Przetestuj pole data urodzenia
pole data Wy - czy format daty prawidłowy (15. miesiąc?) - czy można pominąć to pole My - czy walidacja odbywa się po stronie serwera? - czy można ustawić datę z przyszłości? - czy wartość jest powtarzana w kolejnych krokach formularza (na stronie www)? czy można wstrzykiwać np.<script></script> - czy wartość trafia do bazy danych? próba ataku SQL injection - co, jeśli podamy liczbę ujemną, UTF-8, etc?
Obejście filtrów ' or 'a' = b'1100001 ' or 'a' = x'61 ' or 1 = true ' or round(pi(),1)+true+true = version() # 3.1+1+1 = 5.1 aes_encrypt(1,12) # 4çh±{?"^z HéÉEa ceil(pi()+pi()+version()) 12
Losowość ID sesji Zwykle serwer aplikacji/framework dba o nadawanie identyfikatorów, a aplikacja korzysta z jego API. Nie należy na tym zawsze polegać Przykład: IBM WebSphere 4.0 TWGYLZIAAACVDQ3UUSZQV2I 10:27:12 TWGY0WYAAACVFQ3UUSZQV2I 10:27:13 TWGZNZAAAACVHQ3UUSZQV2I 10:27:14 TWG0BUYAAACVJQ3UUSZQV2I 10:27:15 TWG0VIAAAACVLQ3UUSZQV2I 10:27:16 TWG1ICIAAACVNQ3UUSZQV2I 10:27:17 TWG111YAAACVPQ3UUSZQV2I 10:27:18 Da się odgadnąć algorytm i przeszukać całą przestrzeń wartości ID sesji -- ataki brute-force, narzędzie np. idefense Session Auditor
OWASP TOP 10 Podsumowanie błędów publikowane co jakiś czas Najgroźniejsze =?= najpopularniejsze Zamiarem podniesienie jakości tworzonego kodu definiowanie ochrony przed OWASP Top10 jako wymóg specyfikacji projektu (punkt w protokole zdawczo-odbiorcznym) Czy to znaczy, że inne błędy nie są ważne? Że nie da się za ich pomocą skutecznie zaatakować? NIE!
OWASP TOP10 2013 A1-Injection A2-Broken Authentication and Session Management A3-Cross-Site Scripting (XSS) A4-Insecure Direct Object References A5-Security Misconfiguration A6-Sensitive Data Exposure A7-Missing Function Level Access Control A8-Cross-Site Request Forgery (CSRF) A9-Using Components with Known Vulnerabilities A10-Unvalidated Redirects and Forwards https://www.owasp.org/index.php/top_10_2013
Narzędzia pentestera Local Proxy Także jako dodatek do przeglądarki Narzędzia do rekonesansu / fingerprintingu Skanery dynamiczne testy bez znajomości kodu źródłowego wyspecjalizowane w konkretnych atakach Skanery statyczne
Narzędzia automatyczne Warto z nich korzystać, jako dodatek - regularnie, po każdym deploy'u Ale warto też znać ich ograniczenia... - Koszt: Acunetix, IBM AppScan - Problem z "niestandardowością" test.pl/?id=1 or 1=1; test.pl/?id=1 or 1=1;&phash=1a47a563baaee Podatności można szukać nie tylko "z zewnątrz" webaplikacji -- istnieją też skanery kodu źródłowego - np. YASCA, HP Fortify, IBM AppScan, Sonar
DEMO! od seksownego XSS-a do T0T4L PWN4G3!
W N I O S E K 1. ze zwykłego testera można (tanio) zrobić pentestera 2.... 3. PROFIT!!!
koszt naprawy błędu w czasie $$$ t
testwarez@niebezpiecznik.pl +48 12 44 202 44 +1 42 42 HACKME facebook.com/niebezpiecznik google.com/+niebezpiecznik