Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00232 003607 18769265 na godz. na dobę w sumie
Kali Linux. Testy penetracyjne. Wydanie III - książka
Kali Linux. Testy penetracyjne. Wydanie III - książka
Autor: , Liczba stron: 352
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-5123-3 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> hacking >> bezpieczeństwo systemów
Porównaj ceny (książka, ebook, audiobook).

Powtarzające się przypadki masowego naruszania bezpieczeństwa informacji, nielegalnego gromadzenia danych wrażliwych o użytkownikach czy nieuprawnionego wykorzystywania systemów do dezinformacji zmuszają organizacje do uznania cyberbezpieczeństwa za swój priorytet. Z drugiej strony coraz krótszy cykl rozwojowy aplikacji i usług sieciowych, a także rosnąca liczba technologii o coraz większej złożoności sprawiają, że projektant aplikacji nie jest w stanie w pełni przetestować tworzonego oprogramowania pod kątem bezpieczeństwa. W tych warunkach rośnie rola specjalistów w dziedzinie testów bezpieczeństwa. Wśród narzędzi dla profesjonalnych pentesterów słynny system Kali Linux zasługuje na szczególną uwagę.

To trzecie, uzupełnione i zaktualizowane wydanie znakomitego przewodnika dla testerów aplikacji. Wyjaśniono w nim koncepcję etycznego hakingu i testów penetracyjnych oraz omówiono narzędzia dostępne w systemie Kali Linux. Przedstawiono mechanikę klasycznych ataków, również tych z wstrzykiwaniem kodu SQL i poleceń. Bardzo dokładnie przeanalizowano kwestie kontroli danych wejściowych. Ważną część książki stanowi omówienie najnowszych problemów z warstwami kryptograficznymi w komunikacji sieciowej, a także prezentacja zautomatyzowanych fuzzerów do wykrywania potencjalnych luk i podatności w aplikacjach internetowych. Oprócz opisów poszczególnych technik ataków znalazły się tu również wskazówki dotyczące zapobiegania tym atakom i łagodzenia ich skutków.

Najciekawsze zagadnienia:

Kali Linux. Sprawdź, czy na pewno jesteś bezpieczny!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Web Penetration Testing with Kali Linux - Third Edition Tłumaczenie: Grzegorz Kowalczyk ISBN: 978-83-283-5123-3 Copyright © Packt Publishing 2018. First published in the English language under the title ‘Web Penetration Testing with Kali Linux - Third Edition – (9781788623377)’ Polish edition copyright © 2019 by Helion SA All rights reserved. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Helion SA dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Helion SA nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Helion SA ul. Kościuszki 1c, 44-100 Gliwice tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/kalit3 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis tre(cid:258)ci O autorach O korektorze merytorycznym Przedmowa Rozdzia(cid:239) 1. Wprowadzenie do testów penetracyjnych i aplikacji sieciowych Aktywne testowanie zabezpiecze(cid:241) Ró(cid:285)ne metodyki testowania Co nale(cid:285)y bra(cid:202) pod uwag(cid:218) podczas przeprowadzania testów penetracyjnych Regu(cid:239)y prowadzenia testu penetracyjnego Ograniczenia testów penetracyjnych Dlaczego nale(cid:285)y testowa(cid:202) aplikacje sieciowe Dlaczego aplikacje sieciowe nale(cid:285)y chroni(cid:202) przed atakami Kali Linux Aplikacje sieciowe — wprowadzenie dla pentesterów Protokó(cid:239) HTTP (cid:191)(cid:200)dania i odpowiedzi HTTP Obs(cid:239)uga sesji HTTP Dane HTML w odpowiedzi HTTP Wielowarstwowe aplikacje sieciowe Podsumowanie Rozdzia(cid:239) 2. Konfiguracja (cid:258)rodowiska testowego z systemem Kali Linux Kali Linux Udoskonalenia wprowadzone w systemie Kali Linux Instalowanie systemu Kali Linux Instalacja systemu Kali Linux na platformie VirtualBox Najwa(cid:285)niejsze narz(cid:218)dzia w systemie Kali Linux Narz(cid:218)dzia do identyfikacji frameworków i systemów CMS Serwery proxy aplikacji sieciowych 11 12 13 19 20 20 22 22 24 26 27 28 28 29 29 33 36 37 46 47 48 48 49 51 58 59 60 Poleć książkęKup książkę Spis tre(cid:286)ci Roboty sieciowe i si(cid:239)owe przeszukiwanie struktury katalogów Sieciowe skanery podatno(cid:258)ci i luk w zabezpieczeniach Inne narz(cid:218)dzia Podatne aplikacje i serwery, których mo(cid:285)na u(cid:285)y(cid:202) do (cid:202)wicze(cid:241) Projekt OWASP Broken Web Applications Hackazon Web Security Dojo Inne zasoby Podsumowanie 64 65 66 70 70 72 72 73 73 Rekonesans Rekonesans pasywny kontra rekonesans aktywny Gromadzenie informacji Rozdzia(cid:239) 3. Rekonesans i profilowanie serwerów WWW Szczegó(cid:239)owe informacje o rejestracji domeny Identyfikacja powi(cid:200)zanych hostów za pomoc(cid:200) DNS U(cid:285)ywanie wyszukiwarek i publicznych us(cid:239)ug sieciowych do zbierania informacji Narz(cid:218)dzie Recon-ng — system gromadzenia informacji 75 76 77 77 78 80 86 89 94 95 Skanowanie portów za pomoc(cid:200) skanera Nmap Profilowanie serwera 98 Skanowanie serwerów sieciowych w poszukiwaniu luk i b(cid:239)(cid:218)dów konfiguracyjnych 106 Zastosowanie robotów indeksuj(cid:200)cych do przeszukiwania aplikacji sieciowych Skanowanie — badanie celu (web spidering) Podsumowanie Rozdzia(cid:239) 4. Podatno(cid:258)ci uwierzytelniania i zarz(cid:200)dzania sesjami Schematy uwierzytelniania w aplikacjach internetowych Uwierzytelnianie na poziomie platformy Uwierzytelnianie oparte na formularzach Uwierzytelnianie dwusk(cid:239)adnikowe OAuth Mechanizmy zarz(cid:200)dzania sesjami Sesje oparte na uwierzytelnianiu platformy Identyfikatory sesji Typowe b(cid:239)(cid:218)dy uwierzytelniania w aplikacjach internetowych Brak uwierzytelnienia lub nieprawid(cid:239)owa weryfikacja uwierzytelniania Wyszukiwanie nazw kont u(cid:285)ytkowników Pozyskiwanie hase(cid:239) za pomoc(cid:200) ataków typu brute force i ataków s(cid:239)ownikowych Mechanizm resetowania has(cid:239)a Luki w implementacjach mechanizmu 2FA Wykrywanie i wykorzystywanie niew(cid:239)a(cid:258)ciwego zarz(cid:200)dzania sesjami Zastosowanie modu(cid:239)u Burp Sequencer do oceny jako(cid:258)ci identyfikatorów sesji Przewidywanie warto(cid:258)ci identyfikatorów sesji Ataki typu Session Fixation Zapobieganie atakom na uwierzytelnianie i sesje Wytyczne dotycz(cid:200)ce uwierzytelniania Wskazówki dotycz(cid:200)ce zarz(cid:200)dzania sesjami Podsumowanie 6 112 119 121 122 122 125 126 127 127 127 127 129 129 129 134 144 145 146 147 149 154 157 157 159 160 Poleć książkęKup książkę Rozdzia(cid:239) 5. Wykrywanie i wykorzystywanie podatno(cid:258)ci pozwalaj(cid:200)cych na wstrzykiwanie kodu Wstrzykiwanie polece(cid:241) Identyfikacja parametrów do wstrzykiwania danych Wykorzystywanie luki Shellshock Wstrzykiwanie zapyta(cid:241) SQL Podstawowe zagadnienia zwi(cid:200)zane z j(cid:218)zykiem SQL Przyk(cid:239)ad kodu podatnego na atak ze wstrzykiwaniem kodu Metodologia testowania podatno(cid:258)ci na wstrzykiwanie kodu SQL Pobieranie danych za pomoc(cid:200) wstrzykiwania kodu SQL Automatyzacja procesu wykorzystywania luk typu SQL injection Mo(cid:285)liwo(cid:258)ci ataków z wykorzystaniem wstrzykiwania kodu SQL Wstrzykiwanie kodu XML Ataki typu XPath injection Ataki ze wstrzykiwaniem kodu XML External Entity Ataki typu Entity Expansion Ataki ze wstrzykiwaniem kodu NoSQL Testowanie podatno(cid:258)ci na wstrzykiwanie kodu NoSQL Wykorzystywanie mo(cid:285)liwo(cid:258)ci wstrzykiwania kodu NoSQL (cid:146)agodzenie skutków i zapobieganie podatno(cid:258)ciom na wstrzykiwanie kodu Podsumowanie Spis tre(cid:286)ci 161 162 164 167 172 173 174 175 178 187 194 195 195 199 201 202 203 203 205 206 Przegl(cid:200)d podatno(cid:258)ci typu Cross-site scripting Ataki typu Persistent XSS Ataki typu Reflected XSS Ataki typu DOM-based XSS Ataki typu XSS z u(cid:285)yciem metody POST Wykorzystywanie podatno(cid:258)ci typu Cross-site scripting XSSer XSS-Sniper Rozdzia(cid:239) 6. Wyszukiwanie i wykorzystywanie podatno(cid:258)ci typu Cross-site scripting (XSS) 207 208 210 211 211 213 214 214 216 217 220 223 223 225 226 227 Wykradanie plików cookie Podmiana zawarto(cid:258)ci witryny Keylogger — rejestrowanie naci(cid:258)ni(cid:218)(cid:202) klawiszy Przejmowanie kontroli nad przegl(cid:200)dark(cid:200) u(cid:285)ytkownika za pomoc(cid:200) pakietu BeEF-XSS Zapobieganie skutkom ataków typu Cross-site scripting Podsumowanie Skanowanie w poszukiwaniu luk typu XSS Rozdzia(cid:239) 7. Wyszukiwanie i wykorzystywanie podatno(cid:258)ci typu Cross-site request forgery (CSRF/XSRF) Wyszukiwanie podatno(cid:258)ci typu CSRF Wykorzystywanie podatno(cid:258)ci typu CSRF Wykorzystywanie podatno(cid:258)ci CSRF z u(cid:285)yciem (cid:285)(cid:200)dania POST Ataki typu CSRF na us(cid:239)ugi sieciowe Zastosowanie podatno(cid:258)ci XSS do omini(cid:218)cia zabezpiecze(cid:241) przed atakami CSRF Zapobieganie atakom CSRF Podsumowanie 229 230 233 233 236 238 242 243 7 Poleć książkęKup książkę Spis tre(cid:286)ci Rozdzia(cid:239) 8. Ataki z wykorzystaniem podatno(cid:258)ci kryptograficznych Podstawowe zagadnienia zwi(cid:200)zane z kryptografi(cid:200) Algorytmy i tryby szyfrowania Funkcje haszuj(cid:200)ce Bezpieczna komunikacja z u(cid:285)yciem protoko(cid:239)u SSL/TLS Bezpieczna komunikacja w aplikacjach sieciowych Identyfikacja s(cid:239)abych implementacji SSL/TLS Polecenie OpenSSL SSLScan SSLyze Testowanie konfiguracji SSL za pomoc(cid:200) skanera Nmap Wykorzystywanie luki Heartbleed Luka POODLE Niestandardowe protoko(cid:239)y szyfrowania Identyfikacja zaszyfrowanych i zakodowanych informacji Najcz(cid:218)stsze b(cid:239)(cid:218)dy pope(cid:239)niane podczas przechowywania i przesy(cid:239)ania poufnych danych U(cid:285)ywanie narz(cid:218)dzi do (cid:239)amania hase(cid:239) offline Zapobieganie b(cid:239)(cid:218)dom w implementacjach kryptograficznych Podsumowanie Rozdzia(cid:239) 9. AJAX, HTML5 i ataki po stronie klienta Przeszukiwanie aplikacji AJAX AJAX Crawling Tool Sprajax AJAX Spider — OWASP ZAP Analizowanie magazynu danych i kodu po stronie klienta Narz(cid:218)dzia programistyczne przegl(cid:200)darki sieciowej HTML5 dla pentesterów Nowe wektory ataków XSS Lokalne magazyny danych i bazy klienta Web Messaging WebSockets Inne wa(cid:285)ne cechy HTML5 Omijanie mechanizmów kontroli dzia(cid:239)aj(cid:200)cych po stronie klienta (cid:146)agodzenie skutków luk w zabezpieczeniach AJAX, HTML5 i innych podatno(cid:258)ci po stronie klienta Podsumowanie Rozdzia(cid:239) 10. Inne cz(cid:218)sto spotykane podatno(cid:258)ci aplikacji sieciowych Niezabezpieczone bezpo(cid:258)rednie odwo(cid:239)ania do obiektów Bezpo(cid:258)rednie odwo(cid:239)ania do obiektów w us(cid:239)ugach sieciowych Ataki typu path traversal Ataki typu file inclusion Ataki typu Local File Inclusion Ataki typu Remote File Inclusion Ataki typu HTTP parameter pollution Wycieki informacji 8 245 246 247 250 251 252 254 254 257 258 259 261 263 264 264 272 273 277 278 279 279 280 281 281 283 284 288 288 289 291 291 296 297 301 302 303 304 306 306 308 309 312 312 313 Poleć książkęKup książkę Zapobieganie atakom Niezabezpieczone bezpo(cid:258)rednie odwo(cid:239)ania do obiektów Ataki typu file inclusion Ataki typu HTTP parameter pollution Wycieki informacji Podsumowanie Rozdzia(cid:239) 11. Skanowanie aplikacji sieciowych przy u(cid:285)yciu zautomatyzowanych skanerów podatno(cid:258)ci Zanim zaczniesz u(cid:285)ywa(cid:202) automatycznego skanera podatno(cid:258)ci Skanery podatno(cid:258)ci aplikacji sieciowych dost(cid:218)pne w systemie Kali Linux Nikto Skipfish Wapiti Skaner OWASP ZAP Skanery podatno(cid:258)ci dla systemów CMS WPScan JoomScan CMSmap Fuzzing aplikacji internetowych Korzystanie z fuzzera OWASP ZAP Modu(cid:239) Burp Intruder Post(cid:218)powanie po zako(cid:241)czeniu skanowania Podsumowanie Skorowidz Spis tre(cid:286)ci 316 316 316 317 317 317 319 320 321 321 323 325 327 329 330 331 332 333 334 338 342 342 345 9 Poleć książkęKup książkę Spis tre(cid:286)ci 10 Poleć książkęKup książkę 4 Podatno(cid:258)ci uwierzytelniania i zarz(cid:200)dzania sesjami G(cid:239)ównym zadaniem aplikacji internetowych jest zapewnienie u(cid:285)ytkownikom dost(cid:218)pu do informacji przechowywanych w odleg(cid:239)ym miejscu i mo(cid:285)liwo(cid:258)ci ich przetwarzania. Czasami takie informacje s(cid:200) publicznie dost(cid:218)pne, ale cz(cid:218)sto zdarza si(cid:218) równie(cid:285), (cid:285)e przetwarzane da- ne s(cid:200) specyficzne dla jakiego(cid:258) u(cid:285)ytkownika lub nawet poufne. W takiej sytuacji aplikacje sieciowe zazwyczaj wymagaj(cid:200) od u(cid:285)ytkowników udowodnienia swojej to(cid:285)samo(cid:258)ci przed uzy- skaniem dost(cid:218)pu do danych. Proces weryfikacji to(cid:285)samo(cid:258)ci, który nazywamy uwierzytelnianiem (ang. authentication), wymaga od u(cid:285)ytkownika przedstawienia dowodu to(cid:285)samo(cid:258)ci, którym mo(cid:285)e by(cid:202) jeden lub wi(cid:218)cej poni(cid:285)szych elementów: (cid:81) Co(cid:258), co u(cid:285)ytkownik zna — np. nazwa konta u(cid:285)ytkownika i tajne has(cid:239)o. (cid:81) Co(cid:258), co u(cid:285)ytkownik posiada — np. karta inteligentna lub specjalny kod wysy(cid:239)any na telefon u(cid:285)ytkownika. (cid:81) Co(cid:258), co u(cid:285)ytkownika identyfikuje i co jest jego niepowtarzaln(cid:200) cech(cid:200) — np.: g(cid:239)os, twarz, odcisk palca lub inny element biometryczny. W aplikacjach internetowych najcz(cid:218)(cid:258)ciej u(cid:285)ywana jest pierwsza metoda, aczkolwiek istniej(cid:200) pewne specyficzne zastosowania, takie jak bankowo(cid:258)(cid:202) lub wewn(cid:218)trzne aplikacje korporacyjne, które mog(cid:200) wykorzystywa(cid:202) jedn(cid:200) lub wi(cid:218)cej pozosta(cid:239)ych metod. HTTP jest protoko(cid:239)em bezstanowym i bezpo(cid:239)(cid:200)czeniowym. Oznacza to, (cid:285)e ka(cid:285)de (cid:285)(cid:200)danie wysy(cid:239)ane przez klienta do serwera jest traktowane przez serwer jako niezwi(cid:200)zane z (cid:285)adnymi wcze(cid:258)niejszymi lub przysz(cid:239)ymi (cid:285)(cid:200)daniami wys(cid:239)anymi przez tego lub dowolnego innego klienta. Inaczej mówi(cid:200)c, gdy u(cid:285)ytkownik zaloguje si(cid:218) do aplikacji internetowej, ka(cid:285)de na- st(cid:218)pne wysy(cid:239)ane przez niego (cid:285)(cid:200)danie jest traktowane przez serwer tak, jakby by(cid:239)o pierwsze. Poleć książkęKup książkę Kali Linux. Testy penetracyjne Z tego wzgl(cid:218)du klient z ka(cid:285)dym kolejnym (cid:285)(cid:200)daniem musia(cid:239)by wysy(cid:239)a(cid:202) swoje po(cid:258)wiadczenia logowania. Takie rozwi(cid:200)zanie powodowa(cid:239)oby niepotrzebne nara(cid:285)anie poufnych informacji i zb(cid:218)dny narzut na komunikacj(cid:218). Aby temu zapobiec, opracowano szereg technik umo(cid:285)liwiaj(cid:200)cych aplikacjom internetowym (cid:258)ledzenie dzia(cid:239)a(cid:241) u(cid:285)ytkowników, utrzymywanie stanu aplikacji zgodnie ze zmianami wpro- wadzanymi w ich w(cid:239)asnym (cid:258)rodowisku oraz odseparowanie aplikacji od dzia(cid:239)a(cid:241) innych u(cid:285)ytkowników bez proszenia ich o po(cid:258)wiadczanie to(cid:285)samo(cid:258)ci przy ka(cid:285)dej podejmowanej akcji. Takie rozwi(cid:200)zanie nazywamy zarz(cid:200)dzaniem sesj(cid:200) (ang. session management). W tym rozdziale zobaczysz, jak uwierzytelnianie i zarz(cid:200)dzanie sesj(cid:200) s(cid:200) najcz(cid:218)(cid:258)ciej realizo- wane w nowoczesnych aplikacjach internetowych, oraz dowiesz si(cid:218), jak zidentyfikowa(cid:202) i wy- korzysta(cid:202) niektóre z najcz(cid:218)stszych luk bezpiecze(cid:241)stwa w takich mechanizmach. Schematy uwierzytelniania w aplikacjach internetowych Zanim zapoznasz si(cid:218) z wybranymi zagadnieniami dotycz(cid:200)cymi przeprowadzania testów pe- netracyjnych, sprawdzimy, w jaki sposób proces uwierzytelniania odbywa si(cid:218) w nowocze- snych aplikacjach internetowych. Uwierzytelnianie na poziomie platformy Podczas korzystania z uwierzytelniania na poziomie platformy (ang. platform authentication) u(cid:285)ytkownicy wysy(cid:239)aj(cid:200) swoje po(cid:258)wiadczenia w nag(cid:239)ówku ka(cid:285)dego (cid:285)(cid:200)dania, wykorzystuj(cid:200)c do tego celu pole Authorization. Nawet je(cid:285)eli u(cid:285)ytkownik musi przes(cid:239)a(cid:202) swoje dane uwierzy- telniaj(cid:200)ce tylko raz, przegl(cid:200)darka lub system przechowuje je i u(cid:285)ywa ich w razie potrzeby. Istnieje kilka ró(cid:285)nych typów uwierzytelniania na poziomie platformy. Najcz(cid:218)stsze z nich omówiono w kolejnych podrozdzia(cid:239)ach. Uwierzytelnianie Basic W przypadku tego typu uwierzytelniania platformy nazwa u(cid:285)ytkownika i has(cid:239)o s(cid:200) do(cid:239)(cid:200)czane do nag(cid:239)ówka w polu Authorization i kodowane przy u(cid:285)yciu algorytmu base64. Oznacza to, (cid:285)e ka(cid:285)dy, kto mo(cid:285)e przechwyci(cid:202) i zobaczy(cid:202) nag(cid:239)ówek (cid:285)(cid:200)dania, jest w stanie rozszyfrowa(cid:202) dane uwierzytelniaj(cid:200)ce do postaci jawnego tekstu, poniewa(cid:285) kodowanie base64 nie jest formatem kryptograficznym. Na rysunkach poni(cid:285)ej pokazujemy, w jaki sposób po(cid:258)wiadczenia logowania s(cid:200) wysy(cid:239)ane w formacie base64 i jak mo(cid:285)na je dekodowa(cid:202): 122 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami Do konwersji tekstu z formatu base64 na ASCII mo(cid:285)esz u(cid:285)y(cid:202) modu(cid:239)u Decoder z pakietu Burp Suite: Uwierzytelnianie Digest Uwierzytelnianie Digest jest znacznie bezpieczniejsze ni(cid:285) podstawowe uwierzytelnianie typu Basic. Kiedy klient chce uzyska(cid:202) dost(cid:218)p do chronionego zasobu, serwer wysy(cid:239)a losowy ci(cid:200)g znaków, nazywany nonce, jako wyzwanie. Nast(cid:218)pnie klient u(cid:285)ywa ci(cid:200)gu nonce wraz z nazw(cid:200) u(cid:285)ytkownika i has(cid:239)em do obliczenia warto(cid:258)ci skrótu MD5 i odsy(cid:239)a t(cid:218) warto(cid:258)(cid:202) do serwera w celu weryfikacji. Uwierzytelnianie NTLM NTLM jest odmian(cid:200) uwierzytelniania typu Digest, w którym po(cid:258)wiadczenia logowania sys- temu Windows i algorytm haszowania NTLM s(cid:200) u(cid:285)ywane do wygenerowania komunikatów wyzwania i odpowiedzi. Ten schemat uwierzytelniania wymaga przesy(cid:239)ania wielu sekwencji typu (cid:285)(cid:200)danie – odpowied(cid:283), a serwer WWW i wszelkie po(cid:258)rednicz(cid:200)ce serwery proxy musz(cid:200) obs(cid:239)ugiwa(cid:202) po(cid:239)(cid:200)czenia trwa(cid:239)e (ang. persistent connections). 123 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Uwierzytelnianie Kerberos Ten schemat wykorzystuje protokó(cid:239) Kerberos do uwierzytelniania u(cid:285)ytkownika na serwerze. Podobnie jak w przypadku uwierzytelniania NTLM, nie wymaga podawania nazwy u(cid:285)yt- kownika i has(cid:239)a, ale do logowania u(cid:285)ywa po(cid:258)wiadcze(cid:241) z systemu Windows. Uwierzytelnianie Kerberos wymaga zastosowania dodatkowego serwera, zwanego serwerem uwierzytelniania (ang. AS — Authentication Server), i przebiega w kilku etapach: 1. Klient wysy(cid:239)a nazw(cid:218) konta u(cid:285)ytkownika (ID) do serwera uwierzytelniania (AS). 2. Serwer AS wyszukuje nazw(cid:218) konta (ID) w swojej bazie danych i u(cid:285)ywa zahaszowanego has(cid:239)a do szyfrowania klucza sesji. 3. Serwer AS wysy(cid:239)a do klienta zaszyfrowany klucz sesji oraz bilet TGT (ang. Ticket Granting Ticket) zawieraj(cid:200)cy identyfikator u(cid:285)ytkownika, klucz sesji, dat(cid:218) wyga(cid:258)ni(cid:218)cia sesji i inne dane zaszyfrowane za pomoc(cid:200) tajnego klucza serwera. Je(cid:285)eli podane has(cid:239)o jest nieprawid(cid:239)owe, klient nie b(cid:218)dzie w stanie odszyfrowa(cid:202) klucza sesji. 4. Klient odszyfrowuje klucz sesji. 5. Gdy klient chce uzyska(cid:202) dost(cid:218)p do chronionego zasobu na serwerze sieciowym, b(cid:218)dzie musia(cid:239) wys(cid:239)a(cid:202) bilet TGT oraz identyfikator zasobu w jednej wiadomo(cid:258)ci, a identyfikator klienta i znacznik czasu zaszyfrowa(cid:202) za pomoc(cid:200) klucza sesji w innej wiadomo(cid:258)ci. 6. Je(cid:285)eli serwer jest w stanie odszyfrowa(cid:202) odebrane informacje, odpowiada za pomoc(cid:200) biletu us(cid:239)ugi zaszyfrowanego przy u(cid:285)yciu tajnego klucza serwera AS i klucza sesji klienta/serwera, dodatkowo zaszyfrowanego przy u(cid:285)yciu klucza sesji klienta. 7. Po otrzymaniu biletu us(cid:239)ugi z serwera AS klient mo(cid:285)e za(cid:285)(cid:200)da(cid:202) dost(cid:218)pu do zasobów serwera WWW. Opisany proces zosta(cid:239) przedstawiony na poni(cid:285)szym diagramie: 124 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami Uwierzytelnianie HTTP Negotiate Zwane tak(cid:285)e uwierzytelnianiem systemu Windows (ang. Windows Authentication) uwierzy- telnianie HTTP Negotiate u(cid:285)ywa po(cid:258)wiadcze(cid:241) systemu Windows i w zale(cid:285)no(cid:258)ci od tego, czy protokó(cid:239) Kerberos jest dost(cid:218)pny, wybiera mi(cid:218)dzy uwierzytelnianiem Kerberos i NTLM. Wady uwierzytelniania na poziomie platformy Cho(cid:202) schematy Kerberos i NTLM s(cid:200) uwa(cid:285)ane za bezpieczne, a uwierzytelnianie typu Basic lub Digest mo(cid:285)e by(cid:202) u(cid:285)ywane w po(cid:239)(cid:200)czeniach TLS z niskim ryzykiem przechwycenia komu- nikacji i pozyskania po(cid:258)wiadcze(cid:241) logowania przez z(cid:239)o(cid:258)liwego napastnika, uwierzytelnianie na poziomie platformy pod wzgl(cid:218)dem bezpiecze(cid:241)stwa wci(cid:200)(cid:285) wykazuje pewne „wrodzone” wady: (cid:81) Po(cid:258)wiadczenia s(cid:200) wysy(cid:239)ane cz(cid:218)(cid:258)ciej, w zwi(cid:200)zku z tym ich ekspozycja i ryzyko przechwycenia w ataku typu man-in-the-middle (MITM) s(cid:200) podwy(cid:285)szone, szczególnie w przypadku schematów Basic, Digest i NTLM. (cid:81) Uwierzytelnianie na poziomie platformy nie ma opcji wylogowania ani wyga(cid:258)ni(cid:218)cia sesji. Poniewa(cid:285) funkcja pojedynczego logowania (ang. SSO — Single Sign On) podczas korzystania z uwierzytelniania Windows Authentication jest w(cid:239)(cid:200)czona, to gdy u(cid:285)ytkownik otworzy stron(cid:218) g(cid:239)ówn(cid:200) aplikacji, sesja rozpoczyna si(cid:218) automatycznie, bez pytania o nazw(cid:218) u(cid:285)ytkownika i has(cid:239)o, a nast(cid:218)pnie automatycznie odnawia si(cid:218) po wyga(cid:258)ni(cid:218)ciu. Napastnik, który uzyska dost(cid:218)p do komputera u(cid:285)ytkownika lub konta systemu Windows, uzyska wi(cid:218)c w takiej sesji natychmiastowy dost(cid:218)p do aplikacji. (cid:81) Uwierzytelnianie na poziomie platformy nie jest odpowiednie dla aplikacji publicznych, poniewa(cid:285) wymaga znacznie wi(cid:218)kszych nak(cid:239)adów technicznych i administracyjnych do odpowiedniego skonfigurowania i zarz(cid:200)dzania ni(cid:285) najbardziej popularne uwierzytelnianie oparte na formularzach. Uwierzytelnianie oparte na formularzach Jest to rodzaj uwierzytelniania, z którym jeste(cid:258)my bardziej zaznajomieni: formularz HTML zawieraj(cid:200)cy pola nazwy u(cid:285)ytkownika i has(cid:239)a oraz przycisk przesy(cid:239)ania: 125 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Taki sposób uwierzytelniania mo(cid:285)e dzia(cid:239)a(cid:202) ró(cid:285)nie w ró(cid:285)nych przypadkach, poniewa(cid:285) jego imple- mentacja jest ca(cid:239)kowicie zale(cid:285)na od aplikacji. Najcz(cid:218)(cid:258)ciej stosowane podej(cid:258)cie jest nast(cid:218)puj(cid:200)ce: 1. U(cid:285)ytkownik wype(cid:239)nia formularz uwierzytelnienia i klika przycisk Zaloguj. Klient (przegl(cid:200)darka internetowa) wysy(cid:239)a nast(cid:218)pnie (cid:285)(cid:200)danie zawieraj(cid:200)ce nazw(cid:218) u(cid:285)ytkownika i has(cid:239)o do serwera w postaci zwyk(cid:239)ego tekstu, chyba (cid:285)e aplikacja wykonuje szyfrowanie po stronie klienta. 2. Serwer otrzymuje przes(cid:239)ane informacje, sprawdza dane u(cid:285)ytkownika w swojej bazie danych oraz porównuje zapisane i przes(cid:239)ane has(cid:239)a (lub ich skróty). 3. Je(cid:285)eli u(cid:285)ytkownik istnieje i has(cid:239)o jest poprawne, serwer odpowiada komunikatem potwierdzaj(cid:200)cym zalogowanie, który mo(cid:285)e zawiera(cid:202) przekierowanie do strony g(cid:239)ównej oraz identyfikator sesji (zwykle jako plik cookie), aby u(cid:285)ytkownik nie musia(cid:239) ponownie wysy(cid:239)a(cid:202) swoich po(cid:258)wiadcze(cid:241) logowania. 4. Klient otrzymuje odpowied(cid:283), zapisuje identyfikator sesji i przechodzi na stron(cid:218) g(cid:239)ówn(cid:200). Z perspektywy pentestera zdecydowanie najciekawsza jest metoda uwierzytelniania, ponie- wa(cid:285) nie jest w (cid:285)aden sposób ustandaryzowana (nawet je(cid:285)eli istniej(cid:200) jakie(cid:258) wytyczne opisuj(cid:200)ce najlepsze praktyki jej implementacji) i zazwyczaj jest (cid:283)ród(cid:239)em du(cid:285)ej liczby podatno(cid:258)ci i luk w zabezpieczeniach spowodowanych niew(cid:239)a(cid:258)ciwym sposobem wdro(cid:285)enia. Uwierzytelnianie dwusk(cid:239)adnikowe Jak wspominali(cid:258)my ju(cid:285) wcze(cid:258)niej, aby udowodni(cid:202) swoj(cid:200) to(cid:285)samo(cid:258)(cid:202) aplikacji sieciowej, mu- sisz poda(cid:202) co(cid:258), co znasz, co(cid:258), co masz, lub co(cid:258), czym jeste(cid:258). Ka(cid:285)dy z tych identyfikatorów na- zywany jest sk(cid:239)adnikiem (ang. factor). Uwierzytelnianie wielosk(cid:239)adnikowe (ang. MFA — Multi-factor Authentication) polega na zapewnieniu wybranym aplikacjom dodatkowej war- stwy zabezpiecze(cid:241) i zapobieganiu nieautoryzowanemu dost(cid:218)powi w przypadku, gdy np. has(cid:239)o dost(cid:218)pu zosta(cid:239)o z(cid:239)amane lub wykradzione przez napastnika. Uwierzytelnianie dwusk(cid:239)adnikowe (ang. 2FA — Two-factor Authentication) w wi(cid:218)kszo(cid:258)ci aplikacji internetowych oznacza, (cid:285)e u(cid:285)ytkownik musi poda(cid:202) nazw(cid:218) u(cid:285)ytkownika i has(cid:239)o (pierw- szy sk(cid:239)adnik) oraz specjalny kod lub has(cid:239)o jednorazowe (ang. OTP — One-Time Password), które jest tymczasowe i losowo generowane przez urz(cid:200)dzenie posiadane przez u(cid:285)ytkownika (token sprz(cid:218)towy) lub wysy(cid:239)ane do u(cid:285)ytkownika za po(cid:258)rednictwem wiadomo(cid:258)ci SMS lub e-mail. Po otrzymaniu has(cid:239)a jednorazowego u(cid:285)ytkownik przesy(cid:239)a je z powrotem do aplikacji. Bar- dziej zaawansowane aplikacje mog(cid:200) posiada(cid:202) zaimplementowane rozwi(cid:200)zania wymagaj(cid:200)ce oprócz podania has(cid:239)a np. u(cid:285)ycia karty inteligentnej (ang. Smart Card) lub danych biome- trycznych, takich jak odcisk palca czy skan siatkówki oka. Jednak ze wzgl(cid:218)du na fakt, (cid:285)e ta- kie rozwi(cid:200)zania wymagaj(cid:200) od u(cid:285)ytkownika posiadania dodatkowych, specjalistycznych urz(cid:200)- dze(cid:241), s(cid:200) znacznie rzadsze. Warto jednak zauwa(cid:285)y(cid:202), (cid:285)e takie czy inne rozwi(cid:200)zania MFA zosta(cid:239)y ju(cid:285) wdro(cid:285)one w zdecy- dowanej wi(cid:218)kszo(cid:258)ci aplikacji bankowych, a w ostatnich latach uwierzytelnianie dwusk(cid:239)adni- kowe staje si(cid:218) coraz bardziej popularne nawet w publicznych us(cid:239)ugach poczty elektronicz- nej i w mediach spo(cid:239)eczno(cid:258)ciowych, które zacz(cid:218)(cid:239)y konsekwentnie promowa(cid:202) w(cid:258)ród swoich u(cid:285)ytkowników, a nawet wymusza(cid:202) korzystanie z 2FA. 126 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami OAuth OAuth to otwarty standard uwierzytelniania. Gdy u(cid:285)ytkownicy Facebooka lub Google’a ze- zwalaj(cid:200) aplikacjom stron trzecich na dost(cid:218)p do swoich kont, nie przekazuj(cid:200) tym aplikacjom swoich po(cid:258)wiadcze(cid:241) logowania. Zamiast tego us(cid:239)ugodawcy (Google, Twitter lub Facebook) udost(cid:218)pniaj(cid:200) specjalny token dost(cid:218)pu, który pozwala takim aplikacjom pobiera(cid:202) okre(cid:258)lone informacje o koncie u(cid:285)ytkownika lub uzyskiwa(cid:202) dost(cid:218)p do okre(cid:258)lonych funkcji zgodnie z po- zwoleniami udzielonymi przez u(cid:285)ytkownika. Mechanizmy zarz(cid:200)dzania sesjami Zarz(cid:200)dzanie sesj(cid:200) obejmuje tworzenie lub definiowanie identyfikatorów sesji podczas lo- gowania, ustawianie limitu czasu nieaktywno(cid:258)ci, wyga(cid:258)ni(cid:218)cia sesji i uniewa(cid:285)niania sesji pod- czas wylogowywania; mo(cid:285)e równie(cid:285) obejmowa(cid:202) sprawdzanie autoryzacji w zale(cid:285)no(cid:258)ci od uprawnie(cid:241) u(cid:285)ytkownika, poniewa(cid:285) identyfikator sesji musi by(cid:202) powi(cid:200)zany z u(cid:285)ytkownikiem. Sesje oparte na uwierzytelnianiu platformy Gdy u(cid:285)ywane jest uwierzytelnianie platformy, najcz(cid:218)(cid:258)ciej stosowan(cid:200) metod(cid:200) jest wykorzy- stanie nag(cid:239)ówka zawieraj(cid:200)cego po(cid:258)wiadczenie logowania lub identyfikowanie sesji u(cid:285)ytkow- nika za pomoc(cid:200) mechanizmu wyzwania i odpowiedzi oraz zarz(cid:200)dzanie wyga(cid:258)ni(cid:218)ciem sesji i wylogowaniem za po(cid:258)rednictwem logiki aplikacji. Warto jednak przypomnie(cid:202), (cid:285)e bardzo cz(cid:218)sto w aplikacjach korzystaj(cid:200)cych z uwierzytelniania na poziomie platformy nie s(cid:200) stosowane (cid:285)adne limity czasu sesji, jej wyga(cid:258)ni(cid:218)cia lub wylogowania. Je(cid:285)eli do uwierzytelniania u(cid:285)ywany jest protokó(cid:239) Kerberos, bilety generowane przez serwer AS zawieraj(cid:200) ju(cid:285) informacje o sesji i s(cid:239)u(cid:285)(cid:200) do zarz(cid:200)dzania tak(cid:200) sesj(cid:200). Identyfikatory sesji Identyfikatory sesji s(cid:200) bardziej powszechne w rozwi(cid:200)zaniach wykorzystuj(cid:200)cych mechanizm uwierzytelniania za pomoc(cid:200) formularza, ale mog(cid:200) wyst(cid:218)powa(cid:202) równie(cid:285), gdy u(cid:285)ywamy uwierzy- telniania platformy. Identyfikator sesji (ang. session ID) jest unikalnym numerem lub warto(cid:258)ci(cid:200) przypisywan(cid:200) danemu u(cid:285)ytkownikowi za ka(cid:285)dym razem, gdy inicjuje sesj(cid:218) z aplikacj(cid:200). Identyfi- kator sesji musi by(cid:202) inny ni(cid:285) identyfikator u(cid:285)ytkownika i has(cid:239)o, musi by(cid:202) inny za ka(cid:285)dym razem, gdy u(cid:285)ytkownik loguje si(cid:218) do aplikacji, i musi by(cid:202) do(cid:239)(cid:200)czany do ka(cid:285)dego wysy(cid:239)anego (cid:285)(cid:200)dania, tak aby serwer móg(cid:239) rozró(cid:285)nia(cid:202) (cid:285)(cid:200)dania nap(cid:239)ywaj(cid:200)ce z ró(cid:285)nych sesji od ró(cid:285)nych u(cid:285)ytkowników. Najcz(cid:218)stszym sposobem przekazywania identyfikatorów sesji mi(cid:218)dzy klientem a serwerem s(cid:200) pliki cookie. Gdy serwer otrzymuje poprawne po(cid:258)wiadczenie logowania, sk(cid:239)adaj(cid:200)ce si(cid:218) z nazwy u(cid:285)ytkownika i has(cid:239)a, (cid:239)(cid:200)czy te informacje logowania z identyfikatorem sesji i przeka- zuje odpowied(cid:283) do klienta, wysy(cid:239)aj(cid:200)c takie informacje np. w postaci odpowiednio przygoto- wanego pliku cookie. 127 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Na poni(cid:285)szych zrzutach ekranu zobaczysz kilka przyk(cid:239)adów odpowiedzi serwera, które za- wieraj(cid:200) pliki cookie sesji: W powy(cid:285)szym przyk(cid:239)adzie aplikacja PHP ustawia plik cookie sesji o nazwie PHPSESSID. W powy(cid:285)szym przyk(cid:239)adzie aplikacja Javy ustawia plik cookie sesji o nazwie JSESSIONID. W powy(cid:285)szym przyk(cid:239)adzie aplikacja ASP.NET ustawia plik cookie sesji o nazwie ASP.NET_SessionId. 128 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami Typowe b(cid:239)(cid:218)dy uwierzytelniania w aplikacjach internetowych Sp(cid:218)dzili(cid:258)my ju(cid:285) troch(cid:218) czasu na omawianiu dzia(cid:239)ania ró(cid:285)nych mechanizmów uwierzytelniania w aplikacjach internetowych. W tej sekcji dowiesz si(cid:218), jak identyfikowa(cid:202) i wykorzystywa(cid:202) niektóre z podatno(cid:258)ci i luk w zabezpieczeniach spowodowane b(cid:239)(cid:218)dami w implementacji. Brak uwierzytelnienia lub nieprawid(cid:239)owa weryfikacja uwierzytelniania W poprzednim rozdziale pokazywali(cid:258)my, jak korzysta(cid:202) z polecenia DIRB i innych narz(cid:218)dzi pozwalaj(cid:200)cych na wyszukiwanie plików i katalogów, które nie mog(cid:200) by(cid:202) przywo(cid:239)ywane przez (cid:285)adn(cid:200) stron(cid:218) na serwerze WWW lub które mog(cid:200) posiada(cid:202) uprzywilejowane funkcje, takie jak /admin czy /user/profile. Je(cid:285)eli mo(cid:285)esz bezpo(cid:258)rednio zagl(cid:200)da(cid:202) do tych katalogów i ko- rzysta(cid:202) z zawartych w nich funkcjonalno(cid:258)ci bez potrzeby uwierzytelniania lub je(cid:285)eli po uwie- rzytelnieniu jako standardowy u(cid:285)ytkownik mo(cid:285)esz przegl(cid:200)da(cid:202) obszary administracyjne aplikacji albo modyfikowa(cid:202) profile innych u(cid:285)ytkowników, to taka aplikacja z pewno(cid:258)ci(cid:200) ma powa(cid:285)ne problemy z bezpiecze(cid:241)stwem i funkcjonowaniem swoich mechanizmów uwierzytelniania. Wyszukiwanie nazw kont u(cid:285)ytkowników W scenariuszach testów penetracyjnych typu grey box lub black box próba pozyskania listy nazw kont u(cid:285)ytkowników aplikacji mo(cid:285)e by(cid:202) jednym z pierwszych kroków wykonywanych przez pentestera, szczególnie je(cid:285)eli taka aplikacja nie jest komercyjna i nie mo(cid:285)na liczy(cid:202) na to, (cid:285)e w sieci internet znajdziemy informacje o domy(cid:258)lnych kontach u(cid:285)ytkowników. Pozyskiwanie nazw kont u(cid:285)ytkowników aplikacji internetowych odbywa si(cid:218) poprzez analiz(cid:218) odpowiedzi, gdy nazwy u(cid:285)ytkowników s(cid:200) wpisywane w takich miejscach, jak strony logowania, rejestracji czy odzyskiwania has(cid:239)a. Poni(cid:285)ej przedstawiono typowe komunikaty o b(cid:239)(cid:218)dach, które mo(cid:285)na zobaczy(cid:202) podczas przesy(cid:239)ania danych za po(cid:258)rednictwem formularzy logowania, a które wskazuj(cid:200), (cid:285)e mo(cid:285)na dokona(cid:202) próby pozyskiwania nazw kont u(cid:285)ytkowników: User foo: invalid password (u(cid:298)ytkownik foo: nieprawid(cid:225)owe has(cid:225)o) invalid user ID (nieprawid(cid:225)owy identyfikator u(cid:298)ytkownika) account disabled (konto wy(cid:225)(cid:261)czone) this user is not active (ten u(cid:298)ytkownik nie jest aktywny) invalid user (nieprawid(cid:225)owy u(cid:298)ytkownik) Przyjrzyjmy si(cid:218) bardzo prostemu przyk(cid:239)adowi pozyskiwania prawid(cid:239)owych nazw kont u(cid:285)yt- kowników z aplikacji internetowej, która w przypadku podania nieprawid(cid:239)owej nazwy u(cid:285)yt- kownika wy(cid:258)wietla zbyt du(cid:285)o informacji. U(cid:285)yjemy do tego celu aplikacji OWASP WebGoat z maszyny wirtualnej Broken Web Applications (BWA), która posiada(cid:239)a adres IP 10.7.7.5. Najpierw uruchomimy pakiet Burp Suite i skonfigurujemy przegl(cid:200)dark(cid:218) tak, aby u(cid:285)ywa(cid:239)a go jako proxy (je(cid:285)eli u(cid:285)ywasz Firefoksa, wybierz Opcje/Ogólne/Sie(cid:202)/Ustawienia po(cid:239)(cid:200)czenia): 129 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Nast(cid:218)pnie zaloguj si(cid:218) do aplikacji WebGoat, u(cid:285)ywaj(cid:200)c domy(cid:258)lnego konta u(cid:285)ytkownika webgoat z has(cid:239)em webgoat, a potem kliknij (cid:239)(cid:200)cze Authentication Flaws/Forgot Password (b(cid:239)(cid:218)dy uwierzytelniania/zapomnia(cid:239)em has(cid:239)a): 130 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami Jest to formularz odzyskiwania has(cid:239)a, który wymaga podania nazwy u(cid:285)ytkownika, aby konty- nuowa(cid:202) proces odzyskiwania. Wprowad(cid:283) dowoln(cid:200) nazw(cid:218) nieistniej(cid:200)cego konta u(cid:285)ytkownika, np. nonexistentuser, a nast(cid:218)pnie naci(cid:258)nij przycisk Submit (prze(cid:258)lij), aby zobaczy(cid:202) rezultat: Jak wida(cid:202), nazwa u(cid:285)ytkownika jest nieprawid(cid:239)owa i nie mo(cid:285)na kontynuowa(cid:202) odzyskiwania has(cid:239)a. Mo(cid:285)esz (cid:258)mia(cid:239)o za(cid:239)o(cid:285)y(cid:202), (cid:285)e gdy podasz poprawn(cid:200) nazw(cid:218) konta u(cid:285)ytkownika, otrzymasz inn(cid:200) odpowied(cid:283). Teraz u(cid:285)yjmy modu(cid:239)u Intruder z pakietu Burp Suite, aby dokona(cid:202) próby znalezienia po- prawnej nazwy konta u(cid:285)ytkownika. Najpierw musimy znale(cid:283)(cid:202) odpowiednie (cid:285)(cid:200)danie w histo- rii Burp Proxy i przes(cid:239)a(cid:202) je do modu(cid:239)u Intruder. Aby to zrobi(cid:202), naci(cid:258)nij kombinacj(cid:218) klawiszy Ctrl+I lub kliknij prawym przyciskiem myszy i z menu podr(cid:218)cznego wybierz polecenie Send to Intruder (wy(cid:258)lij do modu(cid:239)u Intruder): 131 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Teraz przejd(cid:283) na kart(cid:218) Intruder, potem kliknij kart(cid:218) z numerem (cid:285)(cid:200)dania i wreszcie przejd(cid:283) na kart(cid:218) Positions (pozycje). Z pewno(cid:258)ci(cid:200) zauwa(cid:285)ysz, (cid:285)e wszystkie modyfikowalne parametry klienta s(cid:200) domy(cid:258)lnie zaznaczone. Naci(cid:258)nij przycisk Clear (wyczy(cid:258)(cid:202)), aby usun(cid:200)(cid:202) ich zaznaczenie, a nast(cid:218)pnie wybierz tylko pole username i kliknij przycisk Add (dodaj): Modu(cid:239) Intruder automatyzuje wysy(cid:239)anie wielu (cid:285)(cid:200)da(cid:241) do serwera, zast(cid:218)puj(cid:200)c wybrane warto(cid:258)ci danymi podanymi przez u(cid:285)ytkownika, i rejestruje wszystkie odpowiedzi, dzi(cid:218)ki czemu mo(cid:285)emy je analizowa(cid:202). Teraz musimy utworzy(cid:202) list(cid:218) nazw kont u(cid:285)ytkownika, które chcemy wypróbowa(cid:202) zamiast tego, które ju(cid:285) zosta(cid:239)o przes(cid:239)ane. Burp Intruder pozwala na przeprowadzanie czterech typów ataków, ró(cid:285)ni(cid:200)cych si(cid:218) liczb(cid:200) i sposobami umieszczania (cid:239)adunków: (cid:81) Sniper (snajper) — wykorzystuje (cid:239)adunek sk(cid:239)adaj(cid:200)cy si(cid:218) z szeregu warto(cid:258)ci; ka(cid:285)da z warto(cid:258)ci z tego zestawu jest umieszczana po kolei na poszczególnych pozycjach wej(cid:258)ciowych, po jednej na raz. Liczba generowanych (cid:285)(cid:200)da(cid:241) b(cid:218)dzie zatem równa liczbie warto(cid:258)ci w zestawie (cid:239)adunków pomno(cid:285)onej przez liczb(cid:218) pozycji wej(cid:258)ciowych. (cid:81) Battering ram (taran) — wykorzystuje (cid:239)adunek sk(cid:239)adaj(cid:200)cy si(cid:218) z szeregu warto(cid:258)ci; ka(cid:285)da z warto(cid:258)ci z tego zestawu jest umieszczana jednocze(cid:258)nie na wszystkich pozycjach wej(cid:258)ciowych. Liczba (cid:285)(cid:200)da(cid:241) b(cid:218)dzie równa liczbie warto(cid:258)ci w zestawie (cid:239)adunków. (cid:81) Pitchfork (wid(cid:239)y) — u(cid:285)ywa wielu pozycji wyj(cid:258)ciowych i wymaga utworzenia osobnego zestawu warto(cid:258)ci dla ka(cid:285)dej pozycji. Po uruchomieniu ataku pobiera po jednej warto(cid:258)ci z ka(cid:285)dego zestawu i umieszcza na odpowiadaj(cid:200)cych im pozycjach wej(cid:258)ciowych w tym samym czasie. Liczba wykonanych (cid:285)(cid:200)da(cid:241) b(cid:218)dzie równa d(cid:239)ugo(cid:258)ci najkrótszego zestawu danych. 132 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami (cid:81) Cluster bomb (bomba kasetowa) — je(cid:285)eli korzystamy z n pozycji wej(cid:258)ciowych, poszczególne elementy z pierwszego zestawu danych s(cid:200) kolejno parowane ze wszystkimi elementami zestawu drugiego i pozosta(cid:239)ych, tak aby utworzy(cid:202) wszystkie mo(cid:285)liwe kombinacje. Liczb(cid:218) (cid:285)(cid:200)da(cid:241) w takim ataku mo(cid:285)na okre(cid:258)li(cid:202) przez pomno(cid:285)enie rozmiarów wszystkich zestawów (cid:239)adunków. Nast(cid:218)pnie przejd(cid:283) na kart(cid:218) Payloads ((cid:239)adunki) w module Intruder. Pozostaw opcj(cid:218) Payload set (zestaw (cid:239)adunków) niezmienion(cid:200) i naci(cid:258)nij przycisk Load… (za(cid:239)aduj), znajduj(cid:200)cy si(cid:218) w sekcji Payload Options [Simple List] (opcje (cid:239)adunku [prosta lista]), który pozwala na za(cid:239)adowanie pliku zawieraj(cid:200)cego s(cid:239)owa lub warto(cid:258)ci, które chcesz wypróbowa(cid:202). Na szcz(cid:218)(cid:258)cie Kali Linux posiada obszerny zbiór s(cid:239)owników i list s(cid:239)ów, znajduj(cid:200)cy si(cid:218) w katalogu /usr/share/wordlists. W naszym przyk(cid:239)adzie u(cid:285)yjemy nast(cid:218)puj(cid:200)cego pliku s(cid:239)ownika: /usr/share/wordlists/metasploit/http_default_users.txt Teraz, gdy masz ju(cid:285) przygotowane (cid:285)(cid:200)danie ze zdefiniowanymi pozycjami wej(cid:258)ciowymi i list(cid:218) warto(cid:258)ci, naci(cid:258)nij przycisk Start Attack (rozpocznij atak): 133 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Je(cid:285)eli przyjrzysz si(cid:218) wynikom ataku przedstawionym na powy(cid:285)szym rysunku, z pewno(cid:258)ci(cid:200) zauwa(cid:285)ysz, (cid:285)e wszystkie wypróbowane nazwy kont wygenerowa(cid:239)y identyczne odpowiedzi; mówi(cid:200)c (cid:258)ci(cid:258)lej, wszystkie konta oprócz jednego. Zwró(cid:202) uwag(cid:218), (cid:285)e w przypadku (cid:285)(cid:200)dania z kontem admin nadesz(cid:239)a odpowied(cid:283) o innej d(cid:239)ugo(cid:258)ci, a kiedy przyjrzysz si(cid:218) zawarto(cid:258)ci odpowiedzi, zobaczysz, (cid:285)e znajduje si(cid:218) tam pytanie o odzyskanie has(cid:239)a. Wynika st(cid:200)d, (cid:285)e admin jest w tym scenariuszu prawid(cid:239)ow(cid:200) nazw(cid:200) konta u(cid:285)ytkownika. Próby pozyskania listy nazw kont u(cid:285)ytkowników mo(cid:285)na dokona(cid:202) za ka(cid:285)dym razem, gdy aplikacja zwraca ró(cid:285)ne odpowiedzi dla poprawnych i nieprawid(cid:239)owych nazw kont. Ponadto niektóre aplikacje podczas rejestrowania nowego konta u(cid:285)ytkownika sprawdzaj(cid:200), czy konto o takiej nazwie ju(cid:285) istnieje, aby zapewni(cid:202) jego unikatow(cid:200) nazw(cid:218). Je(cid:285)eli taka weryfikacja poprawno(cid:258)ci nazwy zostanie przeprowa- dzona przed przes(cid:239)aniem formularza, oznacza to, (cid:285)e w badanym systemie istnieje us(cid:239)uga WWW, która przeprowadza wst(cid:218)pne sprawdzenie nazwy, i mo(cid:285)na tej us(cid:239)ugi u(cid:285)y(cid:202) do przeprowadzenia próby pozy- skania listy kont u(cid:285)ytkowników takiego systemu. Pozyskiwanie hase(cid:239) za pomoc(cid:200) ataków typu brute force i ataków s(cid:239)ownikowych Po zidentyfikowaniu listy kont u(cid:285)ytkowników w aplikacji naturalnym krokiem jest próba znalezienia hase(cid:239) dla tych u(cid:285)ytkowników. Istnieje wiele metod pozyskiwania prawid(cid:239)owych hase(cid:239) od u(cid:285)ytkowników, np.: podszywanie si(cid:218) pod oryginaln(cid:200) witryn(cid:218) na innym serwerze i nak(cid:239)anianie u(cid:285)ytkowników za pomoc(cid:200) metod socjotechnicznych do przesy(cid:239)ania swoich in- formacji, wykorzystywanie (cid:283)le zabezpieczonych mechanizmów odzyskiwania has(cid:239)a czy próby odgadywania wspó(cid:239)u(cid:285)ytkowanych hase(cid:239). 134 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami Brute force to metoda, która polega na wypróbowywaniu wszystkich mo(cid:285)liwych kombinacji znaków w celu znalezienia prawid(cid:239)owego has(cid:239)a. Taka metoda mo(cid:285)e si(cid:218) ca(cid:239)kiem dobrze spraw- dza(cid:202) w przypadku aplikacji, które zezwalaj(cid:200) na stosowanie krótkich hase(cid:239), sk(cid:239)adaj(cid:200)cych si(cid:218) maksymalnie z kilku znaków. Je(cid:285)eli takie has(cid:239)a s(cid:200) dozwolone, to zazwyczaj istnieje spora szansa na to, (cid:285)e korzysta z nich co najmniej jeden u(cid:285)ytkownik. W przypadku d(cid:239)u(cid:285)szych hase(cid:239) atak typu brute force jest ca(cid:239)kowicie niepraktyczny, poniewa(cid:285) zazwyczaj b(cid:218)dziesz musia(cid:239) wys(cid:239)a(cid:202) do aplikacji miliony lub nawet miliardy (cid:285)(cid:200)da(cid:241), zanim od- kryjesz jedno prawid(cid:239)owe has(cid:239)o, co powoduje, (cid:285)e czas niezb(cid:218)dny do przeprowadzenia takie- go ataku jest znacznie d(cid:239)u(cid:285)szy (ekstremalnie d(cid:239)u(cid:285)szy) ni(cid:285) standardowe jeden lub dwa tygo- dnie przeznaczane zazwyczaj na przeprowadzenie ca(cid:239)ego testu penetracyjnego. W takiej sytuacji powiniene(cid:258) polega(cid:202) raczej na przewidywalno(cid:258)ci elementu ludzkiego — nawet je(cid:285)eli teoretycznie liczba mo(cid:285)liwych kombinacji hase(cid:239) sk(cid:239)adaj(cid:200)cych si(cid:218) z o(cid:258)miu lub wi(cid:218)cej znaków osi(cid:200)ga warto(cid:258)ci naprawd(cid:218) kosmiczne, my, ludzie, nieco pod(cid:258)wiadomie u(cid:285)ywamy tylko nie- wielkiego podzbioru tych kombinacji, a najpopularniejsze has(cid:239)a z takiego podzbioru s(cid:200) bardzo cz(cid:218)sto spotykane w praktyce. Aby wykorzysta(cid:202) ten fakt, tworzone s(cid:200) s(cid:239)owniki, które zawieraj(cid:200) takie cz(cid:218)sto spotykane i domy(cid:258)lne has(cid:239)a, jak równie(cid:285) has(cid:239)a, które wyciek(cid:239)y w poprzednich atakach na popularne witryny. Korzystaj(cid:200)c z tych s(cid:239)owników, mo(cid:285)esz znacz(cid:200)co zminimalizowa(cid:202) liczb(cid:218) prób, które musisz przeprowadzi(cid:202), aby znale(cid:283)(cid:202) poprawne has(cid:239)o lub zwi(cid:218)kszy(cid:202) szans(cid:218) na znalezienie po- pularnego has(cid:239)a, które by(cid:239)o u(cid:285)ywane przez wiele osób. Od roku 2012 serwis SplashData co roku publikuje listy najcz(cid:218)(cid:258)ciej u(cid:285)ywanych hase(cid:239), bazuj(cid:200)ce na analizach zbiorów hase(cid:239), które wyciek(cid:239)y i zosta(cid:239)y upublicznione po udanych atakach hakerów na ca(cid:239)ym (cid:258)wiecie. Wyniki z lat 2017 i 2016 mo(cid:285)na sprawdzi(cid:202) na stronach: https://www.teamsid.com/worst-passwords- 2017-full-list/ oraz https://www.teamsid.com/worst-passwords-2016/. Inn(cid:200) list(cid:200) publikowan(cid:200) co roku jest lista najpopularniejszych hase(cid:239) przygotowywana przez deweloperów mened(cid:285)era Keeper: https://blog.keepersecurity.com/2017/01/13/most-common-passwords-of-2016-research-study/. Ataki na uwierzytelnianie typu Basic za pomoc(cid:200) pakietu THC Hydra Pakiet THC Hydra od dawna jest ulubionym narz(cid:218)dziem do (cid:239)amania hase(cid:239) online zarówno w(cid:258)ród hakerów, jak i pentesterów. (cid:146)amanie hase(cid:239) w trybie online oznacza, (cid:285)e program w ka(cid:285)dej iteracji dokonuje próby logo- wania do us(cid:239)ugi sieciowej. Mo(cid:285)e to generowa(cid:202) relatywnie du(cid:285)y ruch sieciowy i powodowa(cid:202) pojawianie si(cid:218) ostrze(cid:285)e(cid:241) na serwerze, zw(cid:239)aszcza gdy jest on wyposa(cid:285)ony w ró(cid:285)ne narz(cid:218)dzia bezpiecze(cid:241)stwa i systemy wykrywania w(cid:239)ama(cid:241). Z tego powodu podczas przeprowadzania próby pozyskania hase(cid:239) za pomoc(cid:200) ataku typu brute force lub ataku s(cid:239)ownikowego na aplika- cj(cid:218) lub serwer powiniene(cid:258) zachowa(cid:202) szczególn(cid:200) ostro(cid:285)no(cid:258)(cid:202) i ustawi(cid:202) parametry ataku tak, aby uzyska(cid:202) najlepsz(cid:200) mo(cid:285)liw(cid:200) szybko(cid:258)(cid:202) dzia(cid:239)ania bez przeci(cid:200)(cid:285)ania serwera, generowania alertów lub blokowania kont u(cid:285)ytkowników. 135 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Dobrym podej(cid:258)ciem do przeprowadzania ataków online, gdy (cid:258)rodowisko celu jest monitorowane lub gdy atakowane konto jest automatycznie blokowane po wykonaniu okre(cid:258)lonej liczby nieudanych prób logowania, jest rozpocz(cid:218)cie ataku z trzema lub czterema has(cid:239)ami na u(cid:285)ytkownika, ewentualnie z liczb(cid:200) prób mniejsz(cid:200) ni(cid:285) próg blokady. Na pocz(cid:200)tek wybierz najbardziej oczywiste lub cz(cid:218)sto u(cid:285)ywane has(cid:239)a (password, admin czy 12345678), a je(cid:285)eli taka próba si(cid:218) nie powiedzie, wró(cid:202) do etapu rozpoznania, postaraj si(cid:218) uzyska(cid:202) wi(cid:218)cej szczegó(cid:239)owych informacji o celu i wybra(cid:202) lepszy zestaw hase(cid:239), a nast(cid:218)pnie spróbuj ponownie po kilku minutach lub godzinach. Pakiet THC Hydra ma mo(cid:285)liwo(cid:258)(cid:202) (cid:239)(cid:200)czenia si(cid:218) z szerok(cid:200) gam(cid:200) us(cid:239)ug sieciowych, takich jak FTP, SSH, Telnet czy RDP. Wykorzystamy go do ataku s(cid:239)ownikowego na serwer HTTP, który u(cid:285)ywa uwierzytelnienia typu Basic. Najpierw musisz pozna(cid:202) adres URL, który faktycznie przetwarza dane logowania. Uruchom swoj(cid:200) maszyn(cid:218) z systemem Kali Linux, otwórz pakiet Burp Suite i skonfiguruj przegl(cid:200)dark(cid:218) tak, by u(cid:285)ywa(cid:239)a go jako proxy. W naszym przyk(cid:239)adzie u(cid:285)yjemy podatnej na atak maszyny wirtualnej i aplikacji WebGoat. Podczas próby uzyskania dost(cid:218)pu do WebGoat pojawia si(cid:218) okno dialogowe z pro(cid:258)b(cid:200) o podanie danych logowania. Je(cid:285)eli przesy(cid:239)asz dowoln(cid:200), losow(cid:200) nazw(cid:218) i has(cid:239)o, ponownie otrzymasz to samo okno dialogowe: Nawet je(cid:285)eli próba logowania si(cid:218) nie powiod(cid:239)a, (cid:285)(cid:200)danie jest ju(cid:285) zarejestrowane w Burp Proxy. Nast(cid:218)pnie wyszukaj (cid:285)(cid:200)danie, w którym znajduje si(cid:218) nag(cid:239)ówek Authorization: Basic (patrz zrzut na nast(cid:218)pnej stronie). Teraz wiesz, (cid:285)e adres URL odpowiadaj(cid:200)cy za logowanie do aplikacji to http://10.7.7.5/WebGoat/attack. Jest to wystarczaj(cid:200)ca ilo(cid:258)(cid:202) informacji do uruchomienia Hydry, ale najpierw musisz przygotowa(cid:202) list(cid:218) mo(cid:285)liwych nazw kont u(cid:285)ytkowników i drug(cid:200), zawieraj(cid:200)c(cid:200) has(cid:239)a. W rzeczywistym scena- riuszu listy potencjalnych nazw u(cid:285)ytkowników i hase(cid:239) zale(cid:285)(cid:200) od organizacji, aplikacji i wie- dzy u(cid:285)ytkowników. W naszym przyk(cid:239)adzie dla aplikacji WebGoat mo(cid:285)esz u(cid:285)y(cid:202) nast(cid:218)puj(cid:200)cej listy prawdopodobnych nazw kont u(cid:285)ytkowników: 136 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami adminwebgoat administrator user test testuser Je(cid:285)eli chodzi o list(cid:218) hase(cid:239), mo(cid:285)esz wypróbowa(cid:202) niektóre z najbardziej popularnych hase(cid:239) oraz doda(cid:202) ró(cid:285)ne warianty nazwy aplikacji: 123456 password Password1 admin webgoat WebGoat qwerty 123123 12345678 owasp Zapisz list(cid:218) u(cid:285)ytkowników jako plik users.txt, a list(cid:218) hase(cid:239) jako plik passwords.txt. Najpierw uruchom polecenie hydra bez (cid:285)adnych parametrów, aby wy(cid:258)wietli(cid:202) opis sk(cid:239)adni i opcji wy- wo(cid:239)ania polecenia: 137 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Wida(cid:202), (cid:285)e aby zdefiniowa(cid:202) plik zawieraj(cid:200)cy list(cid:218) potencjalnych nazw kont u(cid:285)ytkowników, musimy u(cid:285)y(cid:202) opcji -L, do okre(cid:258)lenia pliku listy hase(cid:239) musimy u(cid:285)y(cid:202) opcji -P, a protokó(cid:239), adres serwera i dodatkowe informacje mo(cid:285)emy zdefiniowa(cid:202) w nast(cid:218)puj(cid:200)cy sposób: protocol:// server:port/optional. Uruchom poni(cid:285)sze polecenie: hydra -L users.txt -P passwords.txt http-get://10.7.7.5:8080/WebGoat/attack Po uruchomieniu polecenia szybko si(cid:218) przekonasz, (cid:285)e w tym przyk(cid:239)adzie do serwera mo(cid:285)e- my si(cid:218) zalogowa(cid:202), u(cid:285)ywaj(cid:200)c konta u(cid:285)ytkownika o nazwie webgoat i has(cid:239)a webgoat. Jedn(cid:200) z bardzo u(cid:285)ytecznych opcji wywo(cid:239)ania programu Hydra jest -e z modyfikatorami n, s lub r, które mog(cid:200) zmienia(cid:202) proces logowania, wysy(cid:239)aj(cid:200)c puste has(cid:239)o (n), u(cid:285)ywaj(cid:200)c nazwy u(cid:285)ytkownika jako has(cid:239)a (s), odwracaj(cid:200)c nazw(cid:218) u(cid:285)ytkownika i u(cid:285)ywaj(cid:200)c jej jako has(cid:239)a (r). Ciekaw(cid:200) i bardzo przydatn(cid:200) opcj(cid:200) jest równie(cid:285) -u, która powoduje, (cid:285)e Hydra najpierw pobierze pierwsze has(cid:239)o z pliku hase(cid:239) i spróbuje si(cid:218) zalo- gowa(cid:202) po kolei na wszystkie podane konta u(cid:285)ytkowników, nast(cid:218)pnie pobiera drugie has(cid:239)o i próbuje si(cid:218) zalogowa(cid:202) po kolei na wszystkie konta itd., a(cid:285) do wyczerpania si(cid:218) pliku hase(cid:239). Takie post(cid:218)powanie mo(cid:285)e pomóc Ci unikn(cid:200)(cid:202) zablokowania przez niektóre mechanizmy obronne (cid:258)rodowiska celu. 138 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami Ataki na uwierzytelnianie oparte na formularzach Poniewa(cid:285) proces logowania za po(cid:258)rednictwem formularza nie jest w (cid:285)aden sposób ustanda- ryzowany, a aplikacje internetowe s(cid:200) znacznie bardziej elastyczne pod wzgl(cid:218)dem sprawdza- nia poprawno(cid:258)ci i zapobiegania atakom, ataki typu brute force na systemy wykorzystuj(cid:200)ce uwierzytelnianie oparte na formularzach stanowi(cid:200) szczególne wyzwanie, poniewa(cid:285): (cid:81) Parametry, za pomoc(cid:200) których przekazywane s(cid:200) nazwy kont u(cid:285)ytkowników oraz has(cid:239)a, nie maj(cid:200) (cid:285)adnej standardowej nazwy, pozycji ani formatu. (cid:81) Nie istnieje (cid:285)aden standard, który okre(cid:258)la(cid:239)by, jak powinna wygl(cid:200)da(cid:202) standardowa negatywna i pozytywna odpowied(cid:283) na prób(cid:218) logowania. (cid:81) Kontrole poprawno(cid:258)ci danych po stronie klienta i po stronie serwera mog(cid:200) zapobiega(cid:202) niektórym rodzajom ataków lub wielokrotnemu powtarzaniu przesy(cid:239)anych (cid:285)(cid:200)da(cid:241). (cid:81) Uwierzytelnienie mo(cid:285)na wykonywa(cid:202) w wi(cid:218)cej ni(cid:285) jednym kroku; np. (cid:285)(cid:200)daj(cid:200)c podania nazwy konta u(cid:285)ytkownika na jednej stronie i has(cid:239)a na nast(cid:218)pnej stronie. Szcz(cid:218)(cid:258)liwie dla pentesterów wi(cid:218)kszo(cid:258)(cid:202) aplikacji wykorzystuje podstawowy wzór formularza HTML, wys(cid:239)any przez (cid:285)(cid:200)danie POST, gdzie nazwa u(cid:285)ytkownika i has(cid:239)o s(cid:200) przekazywane jako pa- rametry, po pomy(cid:258)lnym zalogowaniu si(cid:218) nast(cid:218)puje przekierowanie do strony g(cid:239)ównej, a w przy- padku niepowodzenia wy(cid:258)wietlany jest komunikat o wyst(cid:200)pieniu b(cid:239)(cid:218)du lub nast(cid:218)puje ponowne przekierowanie na stron(cid:218) logowania. Teraz przeanalizujemy dwie metody, których mo(cid:285)na u(cid:285)y- wa(cid:202) do przeprowadzenia ataku s(cid:239)ownikowego na tego rodzaju formularz. Ta sama zasada odnosi si(cid:218) do prawie wszystkich mechanizmów uwierzytelniania opartych na formularzach, z pewnymi modyfikacjami sposobu interpretacji odpowiedzi i wymaganych do przes(cid:239)ania parametrów. Zastosowanie modu(cid:239)u Burp Intruder Podobnie jak w przypadku ataku na uwierzytelnianie typu Basic, aby przeprowadzi(cid:202) po- prawny atak na formularz, musimy zidentyfikowa(cid:202) (cid:285)(cid:200)danie, które realizuje faktyczne uwie- rzytelnienie, i sprawdzi(cid:202) jego parametry. Na poni(cid:285)szym zrzucie ekranu po lewej stronie przedstawiono fragment formularza logowania apli- kacji OWASP Bricks (w menu g(cid:239)ównym maszyny wirtualnej BWA wybierz polecenie Bricks/Login pages/Login #3 (Bricks/strony logowania/login numer 3)), a po prawej stronie fragment okna Burp Proxy z wy(cid:258)wietlonym (cid:285)(cid:200)daniem przes(cid:239)anym za pomoc(cid:200) metody POST. Zwró(cid:202) uwag(cid:218), (cid:285)e parametry username i passwd s(cid:200) wysy(cid:239)ane w tre(cid:258)ci (cid:285)(cid:200)dania, a w jego nag(cid:239)ówku nie ma pola Authorization: 139 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Aby wykona(cid:202) atak s(cid:239)ownikowy na tej stronie logowania, musimy najpierw przeanalizowa(cid:202) otrzyman(cid:200) odpowied(cid:283), by sprawdzi(cid:202), co odró(cid:285)nia nieudane logowanie od udanego: Na zrzucie ekranu mo(cid:285)na zauwa(cid:285)y(cid:202), (cid:285)e w przypadku niepowodzenia logowania odpowied(cid:283) zawiera komunikat Wrong user name or password (niepoprawna nazwa konta u(cid:285)ytkownika lub has(cid:239)o). Mo(cid:285)emy (cid:258)mia(cid:239)o za(cid:239)o(cid:285)y(cid:202), (cid:285)e takiego komunikatu nie zobaczymy w odpowiedzi potwierdzaj(cid:200)cej pomy(cid:258)lne zalogowanie si(cid:218) do aplikacji. Nast(cid:218)pnie przekazujemy to (cid:285)(cid:200)danie do modu(cid:239)u Intruder, definiujemy parametry username oraz passwd jako dane wej(cid:258)ciowe i jako typ ataku wybieramy Cluster bomb: Nast(cid:218)pnie przechodzimy na kart(cid:218) Payloads ((cid:239)adunki), z listy rozwijanej Payload Set (zestaw (cid:239)adunków) wybieramy (cid:239)adunek numer 1 i (cid:239)adujemy plik users.txt zawieraj(cid:200)cy nazwy u(cid:285)yt- kowników, z którego korzystali(cid:258)my wcze(cid:258)niej: 140 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami Jako zestaw (cid:239)adunków numer 2 u(cid:285)yjemy pliku hase(cid:239) passwords.txt, którego równie(cid:285) u(cid:285)ywali- (cid:258)my w poprzednim (cid:202)wiczeniu: Jak wida(cid:202) na kolejnym rysunku, do serwera zostanie wys(cid:239)anych 60 (cid:285)(cid:200)da(cid:241), poniewa(cid:285) w naszych przyk(cid:239)adowych plikach znajdowa(cid:239)o si(cid:218) 6 nazw kont u(cid:285)ytkowników i 10 mo(cid:285)liwych hase(cid:239): 141 Poleć książkęKup książkę Kali Linux. Testy penetracyjne W tym momencie mo(cid:285)esz ju(cid:285) rozpocz(cid:200)(cid:202) atak, przeanalizowa(cid:202) otrzymane odpowiedzi i spraw- dzi(cid:202), czy jaka(cid:258) kombinacja logowania zako(cid:241)czy(cid:239)a si(cid:218) powodzeniem. Modu(cid:239) Burp Intruder ma jeszcze kilka innych funkcji, które mog(cid:200) znacz(cid:200)co u(cid:239)atwi(cid:202) Ci (cid:285)ycie, nie tylko w prostych scenariuszach takich jak ten, ale tak(cid:285)e podczas atakowania z(cid:239)o(cid:285)onych, rozbudowanych apli- kacji w rzeczywistym (cid:258)rodowisku celu. Aby si(cid:218) o tym przekona(cid:202), przejd(cid:283) na kart(cid:218) Options (opcje), a nast(cid:218)pnie wybierz opcj(cid:218) Grep — Match (wyszukiwanie z u(cid:285)yciem wyra(cid:285)enia grep), która powoduje automatyczne wyszukiwanie podanego tekstu w otrzymanych odpo- wiedziach, dzi(cid:218)ki czemu mo(cid:285)emy (cid:239)atwo zidentyfikowa(cid:202) (cid:285)(cid:200)dania logowania, które zako(cid:241)czy(cid:239)y si(cid:218) powodzeniem. Zaznacz opcj(cid:218) Flag result items with responses matching these expressions (oznacz (cid:285)(cid:200)dania, których zawarto(cid:258)(cid:202) pasuje do podanych wyra(cid:285)e(cid:241)), wyczy(cid:258)(cid:202) bie(cid:285)(cid:200)c(cid:200) list(cid:218) wy- ra(cid:285)e(cid:241) i w polu Enter a new item (wprowad(cid:283) nowy element) wpisz nast(cid:218)puj(cid:200)ce wyra(cid:285)enie: Wrong user name or password Naci(cid:258)nij klawisz Enter lub kliknij przycisk Add (dodaj). Modu(cid:239) Intruder automatycznie wyró(cid:285)ni wszystkie odpowiedzi zawieraj(cid:200)ce podany komunikat, w zwi(cid:200)zku z tym te, które nie zostan(cid:200) ofla- gowane, mog(cid:200) oznacza(cid:202) pomy(cid:258)lne logowanie. Je(cid:285)eli wiesz, jaki komunikat jest przesy(cid:239)any w od- powiedzi w przypadku poprawnej próby logowania, mo(cid:285)esz wprowadzi(cid:202) go zamiast komunikatu u(cid:285)ytego powy(cid:285)ej i w ten sposób bezpo(cid:258)rednio zidentyfikowa(cid:202) poprawny zestaw po(cid:258)wiadcze(cid:241): 142 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami Rozpocznij atak i poczekaj na wyniki: Wygl(cid:200)da na to, (cid:285)e uda(cid:239)o nam si(cid:218) znale(cid:283)(cid:202) przynajmniej jedn(cid:200) prawid(cid:239)ow(cid:200) kombinacj(cid:218) nazwy konta u(cid:285)ytkownika i has(cid:239)a dost(cid:218)pu. Zastosowanie pakietu THC Hydra W(cid:258)ród wielu protoko(cid:239)ów obs(cid:239)ugiwanych przez pakiet Hydra znajdziemy takie jak http-get- form, http-post-form, https-get-form i https-post-form, które s(cid:200) formularzami logowania HTTP i HTTPS przesy(cid:239)anymi za pomoc(cid:200) metod odpowiednio GET i POST. Korzystaj(cid:200)c z in- formacji z poprzedniego (cid:202)wiczenia, mo(cid:285)emy zatem uruchomi(cid:202) atak s(cid:239)ownikowy z u(cid:285)yciem pakietu Hydra za pomoc(cid:200) nast(cid:218)puj(cid:200)cego polecenia: hydra 10.7.7.5 http-form-post /owaspbricks/login-3/index.php:username=^USER^ passwd=^PASS^ submit=Submit :Wrong user name or password. -L users.txt -P passwords.tx 143 Poleć książkęKup książkę Kali Linux. Testy penetracyjne Z pewno(cid:258)ci(cid:200) zauwa(cid:285)y(cid:239)e(cid:258), (cid:285)e w tym przypadku sk(cid:239)adnia polecenia wywo(cid:239)uj(cid:200)cego program Hydra jest nieco inna ni(cid:285) poprzednio. Przyjrzyjmy si(cid:218) temu bli(cid:285)ej: 1. Rozpoczynamy od nazwy polecenia hydra i adresu IP hosta docelowego (hydra 10.7.7.5). 2. Nast(cid:218)pnie podajemy protokó(cid:239) lub us(cid:239)ug(cid:218), któr(cid:200) chcemy przetestowa(cid:202) (http-form-post). 3. Dalej dodajemy parametry specyficzne dla protoko(cid:239)u, które umieszczamy w cudzys(cid:239)owach prostych ( ) i rozdzielamy dwukropkami: (cid:81) Adres URL (/owaspbricks/login-3/index.php). (cid:81) Tre(cid:258)(cid:202) (cid:285)(cid:200)dania ze wskazaniem miejsca ^USER^, gdzie Hydra powinna umie(cid:258)ci(cid:202) nazwy u(cid:285)ytkowników, i ^PASS^ dla miejsca, w którym powinny si(cid:218) znale(cid:283)(cid:202) has(cid:239)a. (cid:81) Nieudany komunikat logowania (Wrong user name or password.). (cid:81) Na ko(cid:241)cu podajemy nazwy plików z list(cid:200) u(cid:285)ytkowników (opcja -L) oraz hase(cid:239) (opcja -P). Mechanizm resetowania has(cid:239)a Innym, powszechnie spotykanym i cz(cid:218)sto podatnym na atak elementem aplikacji interneto- wych jest implementacja mechanizmu odzyskiwania i resetowania has(cid:239)a. Poniewa(cid:285) aplikacje sieciowe musz(cid:200) by(cid:202) przyjazne dla u(cid:285)ytkownika, a zdarza si(cid:218), (cid:285)e niektórzy u(cid:285)ytkownicy zapominaj(cid:200) swoje has(cid:239)a, aplikacje musz(cid:200) zawiera(cid:202) sposób, który b(cid:218)dzie umo(cid:285)- liwia(cid:239) im resetowanie lub odzyskiwanie hase(cid:239). Opracowanie bezpiecznego sposobu wykona- nia takiej operacji nie jest (cid:239)atwym zadaniem i w wielu przypadkach ko(cid:241)czy si(cid:218) pozostawie- niem w aplikacji s(cid:239)abego ogniwa, które mo(cid:285)e wykorzysta(cid:202) pentester lub napastnik. Odzyskiwanie has(cid:239)a zamiast resetowania Kiedy deweloper aplikacji staje w obliczu sytuacji, (cid:285)e u(cid:285)ytkownik nie pami(cid:218)ta swojego has(cid:239)a, mo(cid:285)e wybra(cid:202) jedno z dwóch najcz(cid:218)(cid:258)ciej stosowanych rozwi(cid:200)za(cid:241): 1. Pozwoli(cid:202) u(cid:285)ytkownikowi na odzyskanie starego has(cid:239)a. 2. Pozwoli(cid:202) u(cid:285)ytkownikowi na zresetowanie starego has(cid:239)a i ustawienie nowego. Warto jednak zauwa(cid:285)y(cid:202), (cid:285)e sam fakt, i(cid:285) aplikacja pozwala u(cid:285)ytkownikowi na odzyskanie starego has(cid:239)a, implikuje istnienie pewnych oczywistych luk bezpiecze(cid:241)stwa w projekcie aplikacji: (cid:81) Zamiast u(cid:285)ywania jednokierunkowego algorytmu haszuj(cid:200)cego, który jest najlepszym sposobem na przechowywanie hase(cid:239), s(cid:200) one zapisywane w bazie danych w sposób umo(cid:285)liwiaj(cid:200)cy ich odzyskanie. (cid:81) Po stronie serwera has(cid:239)o u(cid:285)ytkownika mo(cid:285)e by(cid:202) odzyskane przez administratora systemu lub innego u(cid:285)ytkownika posiadaj(cid:200)cego odpowiednie uprawnienia (np. pracownika dzia(cid:239)u wsparcia technicznego). Zdeterminowany napastnik mo(cid:285)e równie(cid:285) by(cid:202) w stanie to zrobi(cid:202) poprzez in(cid:285)ynieri(cid:218) spo(cid:239)eczn(cid:200) lub wykorzystanie potencjalnych podatno(cid:258)ci i luk w systemie zabezpiecze(cid:241). 144 Poleć książkęKup książkę Rozdzia(cid:225) 4. • Podatno(cid:286)ci uwierzytelniania i zarz(cid:261)dzania sesjami (cid:81) Odzyskane has(cid:239)o jest pote
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Kali Linux. Testy penetracyjne. Wydanie III
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: