80,443 - Pentesting Web Methodology
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-e70bceed6fa35760d025f037a78106ab025a68cd%252Fimage%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=b1dca79f&sv=1)
Jeśli jesteś zainteresowany karierą w hacking i chcesz złamać to, co nie do złamania - zatrudniamy! (wymagana biegła znajomość polskiego w mowie i piśmie).
Podstawowe informacje
Usługa internetowa jest najbardziej powszechną i rozległą usługą i istnieje wiele różnych typów podatności.
Domyślny port: 80 (HTTP), 443(HTTPS)
Web API Guidance
Web API PentestingMethodology summary
W tej metodologii zakładamy, że zamierzasz zaatakować domenę (lub subdomenę) i tylko to. Dlatego powinieneś zastosować tę metodologię do każdej odkrytej domeny, subdomeny lub adresu IP z nieokreślonym serwerem webowym w zakresie.
Server Version (Vulnerable?)
Identify
Sprawdź, czy istnieją znane luki w wersji serwera działającego. Nagłówki HTTP i ciasteczka odpowiedzi mogą być bardzo przydatne do identyfikacji technologii i/lub wersji używanej. Skanowanie Nmap może zidentyfikować wersję serwera, ale mogą być również przydatne narzędzia whatweb, webtech lub https://builtwith.com/:
Search for vulnerabilities of the web application version
Sprawdź, czy istnieje jakiś WAF
Sztuczki technologii webowych
Kilka sztuczek do znajdowania luk w różnych znanych technologiach:
Pamiętaj, że ta sama domena może używać różnych technologii w różnych portach, folderach i subdomenach. Jeśli aplikacja webowa korzysta z jakiejkolwiek znanej technologii/platformy wymienionej wcześniej lub jakiejkolwiek innej, nie zapomnij poszukać w Internecie nowych sztuczek (i daj mi znać!).
Przegląd kodu źródłowego
Jeśli kod źródłowy aplikacji jest dostępny na github, oprócz przeprowadzenia własnego testu White box aplikacji, istnieje kilka informacji, które mogą być przydatne dla aktualnego testowania Black-Box:
Czy istnieje plik Change-log lub Readme lub Version lub cokolwiek z informacjami o wersji dostępnymi przez sieć?
Jak i gdzie są przechowywane dane uwierzytelniające? Czy istnieje jakiś (dostępny?) plik z danymi uwierzytelniającymi (nazwy użytkowników lub hasła)?
Czy hasła są w czystym tekście, szyfrowane czy jaki algorytm haszujący jest używany?
Czy używa jakiegoś klucza głównego do szyfrowania czegoś? Jaki algorytm jest używany?
Czy możesz uzyskać dostęp do któregokolwiek z tych plików, wykorzystując jakąś lukę?
Czy w githubie są jakieś interesujące informacje (rozwiązane i nierozwiązane) problemy? Lub w historii commitów (może jakieś hasło wprowadzone w starym commicie)?
Automatyczne skanery
Automatyczne skanery ogólnego przeznaczenia
CMS skanery
Jeśli używany jest CMS, nie zapomnij uruchomić skanera, może znajdziesz coś interesującego:
Clusterd: JBoss, ColdFusion, WebLogic, Tomcat, Railo, Axis2, Glassfish CMSScan: WordPress, Drupal, Joomla, vBulletin strony pod kątem problemów z bezpieczeństwem. (GUI) VulnX: Joomla, Wordpress, Drupal, PrestaShop, Opencart CMSMap: (W)ordpress, (J)oomla, (D)rupal lub (M)oodle droopscan: Drupal, Joomla, Moodle, Silverstripe, Wordpress
W tym momencie powinieneś już mieć pewne informacje o serwerze WWW używanym przez klienta (jeśli jakiekolwiek dane są podane) oraz kilka sztuczek, które warto mieć na uwadze podczas testu. Jeśli masz szczęście, mogłeś nawet znaleźć CMS i uruchomić jakiś skaner.
Krok po kroku Odkrywanie Aplikacji Webowej
Od tego momentu zaczniemy interakcję z aplikacją webową.
Wstępne kontrole
Domyślne strony z interesującymi informacjami:
/robots.txt
/sitemap.xml
/crossdomain.xml
/clientaccesspolicy.xml
/.well-known/
Sprawdź również komentarze na głównych i pobocznych stronach.
Wymuszanie błędów
Serwery WWW mogą zachowywać się nieprzewidywalnie, gdy wysyłane są do nich dziwne dane. Może to otworzyć luki lub ujawnienie wrażliwych informacji.
Uzyskaj dostęp do fałszywych stron jak /whatever_fake.php (.aspx,.html,.etc)
Dodaj "[]", "]]" i "[[" w wartościach cookie i wartościach parametrów, aby stworzyć błędy
Wygeneruj błąd, podając dane jako
/~randomthing/%s
na końcu URLSpróbuj różnych metod HTTP jak PATCH, DEBUG lub błędnych jak FAKE
Sprawdź, czy możesz przesyłać pliki (PUT verb, WebDav)
Jeśli odkryjesz, że WebDav jest włączony, ale nie masz wystarczających uprawnień do przesyłania plików w folderze głównym, spróbuj:
Brute Force poświadczeń
Przesyłać pliki za pomocą WebDav do pozostałych znalezionych folderów w obrębie strony internetowej. Możesz mieć uprawnienia do przesyłania plików w innych folderach.
Luki w SSL/TLS
Jeśli aplikacja nie wymusza użycia HTTPS w żadnej części, to jest vulnerable to MitM
Jeśli aplikacja wysyła wrażliwe dane (hasła) używając HTTP. To jest poważna luka.
Użyj testssl.sh do sprawdzenia luk (w programach Bug Bounty prawdopodobnie tego rodzaju luki nie będą akceptowane) i użyj a2sv do ponownego sprawdzenia luk:
Informacje o lukach SSL/TLS:
Spidering
Uruchom jakiś rodzaj spidera w sieci. Celem spidera jest znalezienie jak największej liczby ścieżek z testowanej aplikacji. Dlatego należy wykorzystać przeszukiwanie sieci i zewnętrzne źródła, aby znaleźć jak najwięcej ważnych ścieżek.
gospider (go): HTML spider, LinkFinder w plikach JS i zewnętrzne źródła (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
hakrawler (go): HML spider, z LinkFinder dla plików JS i Archive.org jako zewnętrzne źródło.
dirhunt (python): HTML spider, wskazuje również "soczyste pliki".
evine (go): Interaktywny CLI HTML spider. Wyszukuje również w Archive.org.
meg (go): To narzędzie nie jest spiderem, ale może być przydatne. Możesz po prostu wskazać plik z hostami i plik ze ścieżkami, a meg pobierze każdą ścieżkę na każdym hoście i zapisze odpowiedź.
urlgrab (go): HTML spider z możliwościami renderowania JS. Wygląda jednak na to, że nie jest utrzymywany, wersja skompilowana jest stara, a obecny kod nie kompiluje się.
gau (go): HTML spider, który korzysta z zewnętrznych dostawców (wayback, otx, commoncrawl).
ParamSpider: Ten skrypt znajdzie adresy URL z parametrami i je wypisze.
galer (go): HTML spider z możliwościami renderowania JS.
LinkFinder (python): HTML spider, z możliwościami beautify JS, zdolny do wyszukiwania nowych ścieżek w plikach JS. Warto również rzucić okiem na JSScanner, który jest wrapperem LinkFinder.
goLinkFinder (go): Do wyodrębniania punktów końcowych zarówno w źródle HTML, jak i w osadzonych plikach javascript. Przydatne dla łowców błędów, zespołów red, ninja infosec.
JSParser (python2.7): Skrypt w pythonie 2.7 używający Tornado i JSBeautifier do analizy względnych adresów URL z plików JavaScript. Przydatne do łatwego odkrywania żądań AJAX. Wygląda na to, że nie jest utrzymywany.
relative-url-extractor (ruby): Dany plik (HTML) wyodrębni z niego adresy URL, używając sprytnych wyrażeń regularnych do znajdowania i wyodrębniania względnych adresów URL z brzydkich (minifikowanych) plików.
JSFScan (bash, kilka narzędzi): Zbieraj interesujące informacje z plików JS, używając kilku narzędzi.
subjs (go): Znajdź pliki JS.
page-fetch (go): Załaduj stronę w bezgłowym przeglądarku i wydrukuj wszystkie załadowane adresy URL, aby załadować stronę.
Feroxbuster (rust): Narzędzie do odkrywania treści, łączące kilka opcji poprzednich narzędzi.
Javascript Parsing: Rozszerzenie Burp do znajdowania ścieżek i parametrów w plikach JS.
Sourcemapper: Narzędzie, które, podając URL .js.map, uzyska dla Ciebie zbeautyfikowany kod JS.
xnLinkFinder: To narzędzie służy do odkrywania punktów końcowych dla danego celu.
waymore: Odkryj linki z maszyny wayback (pobierając również odpowiedzi w wayback i szukając więcej linków).
HTTPLoot (go): Przeszukuj (nawet wypełniając formularze) i znajdź wrażliwe informacje, używając specyficznych wyrażeń regularnych.
SpiderSuite: Spider Suite to zaawansowany wielofunkcyjny GUI web security Crawler/Spider zaprojektowany dla profesjonalistów w dziedzinie cyberbezpieczeństwa.
jsluice (go): To pakiet Go i narzędzie wiersza poleceń do wyodrębniania adresów URL, ścieżek, sekretów i innych interesujących danych z kodu źródłowego JavaScript.
ParaForge: ParaForge to proste rozszerzenie Burp Suite do wyodrębniania parametrów i punktów końcowych z żądania, aby stworzyć niestandardową listę słów do fuzzingu i enumeracji.
katana (go): Świetne narzędzie do tego.
Crawley (go): Wydrukuj każdy link, który uda mu się znaleźć.
Brute Force directories and files
Rozpocznij brute-forcing od folderu głównego i upewnij się, że brute-forcesz wszystkie znalezione katalogi przy użyciu tej metody oraz wszystkie katalogi odkryte przez Spidering (możesz to robić brute-forcing rekursywnie i dodając na początku używanej listy słów nazwy znalezionych katalogów). Narzędzia:
Dirb / Dirbuster - Wbudowane w Kali, stare (i wolne) ale funkcjonalne. Umożliwia certyfikaty auto-podpisane i przeszukiwanie rekursywne. Zbyt wolne w porównaniu do innych opcji.
Dirsearch (python): Nie pozwala na certyfikaty auto-podpisane, ale umożliwia przeszukiwanie rekursywne.
Gobuster (go): Umożliwia certyfikaty auto-podpisane, nie ma przeszukiwania rekursywnego.
Feroxbuster - Szybki, wspiera przeszukiwanie rekursywne.
wfuzz
wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ
ffuf - Szybki:
ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ
uro (python): To nie jest spider, ale narzędzie, które, podając listę znalezionych adresów URL, usunie "zduplikowane" adresy URL.
Scavenger: Rozszerzenie Burp do tworzenia listy katalogów z historii burp różnych stron.
TrashCompactor: Usuwa adresy URL z zduplikowanymi funkcjonalnościami (na podstawie importów js).
Chamaleon: Używa wapalyzer do wykrywania używanych technologii i wybierania list słów do użycia.
Zalecane słowniki:
raft-large-directories-lowercase.txt
directory-list-2.3-medium.txt
RobotsDisallowed/top10000.txt
/usr/share/wordlists/dirb/common.txt
/usr/share/wordlists/dirb/big.txt
/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
Uwaga, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spideringu, powinien być Brute-Forced.
Co sprawdzić w każdym znalezionym pliku
Broken link checker: Znajdź uszkodzone linki w HTML, które mogą być podatne na przejęcia.
Kopie zapasowe plików: Gdy znajdziesz wszystkie pliki, poszukaj kopii zapasowych wszystkich plików wykonywalnych (".php", ".aspx"...). Typowe warianty nazewnictwa kopii zapasowej to: file.ext~, #file.ext#, ~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp i file.old. Możesz również użyć narzędzia bfac lub backup-gen.
Odkryj nowe parametry: Możesz użyć narzędzi takich jak Arjun, parameth, x8 i Param Miner do odkrywania ukrytych parametrów. Jeśli możesz, spróbuj wyszukać ukryte parametry w każdym wykonywalnym pliku webowym.
Arjun wszystkie domyślne listy słów: https://github.com/s0md3v/Arjun/tree/master/arjun/db
Param-miner “params” : https://github.com/PortSwigger/param-miner/blob/master/resources/params
Assetnote “parameters_top_1m”: https://wordlists.assetnote.io/
nullenc0de “params.txt”: https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
Komentarze: Sprawdź komentarze wszystkich plików, możesz znaleźć dane uwierzytelniające lub ukrytą funkcjonalność.
Jeśli grasz w CTF, "powszechnym" trikiem jest ukrywanie informacji w komentarzach po prawej stronie strony (używając setek spacji, aby nie widzieć danych, jeśli otworzysz kod źródłowy w przeglądarce). Inną możliwością jest użycie wielu nowych linii i ukrycie informacji w komentarzu na dole strony internetowej.
Klucze API: Jeśli znajdziesz jakikolwiek klucz API, istnieje przewodnik, który wskazuje, jak używać kluczy API różnych platform: keyhacks, zile, truffleHog, SecretFinder, RegHex, DumpsterDive, EarlyBird.
Klucze API Google: Jeśli znajdziesz jakikolwiek klucz API wyglądający jak AIzaSyA-qLheq6xjDiEIRisP_ujUseYLQCHUjik, możesz użyć projektu gmapapiscanner, aby sprawdzić, do jakich API klucz ma dostęp.
S3 Buckets: Podczas spideringu sprawdź, czy jakikolwiek subdomen lub jakikolwiek link jest związany z jakimś S3 bucket. W takim przypadku, sprawdź uprawnienia bucketu.
Specjalne odkrycia
Podczas wykonywania spideringu i brute-forcingu możesz znaleźć interesujące rzeczy, na które musisz zwrócić uwagę.
Interesujące pliki
Szukaj linków do innych plików w plikach CSS.
Jeśli znajdziesz .env, można znaleźć takie informacje jak klucze API, hasła do baz danych i inne informacje.
Jeśli znajdziesz punkty końcowe API, powinieneś je również przetestować. To nie są pliki, ale prawdopodobnie "wyglądają jak" one.
Pliki JS: W sekcji spideringu wspomniano o kilku narzędziach, które mogą wyodrębniać ścieżki z plików JS. Również, warto monitorować każdy znaleziony plik JS, ponieważ w niektórych przypadkach zmiana może wskazywać, że potencjalna luka została wprowadzona w kodzie. Możesz użyć na przykład JSMon.
Deobfuscator i Unpacker JavaScript: https://lelinhtinh.github.io/de4js/, https://www.dcode.fr/javascript-unobfuscator.
Beautifier JavaScript: http://jsbeautifier.org/, http://jsnice.org/.
Deobfuskacja JsFuck (javascript z znakami:"[]!+" https://ooze.ninja/javascript/poisonjs/).
TrainFuck:
+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.
W wielu przypadkach będziesz musiał zrozumieć wyrażenia regularne używane, to będzie przydatne: https://regex101.com/.
Możesz również monitorować pliki, w których wykryto formularze, ponieważ zmiana w parametrze lub pojawienie się nowego formularza może wskazywać na potencjalnie nową podatną funkcjonalność.
403 Forbidden/Basic Authentication/401 Unauthorized (bypass)
403 & 401 Bypasses502 Proxy Error
Jeśli jakakolwiek strona odpowiada tym kodem, prawdopodobnie jest to źle skonfigurowany proxy. Jeśli wyślesz żądanie HTTP takie jak: GET https://google.com HTTP/1.1
(z nagłówkiem hosta i innymi typowymi nagłówkami), proxy spróbuje uzyskać dostęp do google.com i znajdziesz SSRF.
NTLM Authentication - Info disclosure
Jeśli działający serwer prosi o uwierzytelnienie i jest Windows lub znajdziesz logowanie proszące o Twoje dane uwierzytelniające (i pytające o nazwa domeny), możesz wywołać ujawnienie informacji.
Wyślij nagłówek: “Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”
i z powodu tego, jak działa uwierzytelnianie NTLM, serwer odpowie wewnętrznymi informacjami (wersja IIS, wersja Windows...) w nagłówku "WWW-Authenticate".
Możesz zautomatyzować to, używając pluginu nmap "http-ntlm-info.nse".
HTTP Redirect (CTF)
Możliwe jest umieszczenie treści wewnątrz przekierowania. Ta treść nie będzie widoczna dla użytkownika (ponieważ przeglądarka wykona przekierowanie), ale coś może być ukryte w środku.
Sprawdzanie luk w sieci
Teraz, gdy przeprowadzono kompleksową enumerację aplikacji webowej, czas sprawdzić wiele możliwych luk. Możesz znaleźć listę kontrolną tutaj:
Web Vulnerabilities MethodologyWięcej informacji o lukach w sieci znajdziesz na:
Monitorowanie stron pod kątem zmian
Możesz użyć narzędzi takich jak https://github.com/dgtlmoon/changedetection.io, aby monitorować strony pod kątem modyfikacji, które mogą wprowadzać luki.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F600722126-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FJtticLwENZ4i7WwgHiQe%252Fuploads%252Fgit-blob-e70bceed6fa35760d025f037a78106ab025a68cd%252Fimage%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=b1dca79f&sv=1)
Jeśli jesteś zainteresowany karierą w hackingu i chcesz złamać to, co nie do złamania - zatrudniamy! (wymagana biegła znajomość polskiego w mowie i piśmie).
HackTricks Automatyczne Komendy
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated