<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**Wskazówka dotycząca bug bounty**: **zarejestruj się** na platformie **Intigriti**, premium **platformie bug bounty stworzonej przez hakerów, dla hakerów**! Dołącz do nas na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) już dziś i zacznij zarabiać nagrody do **100 000 USD**!
> 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 WWW w zakresie.
* [ ] Zacznij od **identyfikacji****technologii** używanych przez serwer WWW. Szukaj **trików**, które warto mieć na uwadze podczas reszty testu, jeśli uda ci się zidentyfikować technologię.
* [ ] Czy istnieje **znana podatność** wersji tej technologii?
* [ ] Czy używana jest **znana technologia**? Czy jest **użyteczny trik**, aby uzyskać więcej informacji?
* [ ] Czy jest **specjalistyczne narzędzie skanujące** do uruchomienia (np. wpscan)?
* [ ] Uruchom **skanery ogólnego zastosowania**. Nigdy nie wiesz, czy znajdą coś interesującego.
* [ ] Zacznij od **początkowych sprawdzeń**: **robots**, **sitemap**, błąd **404** i skan **SSL/TLS** (jeśli HTTPS).
* [ ] Zacznij **przeszukiwać** stronę internetową: Czas znaleźć wszystkie możliwe **pliki, foldery** i **parametry używane**. Sprawdź również **specjalne znaleziska**.
* [ ]_Zauważ, że za każdym razem, gdy odkryjesz nowy katalog podczas ataku brute-force lub przeszukiwania, powinieneś go przeszukać._
* [ ]**Atak brute-force na katalogi**: Spróbuj przeprowadzić atak brute-force na wszystkie odkryte foldery, szukając nowych **plików** i **katalogów**.
* [ ]_Zauważ, że za każdym razem, gdy odkryjesz nowy katalog podczas ataku brute-force lub przeszukiwania, powinieneś go przetestować pod kątem ataku brute-force._
* [ ]**Sprawdzanie kopii zapasowych**: Sprawdź, czy można znaleźć **kopie zapasowe** odkrytych plików, dodając popularne rozszerzenia kopii zapasowych.
* [ ]**Atak brute-force na parametry**: Spróbuj znaleźć ukryte parametry.
* [ ] Po **zidentyfikowaniu** wszystkich możliwych **punktów końcowych** akceptujących **dane użytkownika**, sprawdź wszystkie rodzaje związanych z nimi **podatności**.
* [ ] [Postępuj zgodnie z tą listą kontrolną](../../pentesting-web/web-vulnerabilities-methodology/)
Sprawdź, czy istnieją **znane podatności** dla wersji serwera, która jest używana.\
**Nagłówki HTTP i ciasteczka odpowiedzi** mogą być bardzo przydatne do **identyfikacji** używanych **technologii** i/lub **wersji**. Skan **Nmap** może zidentyfikować wersję serwera, ale również przydatne mogą być narzędzia [**whatweb**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)lub [**https://builtwith.com/**](https://builtwith.com)**:**
* [PHP (php ma wiele interesujących trików, które mogą być wykorzystane)](php-tricks-esp/)
* [Python](python.md)
* [Spring Actuators](spring-actuators.md)
* [Symphony](symphony.md)
* [Tomcat](tomcat.md)
* [VMWare](vmware-esx-vcenter....md)
* [Web API Pentesting](web-api-pentesting.md)
* [WebDav](put-method-webdav.md)
* [Werkzeug](werkzeug.md)
* [Wordpress](wordpress.md)
* [Electron Desktop (XSS to RCE)](electron-desktop-apps/)
Należy pamiętać, że ta sama domena może używać różnych technologii na różnych portach, folderach i subdomenach. Jeśli aplikacja internetowa korzysta z jakiejkolwiek znanej technologii/platformy wymienionej wcześniej lub jakiejkolwiek innej, nie zapomnij wyszukać w Internecie nowych trików (i daj mi znać!).
### Przegląd kodu źródłowego
Jeśli kod źródłowy aplikacji jest dostępny na GitHubie, oprócz przeprowadzenia własnego testu White box aplikacji, istnieje kilka informacji, które mogą być przydatne w obecnym teście Black-Box:
* Czy istnieje plik Change-log, Readme lub Version lub cokolwiek z informacjami o wersji dostępnymi przez sieć?
* Jak i gdzie są przechowywane dane uwierzytelniające? Czy istnieje (dostępny?) plik z danymi uwierzytelniającymi (nazwy użytkowników lub hasła)?
* Czy hasła są w postaci tekstowej, zaszyfrowanej czy jakiego algorytmu haszowania używano?
* Czy jest używany jakiś klucz główny do szyfrowania czegoś? Jakiego algorytmu użyto?
* Czy można uzyskać dostęp do któregoś z tych plików, wykorzystując jakąś podatność?
* Czy w GitHubie znajdują się jakieś interesujące informacje (rozwiązane i nierozwiązane) w postaci problemów (issues)? Czy w historii commitów (może jakieś hasło wprowadzone w starym commicie)?
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** - strony internetowe w celu wykrycia problemów zabezpieczeń. (GUI)\
> W tym momencie powinieneś już mieć pewne informacje na temat serwera WWW używanego przez klienta (jeśli jakiekolwiek dane zostały podane) oraz kilka sztuczek, które warto mieć na uwadze podczas testu. Jeśli masz szczęście, możesz nawet znaleźć CMS i uruchomić skaner.
Serwery WWW mogą **zachowywać się nieprzewidywalnie**, gdy do nich wysyłane są dziwne dane. Może to otworzyć **luki w zabezpieczeniach** lub **ujawnić wrażliwe informacje**.
* **Prześlij pliki** za pomocą WebDav do **znalezionych folderów** na stronie internetowej. Możesz mieć uprawnienia do przesyłania plików do innych folderów.
Użyj narzędzia [**testssl.sh**](https://github.com/drwetter/testssl.sh) do sprawdzania **podatności** (w programach Bug Bounty tego rodzaju podatności prawdopodobnie nie będą akceptowane) i użyj narzędzia [**a2sv**](https://github.com/hahwul/a2sv) do ponownego sprawdzenia podatności:
Uruchom pewnego rodzaju **spidera** wewnątrz sieci. Celem spidera jest **znalezienie jak największej liczby ścieżek** w testowanej aplikacji. Dlatego należy używać przeszukiwania sieci i źródeł zewnętrznych, aby znaleźć jak najwięcej prawidłowych ścieżek.
* [**gospider**](https://github.com/jaeles-project/gospider) (go): Spider HTML, LinkFinder w plikach JS i źródła zewnętrzne (Archive.org, CommonCrawl.org, VirusTotal.com, AlienVault.com).
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): Spider HTML, z LinkFinderem dla plików JS i źródłem zewnętrznym Archive.org.
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): Spider HTML, wskazuje również "ważne pliki".
* [**evine** ](https://github.com/saeeddhqan/evine)(go): Interaktywny CLI spider HTML. Szuka również w Archive.org.
* [**meg**](https://github.com/tomnomnom/meg) (go): To narzędzie nie jest spiderem, ale może być przydatne. Wystarczy wskazać plik z hostami i plik z ścieżkami, a meg pobierze każdą ścieżkę na każdym hoście i zapisze odpowiedź.
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): Spider HTML z możliwościami renderowania JS. Wygląda jednak na to, że nie jest rozwijane, wersja skompilowana jest stara, a obecny kod nie kompiluje się.
* [**gau**](https://github.com/lc/gau) (go): Spider HTML, który korzysta z dostawców zewnętrznych (wayback, otx, commoncrawl).
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): Ten skrypt znajdzie adresy URL z parametrami i je wymieni.
* [**galer**](https://github.com/dwisiswant0/galer) (go): Spider HTML z możliwościami renderowania JS.
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): Spider HTML, z możliwościami pięknego formatowania JS, zdolny do wyszukiwania nowych ścieżek w plikach JS. Warto również spojrzeć na [JSScanner](https://github.com/dark-warlord14/JSScanner), który jest opakowaniem LinkFinder.
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): Do wyodrębniania punktów końcowych zarówno z kodu źródłowego HTML, jak i osadzonych plików JavaScript. Przydatne dla łowców błędów, zespołów czerwonych i ninja bezpieczeństwa informacji.
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skrypt python 2.7, który za pomocą Tornado i JSBeautifier analizuje względne adresy URL z plików JavaScript. Przydatne do łatwego odkrywania żądań AJAX. Wygląda na to, że nie jest rozwijane.
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): Na podstawie pliku (HTML) wyodrębnia z niego adresy URL za pomocą sprytnego wyrażenia regularnego, aby znaleźć i wyodrębnić względne adresy URL z brzydkich (skompresowanych) plików.
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, kilka narzędzi): Zbiera interesujące informacje z plików JS, korzystając z kilku narzędzi.
* [**subjs**](https://github.com/lc/subjs) (go): Znajduje pliki JS.
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): Ładuje stronę w przeglądarce bez interfejsu i drukuje wszystkie załadowane adresy URL, aby załadować stronę.
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): Narzędzie do odkrywania treści, łączące kilka opcji poprzednich narzędzi.
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): Rozszerzenie Burp do wyszukiwania ścieżek i parametrów w plikach JS.
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): Narzędzie, które na podstawie adresu URL .js.map pobierze piękny kod JS.
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): Narzędzie służące do odkrywania punktów końcowych dla określonego celu.
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Odkrywa linki z maszyny wayback (pobierając również odpowiedzi z maszyny wayback i szukając więcej linków).
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Przeszukuje (nawet wypełniając formularze) i znajduje również poufne informacje, korzystając z określonych wyrażeń regularnych.
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite to zaawansowany wielofunkcyjny GUI Crawler/Spider do bezpieczeństwa sieciowego, przeznaczony dla profesjonalistów ds. cyberbezpieczeństwa.
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): Jest to pakiet Go i [narzędzie wiersza poleceń](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice) do wyodrębniania adresów URL, ścieżek, sekretów i innych interesujących danych z kodu źródłowego JavaScript.
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForge to proste rozszerzenie **Burp Suite**, które wyodrębnia parametry i punkty końcowe z żądania w celu utworzenia niestandardowej listy słów do fuzzowania i wyliczania.
### Brute Force katalogów i plików
Rozpocznij **brute-forcing** od folderu głównego i upewnij się, że brute-force jest stosowany dla **wszystkich znalezionych katalogów** za pomocą **tej metody** oraz dla wszystkich katalogów **odkrytych** przez **Spidering** (można to zrobić brute-force'em **rekurencyjnie** i dodając na początku używanej listy słów nazwy znalezionych katalogów).\
Narzędzia:
* **Dirb** / **Dirbuster** - Zawarte w Kali, **stare** (i **wolne**), ale funkcjonalne. Pozwalają na używanie samopod
_Zauważ, że za każdym razem, gdy odkryjesz nowy katalog podczas ataku brute-force lub przeszukiwania, powinieneś go poddać atakowi brute-force._
### Co sprawdzić w każdym znalezionym pliku
* [**Sprawdzacz uszkodzonych linków**](https://github.com/stevenvachon/broken-link-checker): Znajdź uszkodzone linki wewnątrz plików HTML, które mogą być podatne na przejęcie
* **Kopie zapasowe plików**: Gdy już znajdziesz wszystkie pliki, poszukaj kopii zapasowych wszystkich plików wykonywalnych ("_.php_", "_.aspx_"...). Powszechne warianty nazw kopii zapasowych 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ędzi [**bfac**](https://github.com/mazen160/bfac) **lub** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.**
* **Odkrywanie nowych parametrów**: Możesz użyć narzędzi takich jak [**Arjun**](https://github.com/s0md3v/Arjun)**,** [**parameth**](https://github.com/maK-/parameth)**,** [**x8**](https://github.com/sh1yo/x8) **i** [**Param Miner**](https://github.com/PortSwigger/param-miner) **do odkrywania ukrytych parametrów. Jeśli możesz, spróbuj wyszukać** ukryte parametry w każdym wykonywalnym pliku internetowym.
* _Arjun wszystkie domyślne listy słów:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
* **Komentarze:** Sprawdź komentarze we wszystkich plikach, możesz znaleźć **dane uwierzytelniające** lub **ukrytą funkcjonalność**.
* Jeśli grasz w **CTF**, "powszechnym" trikiem jest **ukrycie informacji** wewnątrz komentarzy na **prawej** stronie **strony** (używając **setek** spacji, aby nie widzieć danych, jeśli otworzysz kod źródłowy w przeglądarce). Inna możliwość to użycie **kilku 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**](https://github.com/streaak/keyhacks)**,** [**zile**](https://github.com/xyele/zile.git)**,** [**truffleHog**](https://github.com/trufflesecurity/truffleHog)**,** [**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**,** [**RegHex**](https://github.com/l4yton/RegHex\)/)**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird)
* Klucze API Google: Jeśli znajdziesz jakikolwiek klucz API wyglądający jak **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjik, możesz użyć projektu [**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner), aby sprawdzić, do których interfejsów API klucz ma dostęp.
* **Kosze S3**: Podczas przeszukiwania zwróć uwagę, czy jakikolwiek **poddomena** lub **link** jest powiązany z jakimś **koszem S3**. W takim przypadku [**sprawdź uprawnienia** kosza](buckets/).
### Specjalne znaleziska
Podczas **przeszukiwania** i **ataku brute-force** możesz natrafić na **ciekawe rzeczy**, na które musisz zwrócić uwagę.
**Ciekawe pliki**
* Szukaj **linków** do innych plików wewnątrz plików **CSS**.
* [Jeśli znajdziesz plik _**.git**_, można z niego wyciągnąć pewne informacje](git.md)
* Jeśli znajdziesz plik _**.env**_, można w nim znaleźć informacje takie jak klucze API, hasła do baz danych i inne informacje.
* Jeśli znajdziesz **punkty końcowe API**, [również powinieneś je przetestować](web-api-pentesting.md). Nie są to pliki, ale prawdopodobnie będą na nie wyglądać.
* **Pliki JS**: W sekcji przeszukiwania wspomniano o kilku narzędziach, które mogą wyodrębnić ścieżki z plików JS. Ponadto, interesujące byłoby **monitorowanie każdego znalezionego pliku JS**, ponieważ w niektórych przypadkach zmiana może wskazywać na potencjalną podatność wprowadzoną w kodzie. Możesz na przykład użyć [**JSMon**](https://github.com/robre/jsmon)**.**
* Powinieneś również sprawdzić znalezione pliki JS za pomocą [**RetireJS**](https://github.com/retirejs/retire.js/) lub [**JSHole**](https://github.com/callforpapers-source/jshole), aby sprawdzić, czy są podatne.
* **Deobfuskator i rozpakowywacz JavaScript**: [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
* W wielu przypadkach będziesz musiał **zrozumieć wyrażenia regularne**, które są używane, to będzie przydatne: [https://regex101.com/](https://regex101.com)
* Możesz również **monitorować pliki, w których wykryto formularze**, ponieważ zmiana w parametrze
### Sprawdzanie podatności na stronach internetowych
Po przeprowadzeniu kompleksowego wyliczenia aplikacji internetowej nadszedł czas, aby sprawdzić wiele możliwych podatności. Możesz znaleźć listę kontrolną tutaj:
Możesz użyć narzędzi takich jak [https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io), aby monitorować strony pod kątem modyfikacji, które mogą wprowadzać podatności.
Description: Tailored Nmap Scan for web Vulnerabilities
Command: nmap -vv --reason -Pn -sV -p {Web_Port} --script=`banner,(http* or ssl*) and not (brute or broadcast or dos or external or http-slowloris* or fuzzer)` {IP}
**Wskazówka dotycząca nagrody za błąd**: **Zarejestruj się** na platformie **Intigriti**, premium platforma do nagradzania za błędy stworzona przez hakerów, dla hakerów! Dołącz do nas na [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) już dziś i zacznij zarabiać nagrody do **100 000 USD**!
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów github.