Linux Privilege Escalation
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Çalışan işletim sistemi hakkında bilgi edinmeye başlayalım.
Eğer PATH
değişkeni içindeki herhangi bir klasörde yazma izinleriniz varsa, bazı kütüphaneleri veya ikili dosyaları ele geçirebilirsiniz:
İlginç bilgiler, şifreler veya API anahtarları ortam değişkenlerinde mi?
Kernelle ilgili sürümü kontrol edin ve yetkileri artırmak için kullanılabilecek bir açık olup olmadığını kontrol edin.
İyi bir savunmasız çekirdek listesi ve bazı zaten derlenmiş istismarlar burada bulabilirsiniz: https://github.com/lucyoa/kernel-exploits ve exploitdb sploits. Bazı derlenmiş istismarlar bulabileceğiniz diğer siteler: https://github.com/bwbwbwbw/linux-exploit-binaries, https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack
O web sitesinden tüm savunmasız çekirdek sürümlerini çıkarmak için şunları yapabilirsiniz:
Kerneli açıklarını aramaya yardımcı olabilecek araçlar şunlardır:
linux-exploit-suggester.sh linux-exploit-suggester2.pl linuxprivchecker.py (kurban üzerinde çalıştırın, yalnızca 2.x çekirdekleri için açıkları kontrol eder)
Her zaman Google'da çekirdek sürümünü arayın, belki çekirdek sürümünüz bazı çekirdek açıklarında yazılıdır ve bu durumda bu açığın geçerli olduğundan emin olursunuz.
Linux Yetki Yükseltme - Linux Çekirdeği <= 3.19.0-73.8
Aşağıda görünen savunmasız sudo sürümlerine dayanmaktadır:
You can check if the sudo version is vulnerable using this grep. Sudo sürümünün savunmasız olup olmadığını bu grep ile kontrol edebilirsiniz.
@Sickrov'dan
Bu açığın nasıl istismar edilebileceğine dair bir örnek için HTB'nin smasher2 kutusunu kontrol edin
Eğer bir docker konteynerinin içindeyseniz, ondan kaçmayı deneyebilirsiniz:
Nelerin monte edildiğini ve monte edilmediğini, nerede ve neden kontrol edin. Eğer herhangi bir şey monte edilmemişse, onu monte etmeyi deneyebilir ve özel bilgileri kontrol edebilirsiniz.
Kullanışlı ikili dosyaları listele
Ayrıca, herhangi bir derleyicinin kurulu olup olmadığını kontrol edin. Bu, bazı çekirdek istismarlarını kullanmanız gerektiğinde faydalıdır çünkü bunları kullanacağınız makinede (veya benzer birinde) derlemeniz önerilir.
Yüklenmiş paketlerin ve hizmetlerin sürümünü kontrol edin. Belki de ayrıcalıkları artırmak için istismar edilebilecek eski bir Nagios sürümü vardır (örneğin)... Daha şüpheli yüklenmiş yazılımların sürümünü manuel olarak kontrol etmeniz önerilir.
Eğer makineye SSH erişiminiz varsa, makine içinde kurulu olan eski ve savunmasız yazılımları kontrol etmek için openVAS kullanabilirsiniz.
Bu komutların çoğunlukla işe yaramayacak çok fazla bilgi göstereceğini unutmayın, bu nedenle kurulu yazılım sürümlerinin bilinen açıklar için savunmasız olup olmadığını kontrol edecek OpenVAS veya benzeri bazı uygulamaların kullanılması önerilir.
Hangi süreçlerin çalıştığına bir göz atın ve herhangi bir sürecin gerektiğinden daha fazla ayrıcalığa sahip olup olmadığını kontrol edin (belki root tarafından çalıştırılan bir tomcat?).
Her zaman electron/cef/chromium debuggers'ın çalışıp çalışmadığını kontrol edin, bunu ayrıcalıkları artırmak için kötüye kullanabilirsiniz. Linpeas, sürecin komut satırında --inspect
parametresini kontrol ederek bunları tespit eder.
Ayrıca işlem iktidarları üzerindeki ayrıcalıklarınızı kontrol edin, belki birinin üzerine yazabilirsiniz.
pspy gibi araçları kullanarak işlemleri izleyebilirsiniz. Bu, sıkça yürütülen veya belirli bir gereksinim seti karşılandığında zayıf noktaları olan işlemleri tanımlamak için çok yararlı olabilir.
Bir sunucunun bazı hizmetleri şifreleri açık metin olarak bellekte saklar. Genellikle, diğer kullanıcılara ait süreçlerin belleğini okumak için root ayrıcalıkları gerekir, bu nedenle bu genellikle zaten root olduğunuzda ve daha fazla kimlik bilgisi keşfetmek istediğinizde daha faydalıdır. Ancak, normal bir kullanıcı olarak sahip olduğunuz süreçlerin belleğini okuyabileceğinizi unutmayın.
Günümüzde çoğu makinenin varsayılan olarak ptrace'a izin vermediğini unutmayın, bu da ayrıcalıksız kullanıcılarınıza ait diğer süreçleri dökemezsiniz anlamına gelir.
/proc/sys/kernel/yama/ptrace_scope dosyası ptrace erişimini kontrol eder:
kernel.yama.ptrace_scope = 0: tüm süreçler, aynı uid'ye sahip oldukları sürece hata ayıklanabilir. Bu, ptracing'in klasik çalışma şeklidir.
kernel.yama.ptrace_scope = 1: yalnızca bir ana süreç hata ayıklanabilir.
kernel.yama.ptrace_scope = 2: yalnızca yönetici ptrace kullanabilir, çünkü bu CAP_SYS_PTRACE yeteneğini gerektirir.
kernel.yama.ptrace_scope = 3: Hiçbir süreç ptrace ile izlenemez. Ayarlandıktan sonra, ptracing'i tekrar etkinleştirmek için bir yeniden başlatma gerekir.
Bir FTP hizmetinin belleğine erişiminiz varsa (örneğin) Heap'i alabilir ve içindeki kimlik bilgilerini arayabilirsiniz.
Verilen bir işlem kimliği için, maps o işlemin sanal adres alanında belleğin nasıl haritalandığını gösterir; ayrıca her haritalanmış bölgenin izinlerini de gösterir. mem sanal dosyası işlemin belleğini kendisini açığa çıkarır. maps dosyasından hangi bellek bölgelerinin okunabilir olduğunu ve bunların ofsetlerini biliyoruz. Bu bilgiyi kullanarak mem dosyasına erişip tüm okunabilir bölgeleri bir dosyaya döküyoruz.
/dev/mem
, sistemin fiziksel belleğine erişim sağlar, sanal belleğe değil. Çekirdeklerin sanal adres alanına /dev/kmem kullanarak erişilebilir.
Genellikle, /dev/mem
yalnızca root ve kmem grubu tarafından okunabilir.
ProcDump, Windows için Sysinternals araç setinin klasik ProcDump aracının Linux'taki yeniden tasarımıdır. Bunu https://github.com/Sysinternals/ProcDump-for-Linux adresinden edinebilirsiniz.
Bir işlem belleğini dökmek için şunları kullanabilirsiniz:
https://github.com/hajzer/bash-memory-dump (root) - _Root gereksinimlerini manuel olarak kaldırabilir ve sizin sahip olduğunuz işlemi dökebilirsiniz
https://www.delaat.net/rp/2016-2017/p97/report.pdf adresinden Script A.5 (root gereklidir)
Eğer doğrulayıcı işlemin çalıştığını bulursanız:
Süreci dökebilirsiniz (bir sürecin belleğini dökmenin farklı yollarını bulmak için önceki bölümlere bakın) ve bellekte kimlik bilgilerini arayabilirsiniz:
Araç https://github.com/huntergregal/mimipenguin bellekten açık metin kimlik bilgilerini çalacak ve bazı iyi bilinen dosyalardan alacaktır. Doğru çalışması için root ayrıcalıkları gereklidir.
GDM şifresi (Kali Masaüstü, Debian Masaüstü)
gdm-password
Gnome Anahtar Zinciri (Ubuntu Masaüstü, ArchLinux Masaüstü)
gnome-keyring-daemon
LightDM (Ubuntu Masaüstü)
lightdm
VSFTPd (Aktif FTP Bağlantıları)
vsftpd
Apache2 (Aktif HTTP Temel Kimlik Doğrulama Oturumları)
apache2
OpenSSH (Aktif SSH Oturumları - Sudo Kullanımı)
sshd:
Herhangi bir zamanlanmış işin savunmasız olup olmadığını kontrol edin. Belki de root tarafından yürütülen bir scriptten faydalanabilirsiniz (joker karakter açığı mı? root'un kullandığı dosyaları değiştirebilir mi? sembolik bağlantılar kullanabilir mi? root'un kullandığı dizinde belirli dosyalar oluşturabilir mi?).
Örneğin, /etc/crontab içinde PATH'ı bulabilirsiniz: PATH=/home/user:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
(Kullanıcı "user"ın /home/user üzerinde yazma ayrıcalıklarına sahip olduğunu not edin)
Eğer bu crontab içinde root kullanıcısı yolu ayarlamadan bazı komut veya betikler çalıştırmaya çalışırsa. Örneğin: * * * * root overwrite.sh O zaman, şunu kullanarak bir root shell elde edebilirsiniz:
Eğer root tarafından yürütülen bir script bir komutun içinde “*” içeriyorsa, bunu beklenmedik şeyler yapmak için kullanabilirsiniz (örneğin privesc). Örnek:
Eğer joker karakter bir yol ile önceden geliyorsa /some/path/* , bu savunmasız değildir (hatta ./* de değildir).
Aşağıdaki sayfayı daha fazla joker karakter istismar hilesi için okuyun:
Eğer root tarafından yürütülen bir cron scriptini değiştirebiliyorsanız, çok kolay bir şekilde bir shell alabilirsiniz:
Eğer root tarafından yürütülen script, tam erişiminizin olduğu bir dizin kullanıyorsa, belki de o klasörü silmek ve kontrolünüzdeki bir script'i hizmet eden başka birine symlink klasörü oluşturmak faydalı olabilir.
Her 1, 2 veya 5 dakikada bir yürütülen süreçleri aramak için süreçleri izleyebilirsiniz. Belki bundan faydalanabilir ve ayrıcalıkları artırabilirsiniz.
Örneğin, 1 dakika boyunca her 0.1 saniyede bir izlemek, daha az yürütülen komutlara göre sıralamak ve en çok yürütülen komutları silmek için şunu yapabilirsiniz:
Ayrıca pspy kullanabilirsiniz (bu, başlayan her süreci izler ve listeler).
Bir yorumdan sonra bir satır sonu karakteri olmadan bir taşıyıcı dönüş koyarak bir cron işi oluşturmak mümkündür ve cron işi çalışacaktır. Örnek (taşıyıcı dönüş karakterine dikkat edin):
Herhangi bir .service
dosyasını yazıp yazamayacağınızı kontrol edin, eğer yazabiliyorsanız, onu değiştirebilir ve hizmet başlatıldığında, yeniden başlatıldığında veya durdurulduğunda arka kapınızı çalıştıracak şekilde ayarlar (belki makinenin yeniden başlatılmasını beklemeniz gerekecek).
Örneğin, arka kapınızı .service dosyasının içinde ExecStart=/tmp/script.sh
ile oluşturun.
Eğer hizmetler tarafından yürütülen ikili dosyalar üzerinde yazma izinleriniz varsa, bunları arka kapılar için değiştirebileceğinizi unutmayın, böylece hizmetler yeniden yürütüldüğünde arka kapılar çalıştırılacaktır.
systemd tarafından kullanılan PATH'i görebilirsiniz:
Eğer yolun herhangi bir klasöründe yazma yetkiniz olduğunu bulursanız, yetkileri artırma işlemi yapabilirsiniz. Hizmet yapılandırma dosyalarında kullanılan göreli yolları aramanız gerekiyor, örneğin:
Sonra, yazabileceğiniz systemd PATH klasörü içinde **göreli yol ikili dosyasıyla aynı isme sahip bir çalıştırılabilir dosya oluşturun ve hizmet, savunmasız eylemi (Başlat, Durdur, Yenile) gerçekleştirmesi istendiğinde, arka kapınız çalıştırılacaktır (yetkisiz kullanıcılar genellikle hizmetleri başlatamaz/durduramaz, ancak sudo -l
kullanıp kullanamayacağınızı kontrol edin).
Hizmetler hakkında daha fazla bilgi için man systemd.service
komutunu öğrenin.
Zamanlayıcılar, **.service**
dosyalarını veya olayları kontrol eden **.timer**
ile biten systemd birim dosyalarıdır. Zamanlayıcılar, takvim zamanı olayları ve monotonik zaman olayları için yerleşik destekleri olduğundan, cron'a alternatif olarak kullanılabilir ve asenkron olarak çalıştırılabilirler.
Tüm zamanlayıcıları şu şekilde listeleyebilirsiniz:
Eğer bir zamanlayıcıyı değiştirebiliyorsanız, onu bazı systemd.unit varlıklarını (örneğin bir .service
veya bir .target
) çalıştıracak şekilde ayarlayabilirsiniz.
Belgede, Birimin ne olduğunu okuyabilirsiniz:
Bu zamanlayıcı süresi dolduğunda etkinleştirilecek birim. Argüman, ".timer" ile bitmeyen bir birim adıdır. Belirtilmezse, bu değer, zamanlayıcı birimi ile aynı ada sahip bir hizmete varsayılan olarak ayarlanır, yalnızca sonek hariç. (Yukarıya bakın.) Etkinleştirilen birim adı ile zamanlayıcı birimi adı, sonek hariç aynı şekilde adlandırılması önerilir.
Bu nedenle, bu izni kötüye kullanmak için şunları yapmanız gerekir:
yazılabilir bir ikili dosya çalıştıran bir sistemd birimi (örneğin bir .service
) bulun
göreli bir yolu çalıştıran bir sistemd birimi bulun ve sistemd YOLU üzerinde yazma ayrıcalıklarınız olsun (o yürütülebilir dosyayı taklit etmek için)
Zamanlayıcılar hakkında daha fazla bilgi edinin man systemd.timer
.
Bir zamanlayıcıyı etkinleştirmek için root ayrıcalıklarına sahip olmanız ve şunu çalıştırmanız gerekir:
Not edin ki zamanlayıcı, /etc/systemd/system/<WantedBy_section>.wants/<name>.timer
üzerinde ona bir symlink oluşturarak etkinleştirilir.
Unix Domain Sockets (UDS), işlem iletişimi için aynı veya farklı makinelerde istemci-sunucu modelleri içinde olanak tanır. Bilgisayarlar arası iletişim için standart Unix tanımlayıcı dosyalarını kullanır ve .socket
dosyaları aracılığıyla yapılandırılır.
Soketler, .socket
dosyaları kullanılarak yapılandırılabilir.
Soketler hakkında daha fazla bilgi için man systemd.socket
komutunu öğrenin. Bu dosya içinde, birkaç ilginç parametre yapılandırılabilir:
ListenStream
, ListenDatagram
, ListenSequentialPacket
, ListenFIFO
, ListenSpecial
, ListenNetlink
, ListenMessageQueue
, ListenUSBFunction
: Bu seçenekler farklıdır ancak bir özet, soketin nerede dinleyeceğini belirtmek için kullanılır (AF_UNIX soket dosyasının yolu, dinlenecek IPv4/6 ve/veya port numarası vb.)
Accept
: Bir boolean argümanı alır. Eğer doğruysa, her gelen bağlantı için bir hizmet örneği oluşturulur ve yalnızca bağlantı soketi ona iletilir. Eğer yanlışsa, tüm dinleme soketleri başlatılan hizmet birimine iletilir ve tüm bağlantılar için yalnızca bir hizmet birimi oluşturulur. Bu değer, tek bir hizmet biriminin koşulsuz olarak tüm gelen trafiği işlediği datagram soketleri ve FIFOs için göz ardı edilir. Varsayılan olarak yanlıştır. Performans nedenleriyle, yeni daemonların yalnızca Accept=no
için uygun bir şekilde yazılması önerilir.
ExecStartPre
, ExecStartPost
: Dinleme soketleri/FIFOs oluşturulmadan önce veya sonra çalıştırılan bir veya daha fazla komut satırı alır. Komut satırının ilk token'ı mutlak bir dosya adı olmalı, ardından işlem için argümanlar gelmelidir.
ExecStopPre
, ExecStopPost
: Dinleme soketleri/FIFOs kapandıktan önce veya sonra çalıştırılan ek komutlar.
Service
: Gelen trafik üzerinde etkinleştirilecek hizmet birimi adını belirtir. Bu ayar yalnızca Accept=no olan soketler için geçerlidir. Varsayılan olarak, soketle aynı adı taşıyan hizmete (ek ile değiştirilmiş) ayarlanır. Çoğu durumda, bu seçeneği kullanmak gerekli olmamalıdır.
Eğer yazılabilir bir .socket
dosyası bulursanız, [Socket]
bölümünün başına şunu ekleyebilirsiniz: ExecStartPre=/home/kali/sys/backdoor
ve arka kapı, soket oluşturulmadan önce çalıştırılacaktır. Bu nedenle, muhtemelen makinenin yeniden başlatılmasını beklemeniz gerekecek.
&#xNAN;Note edin ki sistem, o soket dosyası yapılandırmasını kullanıyor olmalıdır yoksa arka kapı çalıştırılmayacaktır
Eğer herhangi bir yazılabilir soket tespit ederseniz (şimdi Unix Soketleri hakkında konuşuyoruz ve yapılandırma .socket
dosyaları hakkında değiliz), o zaman bu soketle iletişim kurabilirsiniz ve belki bir açığı istismar edebilirsiniz.
Sömürü örneği:
HTTP istekleri için dinleyen bazı soketlerin olabileceğini unutmayın (.socket dosyalarından değil, unix soketleri olarak işlev gören dosyalardan bahsediyorum). Bunu kontrol etmek için:
Eğer soket HTTP isteği ile yanıt veriyorsa, o zaman onunla iletişim kurabilir ve belki de bazı zayıflıkları istismar edebilirsiniz.
Docker soketi, genellikle /var/run/docker.sock
konumunda bulunan, güvenliği sağlanması gereken kritik bir dosyadır. Varsayılan olarak, root
kullanıcısı ve docker
grubunun üyeleri tarafından yazılabilir. Bu sokete yazma erişimine sahip olmak, ayrıcalık yükselmesine yol açabilir. Bunun nasıl yapılacağına dair bir inceleme ve Docker CLI mevcut değilse alternatif yöntemler.
Eğer Docker soketine yazma erişiminiz varsa, aşağıdaki komutları kullanarak ayrıcalıkları yükseltebilirsiniz:
Bu komutlar, ana bilgisayarın dosya sistemine kök düzeyinde erişimle bir konteyner çalıştırmanıza olanak tanır.
Docker CLI mevcut olmadığında, Docker soketi hala Docker API ve curl
komutları kullanılarak manipüle edilebilir.
Docker Görüntülerini Listele: Mevcut görüntülerin listesini alın.
Bir Konteyner Oluştur: Ana sistemin kök dizinini bağlayan bir konteyner oluşturmak için bir istek gönderin.
Yeni oluşturulan konteyneri başlatın:
Konteynere Bağlan: Komutların içinde çalıştırılabilmesi için konteynere bir bağlantı kurmak üzere socat
kullanın.
socat
bağlantısını kurduktan sonra, ana bilgisayarın dosya sistemine kök düzeyinde erişimle komutları doğrudan konteyner içinde çalıştırabilirsiniz.
Eğer docker
grubunun içindeyseniz ve docker soketi üzerinde yazma izinleriniz varsa, yetki yükseltmek için daha fazla yolunuz vardır. Eğer docker API bir portta dinliyorsa, onu tehlikeye atma imkanınız da olabilir.
Docker'dan çıkmanın veya onu kötüye kullanarak yetki yükseltmenin daha fazla yolunu kontrol edin:
Eğer ctr
komutunu kullanabileceğinizi bulursanız, yetki yükseltmek için bunu kötüye kullanabileceğinizden dolayı aşağıdaki sayfayı okuyun:
Eğer runc
komutunu kullanabileceğinizi bulursanız, yetki yükseltmek için bunu kötüye kullanabileceğinizden dolayı aşağıdaki sayfayı okuyun:
D-Bus, uygulamaların verimli bir şekilde etkileşimde bulunmasını ve veri paylaşmasını sağlayan karmaşık bir İşlem Arası İletişim (IPC) sistemidir. Modern Linux sistemini göz önünde bulundurarak tasarlanmış olup, farklı uygulama iletişim biçimleri için sağlam bir çerçeve sunar.
Sistem, süreçler arasında veri alışverişini artıran temel IPC'yi destekleyerek gelişmiş UNIX alan soketlerini andıran bir yapıdadır. Ayrıca, sistem bileşenleri arasında sorunsuz entegrasyonu teşvik eden olayları veya sinyalleri yayınlamaya yardımcı olur. Örneğin, bir Bluetooth daemon'undan gelen bir çağrı sinyali, bir müzik çalarının sessize geçmesini sağlayarak kullanıcı deneyimini artırabilir. Ayrıca, D-Bus, uygulamalar arasında hizmet taleplerini ve yöntem çağrılarını basitleştiren bir uzak nesne sistemi destekler ve geleneksel olarak karmaşık olan süreçleri kolaylaştırır.
D-Bus, mesaj izinlerini (metot çağrıları, sinyal yayma vb.) toplu olarak eşleşen politika kurallarının etkisine göre yöneten bir izin/verme modeli üzerinde çalışır. Bu politikalar, otobüsle etkileşimleri belirler ve bu izinlerin istismar edilmesi yoluyla yetki yükseltmeye olanak tanıyabilir.
/etc/dbus-1/system.d/wpa_supplicant.conf
dosyasında, root kullanıcısının fi.w1.wpa_supplicant1
'e mesaj göndermesi, alması ve sahip olması için izinleri detaylandıran bir politika örneği sağlanmıştır.
Belirtilmiş bir kullanıcı veya grup içermeyen politikalar evrensel olarak uygulanırken, "varsayılan" bağlam politikaları, diğer belirli politikalarla kapsanmayan tüm durumlara uygulanır.
D-Bus iletişimini nasıl listeleyeceğinizi ve istismar edeceğinizi burada öğrenin:
Ağı listelemek ve makinenin konumunu belirlemek her zaman ilginçtir.
Erişim sağlamadan önce etkileşimde bulunamadığınız makinede çalışan ağ hizmetlerini her zaman kontrol edin:
Trafiği koklayıp koklayamayacağınızı kontrol edin. Eğer koklayabiliyorsanız, bazı kimlik bilgilerini yakalayabilirsiniz.
Kim olduğunuzu, hangi yetkilere sahip olduğunuzu, sistemlerde hangi kullanıcıların bulunduğunu, hangilerinin giriş yapabileceğini ve hangilerinin root yetkilerine sahip olduğunu kontrol edin:
Bazı Linux sürümleri, UID > INT_MAX olan kullanıcıların ayrıcalıkları artırmasına izin veren bir hatadan etkilenmiştir. Daha fazla bilgi: burada, burada ve burada.
Bunu kullanarak istismar et: systemd-run -t /bin/bash
Kök ayrıcalıkları verebilecek bir grubun üyesi olup olmadığınızı kontrol edin:
Pano içinde ilginç bir şey olup olmadığını kontrol edin (mümkünse)
Eğer ortamın herhangi bir şifresini biliyorsanız, her kullanıcı için şifreyi kullanarak giriş yapmayı deneyin.
Eğer çok fazla gürültü yapmaktan rahatsız değilseniz ve su
ile timeout
ikili dosyaları bilgisayarda mevcutsa, kullanıcıyı su-bruteforce kullanarak brute-force ile denemeyi deneyebilirsiniz.
Linpeas -a
parametresi ile kullanıcıları brute-force ile denemeye çalışır.
Eğer $PATH'in bazı klasörlerine yazabileceğinizi bulursanız, yazılabilir klasörde farklı bir kullanıcı (ideali root) tarafından çalıştırılacak bir komutun adıyla bir arka kapı oluşturarak ayrıcalıkları yükseltebilirsiniz ve bu komut yazılabilir klasörünüzden önceki bir klasörden yüklenmemelidir.
Sudo kullanarak bazı komutları çalıştırmanıza izin verilebilir veya suid biti olabilir. Bunu kontrol etmek için:
Bazı beklenmedik komutlar, dosyaları okumanıza ve/veya yazmanıza veya hatta bir komut çalıştırmanıza olanak tanır. Örneğin:
Sudo yapılandırması, bir kullanıcının başka bir kullanıcının ayrıcalıklarıyla bazı komutları şifreyi bilmeden çalıştırmasına izin verebilir.
Bu örnekte demo
kullanıcısı vim
'i root
olarak çalıştırabilir, artık bir ssh anahtarı ekleyerek veya sh
çağırarak bir shell almak çok basit.
Bu yönerge, kullanıcının bir şeyi yürütürken bir ortam değişkeni ayarlamasına olanak tanır:
Bu örnek, HTB makinesi Admirer üzerine PYTHONPATH kaçırma ile bir python kütüphanesini yüklemek için kök olarak scripti çalıştırırken açık idi:
Diğer dosyaları okumak veya sembolik bağlantılar kullanmak için atlayın. Örneğin sudoers dosyasında: hacker10 ALL= (root) /bin/less /var/log/*
Eğer bir wildcard kullanılıyorsa (*), bu daha da kolaydır:
Karşı Önlemler: https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/
Eğer sudo izni tek bir komuta yol belirtilmeden verilmişse: hacker10 ALL= (root) less bunu PATH değişkenini değiştirerek istismar edebilirsiniz.
Bu teknik, bir suid ikili dosyası yolu belirtmeden başka bir komut çalıştırıyorsa da kullanılabilir (her zaman garip bir SUID ikili dosyasının içeriğini kontrol etmek için strings kullanın).
Eğer suid ikili dosyası yolu belirterek başka bir komut çalıştırıyorsa, o zaman, suid dosyasının çağırdığı komutla aynı adı taşıyan bir fonksiyonu dışa aktarmayı deneyebilirsiniz.
Örneğin, eğer bir suid ikili dosyası /usr/sbin/service apache2 start çağrıyorsa, fonksiyonu oluşturmayı ve dışa aktarmayı denemelisiniz:
Sonra, suid ikili dosyasını çağırdığınızda, bu fonksiyon çalıştırılacaktır.
LD_PRELOAD ortam değişkeni, yükleyici tarafından diğer tüm kütüphanelerden önce yüklenmesi gereken bir veya daha fazla paylaşılan kütüphaneyi (.so dosyaları) belirtmek için kullanılır. Bu işlem, bir kütüphanenin ön yüklenmesi olarak bilinir.
Ancak, sistem güvenliğini korumak ve bu özelliğin kötüye kullanılmasını önlemek için, özellikle suid/sgid yürütülebilir dosyalarla ilgili olarak, sistem belirli koşulları zorunlu kılar:
Yükleyici, gerçek kullanıcı kimliği (ruid) etkili kullanıcı kimliği (euid) ile eşleşmeyen yürütülebilir dosyalar için LD_PRELOAD'u dikkate almaz.
SUID/SGID olan yürütülebilir dosyalar için, yalnızca standart yollardaki ve aynı zamanda suid/sgid olan kütüphaneler ön yüklenir.
Yetki yükseltme, sudo
ile komutları çalıştırma yeteneğiniz varsa ve sudo -l
çıktısı env_keep+=LD_PRELOAD ifadesini içeriyorsa gerçekleşebilir. Bu yapılandırma, LD_PRELOAD ortam değişkeninin kalıcı olmasını ve sudo
ile komutlar çalıştırıldığında tanınmasını sağlar, bu da potansiyel olarak yükseltilmiş ayrıcalıklarla rastgele kodun çalıştırılmasına yol açabilir.
/tmp/pe.c olarak kaydedin
Sonra derleyin:
Sonunda, yetkileri yükseltin çalıştırarak
Benzer bir privesc, saldırgan LD_LIBRARY_PATH ortam değişkenini kontrol ediyorsa kötüye kullanılabilir çünkü kütüphanelerin aranacağı yolu kontrol eder.
SUID izinlerine sahip ve alışılmadık görünen bir ikili dosya ile karşılaşıldığında, .so dosyalarını düzgün bir şekilde yükleyip yüklemediğini kontrol etmek iyi bir uygulamadır. Bu, aşağıdaki komut çalıştırılarak kontrol edilebilir:
Örneğin, "open(“/path/to/.config/libcalc.so”, O_RDONLY) = -1 ENOENT (Böyle bir dosya veya dizin yok)" gibi bir hata ile karşılaşmak, bir istismar potansiyelini önerir.
Bunu istismar etmek için, "/path/to/.config/libcalc.c" adında bir C dosyası oluşturulup aşağıdaki kodu içermelidir:
Bu kod, derlendikten ve çalıştırıldıktan sonra, dosya izinlerini manipüle ederek ve yükseltilmiş ayrıcalıklarla bir shell çalıştırarak ayrıcalıkları artırmayı amaçlamaktadır.
Yukarıdaki C dosyasını bir paylaşılan nesne (.so) dosyasına derlemek için:
Son olarak, etkilenen SUID ikili dosyasının çalıştırılması, potansiyel sistem tehlikesine yol açacak şekilde istismarı tetiklemelidir.
Artık yazabileceğimiz bir klasörden bir kütüphane yükleyen bir SUID ikili dosyası bulduğumuza göre, o klasörde gerekli isimle kütüphaneyi oluşturalım:
Eğer şu hatayı alırsanız
bu, oluşturduğunuz kütüphanenin a_function_name
adında bir fonksiyona sahip olması gerektiği anlamına gelir.
GTFOBins, bir saldırganın yerel güvenlik kısıtlamalarını aşmak için istismar edebileceği Unix ikili dosyalarının derlenmiş bir listesidir. GTFOArgs ise yalnızca bir komutta argümanları enjekte edebileceğiniz durumlar için aynıdır.
Proje, kısıtlı shell'lerden çıkmak, ayrıcalıkları yükseltmek veya sürdürmek, dosya transferi yapmak, bind ve reverse shell'ler oluşturmak ve diğer sonrası istismar görevlerini kolaylaştırmak için kötüye kullanılabilecek Unix ikili dosyalarının meşru işlevlerini toplar.
gdb -nx -ex '!sh' -ex quit sudo mysql -e '! /bin/sh' strace -o /dev/null /bin/sh sudo awk 'BEGIN {system("/bin/sh")}'
Eğer sudo -l
erişiminiz varsa, herhangi bir sudo kuralını istismar etmenin yolunu bulup bulmadığını kontrol etmek için FallOfSudo aracını kullanabilirsiniz.
Eğer sudo erişiminiz varsa ama şifreniz yoksa, bir sudo komutunun yürütülmesini bekleyerek ve ardından oturum token'ını ele geçirerek ayrıcalıkları yükseltebilirsiniz.
Ayrıcalıkları yükseltmek için gereksinimler:
Zaten "sampleuser" kullanıcısı olarak bir shell'e sahipsiniz
"sampleuser" son 15 dakikada bir şeyi yürütmek için sudo
kullanmış (varsayılan olarak bu, sudo
'yu herhangi bir şifre girmeden kullanmamıza izin veren sudo token'ının süresidir)
cat /proc/sys/kernel/yama/ptrace_scope
0
gdb
erişilebilir (yükleyebilmeniz gerekir)
(ptrace_scope
'u geçici olarak echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
ile etkinleştirebilir veya /etc/sysctl.d/10-ptrace.conf
dosyasını kalıcı olarak değiştirip kernel.yama.ptrace_scope = 0
ayarını yapabilirsiniz)
Tüm bu gereksinimler karşılandığında, şu şekilde ayrıcalıkları yükseltebilirsiniz: https://github.com/nongiach/sudo_inject
ilk istismar (exploit.sh
), /tmp dizininde activate_sudo_token
adlı ikili dosyayı oluşturacaktır. Bunu oturumunuzda sudo token'ını etkinleştirmek için kullanabilirsiniz (otomatik olarak bir root shell almayacaksınız, sudo su
yapın):
İkinci sömürü (exploit_v2.sh
), /tmp içinde root tarafından setuid ile sahip olunan bir sh shell oluşturacaktır.
Üçüncü exploit (exploit_v3.sh
), sudo tokenlerini sonsuz hale getiren ve tüm kullanıcıların sudo kullanmasına izin veren bir sudoers dosyası oluşturacaktır.
Eğer klasörde veya klasör içindeki oluşturulan dosyalardan herhangi birinde yazma izinleriniz varsa, bir kullanıcı ve PID için sudo token oluşturmak üzere write_sudo_token ikili dosyasını kullanabilirsiniz. Örneğin, /var/run/sudo/ts/sampleuser dosyasını üzerine yazabiliyorsanız ve o kullanıcı olarak PID 1234 ile bir shell'e sahipseniz, şifreyi bilmeden sudo ayrıcalıkları elde edebilirsiniz:
Dosya /etc/sudoers
ve /etc/sudoers.d
içindeki dosyalar, kimin sudo
kullanabileceğini ve nasıl kullanılacağını yapılandırır. Bu dosyalar varsayılan olarak yalnızca root kullanıcısı ve root grubunun okuyabileceği şekilde ayarlanmıştır.
Eğer bu dosyayı okuyabiliyorsanız, ilginç bilgiler elde edebilirsiniz ve eğer herhangi bir dosyayı yazabiliyorsanız, yetkileri yükseltebilirsiniz.
Eğer yazabiliyorsanız, bu izni kötüye kullanabilirsiniz.
Bu izinleri kötüye kullanmanın bir başka yolu:
sudo
ikili dosyasına alternatif olarak OpenBSD için doas
gibi bazı seçenekler vardır, yapılandırmasını /etc/doas.conf
dosyasında kontrol etmeyi unutmayın.
Eğer bir kullanıcının genellikle bir makineye bağlandığını ve sudo
kullanarak ayrıcalıkları yükselttiğini biliyorsanız ve o kullanıcı bağlamında bir shell elde ettiyseniz, root olarak kodunuzu çalıştıracak ve ardından kullanıcının komutunu yürütecek yeni bir sudo çalıştırılabilir dosyası oluşturabilirsiniz. Sonra, kullanıcı bağlamının $PATH'ini değiştirin (örneğin, .bash_profile'a yeni yolu ekleyerek) böylece kullanıcı sudo'yu çalıştırdığında, sizin sudo çalıştırılabilir dosyanız çalıştırılır.
Kullanıcının farklı bir shell (bash değil) kullanması durumunda, yeni yolu eklemek için diğer dosyaları da değiştirmeniz gerekecektir. Örneğin, sudo-piggyback ~/.bashrc
, ~/.zshrc
, ~/.bash_profile
dosyalarını değiştirir. Başka bir örneği bashdoor.py içinde bulabilirsiniz.
Ya da şöyle bir şey çalıştırarak:
Dosya /etc/ld.so.conf
yüklenen yapılandırma dosyalarının nereden geldiğini gösterir. Genellikle, bu dosya aşağıdaki yolu içerir: include /etc/ld.so.conf.d/*.conf
Bu, /etc/ld.so.conf.d/*.conf
içindeki yapılandırma dosyalarının okunacağı anlamına gelir. Bu yapılandırma dosyaları diğer klasörlere işaret eder ve kütüphanelerin arama yapılacağı yerlerdir. Örneğin, /etc/ld.so.conf.d/libc.conf
dosyasının içeriği /usr/local/lib
'dir. Bu, sistemin /usr/local/lib
içinde kütüphaneleri arayacağı anlamına gelir.
Herhangi bir nedenle bir kullanıcının yazma izinleri varsa, belirtilen yollardan herhangi birinde: /etc/ld.so.conf
, /etc/ld.so.conf.d/
, /etc/ld.so.conf.d/
içindeki herhangi bir dosya veya /etc/ld.so.conf.d/*.conf
içindeki yapılandırma dosyası içindeki herhangi bir klasör, ayrıcalıkları yükseltebilir.
Aşağıdaki sayfada bu yanlış yapılandırmayı nasıl istismar edeceğinize bir göz atın:
lib
'i /var/tmp/flag15/
içine kopyalayarak, RPATH
değişkeninde belirtilen bu yerde program tarafından kullanılacaktır.
Sonra /var/tmp
içinde gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6
ile kötü bir kütüphane oluşturun.
Linux yetenekleri, bir işleme mevcut root ayrıcalıklarının bir alt kümesini sağlar. Bu, root ayrıcalıklarını daha küçük ve belirgin birimlere ayırır. Bu birimlerin her biri, işlemlere bağımsız olarak verilebilir. Bu şekilde, ayrıcalıkların tam seti azaltılır ve istismar riskleri düşer. Yetenekler hakkında daha fazla bilgi edinmek ve bunları nasıl kötüye kullanacağınızı öğrenmek için aşağıdaki sayfayı okuyun:
Bir dizinde, "çalıştır" biti, etkilenen kullanıcının dizine "cd" yapabileceğini belirtir. "okuma" biti, kullanıcının dosyaları listeleyebileceğini, "yazma" biti ise kullanıcının dosyaları silip yeni dosyalar oluşturabileceğini belirtir.
Erişim Kontrol Listeleri (ACL'ler), geleneksel ugo/rwx izinlerini geçersiz kılabilen isteğe bağlı izinlerin ikinci katmanını temsil eder. Bu izinler, dosya veya dizin erişimi üzerinde kontrolü artırarak, sahip olmayan veya grup üyesi olmayan belirli kullanıcılara haklar vererek veya reddederek daha fazla kontrol sağlar. Bu düzeydeki ince ayrıntı, daha hassas erişim yönetimi sağlar. Daha fazla ayrıntı burada bulunabilir.
kali kullanıcısına bir dosya üzerinde okuma ve yazma izinleri verin:
Belirli ACL'lere sahip dosyaları sistemden alın:
Eski sürümlerde farklı bir kullanıcının (root) bazı shell oturumlarını ele geçirebilirsiniz. En yeni sürümlerde yalnızca kendi kullanıcınıza ait ekran oturumlarına bağlanabileceksiniz. Ancak, oturum içinde ilginç bilgiler bulabilirsiniz.
Ekran oturumlarını listele
Bir oturuma bağlan
Bu, eski tmux sürümleriyle ilgili bir sorundu. Bir ayrıcalıksız kullanıcı olarak root tarafından oluşturulan bir tmux (v2.1) oturumunu ele geçiremedim.
tmux oturumlarını listele
Bir oturuma bağlan
Check Valentine box from HTB for an example.
Eylül 2006 ile 13 Mayıs 2008 arasında Debian tabanlı sistemlerde (Ubuntu, Kubuntu, vb.) oluşturulan tüm SSL ve SSH anahtarları bu hatadan etkilenebilir. Bu hata, bu işletim sistemlerinde yeni bir ssh anahtarı oluşturulurken meydana gelir, çünkü yalnızca 32,768 varyasyon mümkündü. Bu, tüm olasılıkların hesaplanabileceği anlamına gelir ve ssh genel anahtarına sahip olduğunuzda, karşılık gelen özel anahtarı arayabilirsiniz. Hesaplanan olasılıkları burada bulabilirsiniz: https://github.com/g0tmi1k/debian-ssh
PasswordAuthentication: Parola kimlik doğrulamasının izin verilip verilmediğini belirtir. Varsayılan no
'dur.
PubkeyAuthentication: Genel anahtar kimlik doğrulamasının izin verilip verilmediğini belirtir. Varsayılan yes
'dir.
PermitEmptyPasswords: Parola kimlik doğrulamasına izin verildiğinde, sunucunun boş parola dizelerine sahip hesaplara girişe izin verip vermediğini belirtir. Varsayılan no
'dur.
Root'un ssh kullanarak giriş yapıp yapamayacağını belirtir, varsayılan no
'dur. Olası değerler:
yes
: root parola ve özel anahtar kullanarak giriş yapabilir
without-password
veya prohibit-password
: root yalnızca özel anahtar ile giriş yapabilir
forced-commands-only
: Root yalnızca özel anahtar kullanarak ve komut seçenekleri belirtilmişse giriş yapabilir
no
: hayır
Kullanıcı kimlik doğrulaması için kullanılabilecek genel anahtarları içeren dosyaları belirtir. %h
gibi token'lar içerebilir, bu da ev dizini ile değiştirilir. Kesin yolları belirtebilirsiniz ( /
ile başlayan) veya kullanıcının evinden göreli yollar belirtebilirsiniz. Örneğin:
Bu yapılandırma, "testusername" kullanıcısının özel anahtarıyla giriş yapmaya çalıştığınızda, ssh'nın anahtarınızdaki genel anahtarı /home/testusername/.ssh/authorized_keys
ve /home/testusername/access
konumlarındaki anahtarlarla karşılaştıracağını gösterecektir.
SSH ajan yönlendirmesi, şifre olmadan anahtarların sunucunuzda kalması yerine yerel SSH anahtarlarınızı kullanmanıza olanak tanır. Böylece, ssh ile bir ana bilgisayara atlayabilir ve oradan başka bir ana bilgisayara atlayabilirsiniz ilk ana bilgisayarınızdaki anahtarı kullanarak.
Bu seçeneği $HOME/.ssh.config
dosyasında şu şekilde ayarlamanız gerekir:
Dikkat edin ki, eğer Host
*
ise, kullanıcı farklı bir makineye geçtiğinde, o makine anahtarları erişebilecektir (bu bir güvenlik sorunudur).
Dosya /etc/ssh_config
bu seçenekleri geçersiz kılabilir ve bu yapılandırmayı izin verebilir veya reddedebilir.
Dosya /etc/sshd_config
AllowAgentForwarding
anahtar kelimesi ile ssh-agent yönlendirmesine izin verebilir veya reddedebilir (varsayılan izin ver).
Eğer Forward Agent'ın bir ortamda yapılandırıldığını bulursanız, yetkileri artırmak için bunu kötüye kullanabileceğinizden dolayı aşağıdaki sayfayı okuyun:
Dosya /etc/profile
ve /etc/profile.d/
altındaki dosyalar, bir kullanıcı yeni bir shell çalıştırdığında yürütülen betiklerdir. Bu nedenle, eğer bunlardan herhangi birini yazabilir veya değiştirebilirseniz, yetkileri artırabilirsiniz.
Eğer herhangi bir garip profil betiği bulunursa, hassas detaylar için kontrol etmelisiniz.
İşletim sistemine bağlı olarak, /etc/passwd
ve /etc/shadow
dosyaları farklı bir isim kullanıyor olabilir veya bir yedeği olabilir. Bu nedenle, hepsini bulmanız ve okuyup okuyamayacağınızı kontrol etmeniz önerilir; dosyaların içinde hash'ler olup olmadığını görmek için:
Bazı durumlarda şifre karma değerlerini /etc/passwd
(veya eşdeğeri) dosyası içinde bulabilirsiniz.
Öncelikle, aşağıdaki komutlardan biriyle bir şifre oluşturun.
Sonra hacker
kullanıcısını ekleyin ve oluşturulan şifreyi ekleyin.
Örnek: hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0:Hacker:/root:/bin/bash
Artık su
komutunu hacker:hacker
ile kullanabilirsiniz.
Alternatif olarak, şifresiz bir sahte kullanıcı eklemek için aşağıdaki satırları kullanabilirsiniz. UYARI: mevcut makinenin güvenliğini azaltabilirsiniz.
NOTE: BSD platformlarında /etc/passwd
/etc/pwd.db
ve /etc/master.passwd
konumundadır, ayrıca /etc/shadow
/etc/spwd.db
olarak yeniden adlandırılmıştır.
Bazı hassas dosyalara yazıp yazamayacağınızı kontrol etmelisiniz. Örneğin, bazı hizmet yapılandırma dosyalarına yazabilir misiniz?
Örneğin, eğer makine bir tomcat sunucusu çalıştırıyorsa ve /etc/systemd/ içindeki Tomcat hizmet yapılandırma dosyasını değiştirebiliyorsanız, o zaman şu satırları değiştirebilirsiniz:
Your backdoor will be executed the next time that tomcat is started.
Aşağıdaki klasörler yedekler veya ilginç bilgiler içerebilir: /tmp, /var/tmp, /var/backups, /var/mail, /var/spool/mail, /etc/exports, /root (Sonuncusunu okumayabileceksiniz ama deneyin)
linPEAS kodunu okuyun, şifreleri içerebilecek birkaç olası dosyayı arar. Bunu yapmak için kullanabileceğiniz başka ilginç bir araç: LaZagne, Windows, Linux ve Mac için yerel bir bilgisayarda saklanan birçok şifreyi almak için kullanılan açık kaynaklı bir uygulamadır.
Logları okuyabiliyorsanız, içlerinde ilginç/gizli bilgiler bulabilirsiniz. Log ne kadar garip olursa, o kadar ilginç olacaktır (muhtemelen). Ayrıca, bazı "kötü" yapılandırılmış (arka kapılı?) denetim logları, bu yazıda açıklandığı gibi, denetim logları içinde şifreleri kaydetmenize izin verebilir: https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/.
Logları okumak için grup adm gerçekten faydalı olacaktır.
Ayrıca, adında veya içeriğinde "şifre" kelimesini içeren dosyaları kontrol etmeli ve ayrıca günlüklerde IP'ler ve e-postalar veya hash regex'lerini kontrol etmelisiniz. Bunların nasıl yapılacağını burada listelemeyeceğim ama ilgileniyorsanız, linpeas tarafından gerçekleştirilen son kontrolleri kontrol edebilirsiniz.
Bir python betiğinin nereden çalıştırılacağını biliyorsanız ve o klasöre yazabiliyorsanız veya python kütüphanelerini değiştirebiliyorsanız, OS kütüphanesini değiştirebilir ve arka kapı ekleyebilirsiniz (python betiğinin çalıştırılacağı yere yazabiliyorsanız, os.py kütüphanesini kopyalayıp yapıştırın).
Kütüphaneyi arka kapı eklemek için os.py kütüphanesinin sonuna aşağıdaki satırı ekleyin (IP ve PORT'u değiştirin):
logrotate
'deki bir güvenlik açığı, bir günlük dosyası veya üst dizinlerinde yazma izinlerine sahip kullanıcıların potansiyel olarak yükseltilmiş ayrıcalıklar kazanmasına olanak tanır. Bunun nedeni, genellikle root olarak çalışan logrotate
'in, özellikle /etc/bash_completion.d/ gibi dizinlerde, rastgele dosyaları çalıştıracak şekilde manipüle edilebilmesidir. Günlük döngüsünün uygulandığı /var/log dışında, herhangi bir dizinde de izinleri kontrol etmek önemlidir.
Bu güvenlik açığı logrotate
sürüm 3.18.0
ve daha eski sürümleri etkilemektedir.
Güvenlik açığı hakkında daha ayrıntılı bilgi bu sayfada bulunabilir: https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition.
Bu güvenlik açığını logrotten ile istismar edebilirsiniz.
Bu güvenlik açığı, CVE-2016-1247 (nginx günlükleri) ile çok benzerlik göstermektedir, bu nedenle günlükleri değiştirebildiğinizi bulduğunuzda, bu günlükleri yöneten kişiyi kontrol edin ve günlükleri simlinklerle değiştirerek ayrıcalıkları yükseltip yükseltemeyeceğinizi kontrol edin.
Güvenlik açığı referansı: https://vulmon.com/exploitdetails?qidtp=maillist_fulldisclosure&qid=e026a0c5f83df4fd532442e1324ffa4f
Herhangi bir nedenle, bir kullanıcı /etc/sysconfig/network-scripts dizinine yazma yetkisine sahip bir ifcf-<herhangi bir şey>
betiği yazabiliyorsa veya mevcut birini ayarlayabiliyorsa, o zaman sisteminiz ele geçirilmiştir.
Ağ betikleri, örneğin ifcg-eth0, ağ bağlantıları için kullanılır. Tam olarak .INI dosyaları gibi görünürler. Ancak, Linux'ta Network Manager (dispatcher.d) tarafından ~sourced~ edilirler.
Benim durumumda, bu ağ betiklerinde NAME=
ataması doğru bir şekilde işlenmemektedir. Eğer isimde boşluk varsa, sistem boşluktan sonraki kısmı çalıştırmaya çalışır. Bu, ilk boşluktan sonraki her şeyin root olarak çalıştırıldığı anlamına gelir.
Örneğin: /etc/sysconfig/network-scripts/ifcfg-1337
Dizin /etc/init.d
, System V init (SysVinit) için betikler barındırır, bu da klasik Linux hizmet yönetim sistemidir. Bu betikler, hizmetleri başlatmak
, durdurmak
, yeniden başlatmak
ve bazen yenilemek
için kullanılır. Bunlar doğrudan veya /etc/rc?.d/
dizininde bulunan sembolik bağlantılar aracılığıyla çalıştırılabilir. Redhat sistemlerinde alternatif bir yol /etc/rc.d/init.d
'dir.
Diğer yandan, /etc/init
Upstart ile ilişkilidir, bu da Ubuntu tarafından tanıtılan daha yeni bir hizmet yönetimi sistemidir ve hizmet yönetim görevleri için yapılandırma dosyaları kullanır. Upstart'a geçişe rağmen, SysVinit betikleri, Upstart yapılandırmaları ile birlikte kullanılmaya devam etmektedir çünkü Upstart'ta bir uyumluluk katmanı vardır.
systemd, talep üzerine daemon başlatma, otomatik montaj yönetimi ve sistem durumu anlık görüntüleri gibi gelişmiş özellikler sunan modern bir başlatma ve hizmet yöneticisi olarak ortaya çıkmaktadır. Dosyaları dağıtım paketleri için /usr/lib/systemd/
ve yönetici değişiklikleri için /etc/systemd/system/
dizinlerine organize ederek sistem yönetim sürecini kolaylaştırır.
Statik impacket ikili dosyaları
LinEnum: https://github.com/rebootuser/LinEnum(-t seçeneği) Enumy: https://github.com/luke-goddard/enumy Unix Yetki Yükseltme Kontrolü: http://pentestmonkey.net/tools/audit/unix-privesc-check Linux Yetki Kontrolü: www.securitysift.com/download/linuxprivchecker.py BeeRoot: https://github.com/AlessandroZ/BeRoot/tree/master/Linux Kernelpop: Linux ve MAC'te kernel açıklarını listele https://github.com/spencerdodd/kernelpop Mestaploit: multi/recon/local_exploit_suggester Linux Exploit Suggester: https://github.com/mzet-/linux-exploit-suggester EvilAbigail (fiziksel erişim): https://github.com/GDSSecurity/EvilAbigail Daha fazla betik derlemesi: https://github.com/1N3/PrivEsc
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)