Suid Nedir?

Suid(Set owner User ID up on execution) linux sistemlerde kullanılan ve kullanıcının bir uygulamayı çalıştırırken daha yüksek haklarda çalıştırmasına olanak veren dosya yetkilendirme sistemidir.Windows sistemlerde bu yöntem run as administrator olarak bilinir.Bu sistem güvenlik önlemi olarak kullanılsada ,bazı durumlarda ciddi açıklara sebep olabilmekte.

Suid bitinin kullanıldığı yerlere örnek vermek gerekirse,parolamızı değiştirmek isteğimizde eğer düşük yetkide bir kullanıcıysak ($) ,bizden şifre istemektedir.(#) .Düşük seviyede işlemlerimize devam ederken parola değiştirme işlemi bizden root hakları istiyor ,işte burda suid devreye girerek o komutu root hakları ile çalıştırmamıza yarıyor.Sudo komutu da suid bitinin kullanıldığı bir komuttur.Bu yazımda suid biti kullanılarak linux sistemlerde privilege escalationın nasıl yapılacağından bahsedeceğim.

Bir bir nelere kadir ..

Hacker

Suid Biti Kullanarak Privilege Escalation İşlemi

Öncelikle bu işlemler için hedef sistemde düşük haklara sahip bir oturumunuz olması gerekir.Ardından aşağıdaki işlemleri yaparak hedef sistem üzerinde root olabiliriz

Örnek Senaryo


Ctf yarışmasındayız ve /root/Desktop/ dizini altında flagı almamız gerek.Biz ise düşük yetkilere sahibiz ve bu konuma gitmek istedimizde haliyle parola istiyor ve bizim parola konusunda herhangi bir fikrimiz yok.


1-)Suid bitinin kullanıldığı uygulamaları belirleme


Bunun için meterpreter oturumdayken shell komutu çalıştırarak hedef sistemin terminaline iniyoruz ve ;

find / -perm -u=s -type f 2>/dev/null

komutunu çalıştırıyoruz .Bu komut bize hangi uygulamanın çalışırken suid bitine ihtiyaç duyduğunu gösterecek.

-rwsr-xr-x 1 root root 22984 Jan 6 2007 /usr/bin/passwd -rwsr-xr-x 1 root root 46972 Mar 3 2009 /usr/bin/nmap -rwsr-sr-x 1 root root 315416 Jan 6 02:59 /usr/bin/crontab -rwxr-sr-x 1 root mail 16020 Mar 29 2007 /usr/bin/lockfile -rwxr-sr-x 1 root tty 10984 Jan 20 12:43 /usr/bin/wget -rwx–s–x 1 root slocate 23856 Sep 3 2009 /usr/bin/locate

izinler kısmında “s” bulunan uygulamalar suid biti kullandığı anlamını taşır.

Nmapin suid biti kullanıldığı görülmekte.Bu da demek oluyor ki nmap üzerinden root yetkileri ile komut çalıştırabiliriz.

2-)Uygulamaya göre Uygulama Üzerinde Çalıştırılacak Parametre Belirleme


Bizden içeriğini görüntülemek için root hakları isteyen flag için nmap üzerinden içeriğini okuyabiliriz.Bunun için nmap de bulunan ve hedef sistem üzerinde dosya okumamıza imkan veren “-iL” parametresini kullanacağız.(Daha detaylı nmap parametreleri için tıkla) .

“-iL” parametresi ile dosyanın içeriğini okuyalım,(“-iL” hakkında)

nmap -iL /root/Desktop/flag.txt herhangi_bir_ip

ve bize dönen sonuc;

cannot resolve adress ip_adress "flag hash değeri" 
nmap done !

Kolayca hash değerine sahip olduk.Bu yöntem dısında eğer hedef sistem nmap 7.00 versiyondan daha eski bir sürüme sahipse,nmap –interactive diyerek nmap de shell almışız gibi istediğimiz komutları çalıştırabiliriz.Ancak 7.00 versiyonundan sonra interactive nmap kaldırılmıştır.

Ek olarak bunun için metasploit te bulunan ve çokta stabil olmayan bir exploit vardır;

exploit/unix/local/setuid_nmap

Diğer Linux Komutları için SUID

Aynı işlemler find,wget,cp gibi komutlar için de yapılabilir ve mantıkları aynıdır.Kısaca değinmek gerekirse ,

Find komutu için;

  • find pentest -exec whoami \;

Cp komutu için;

which cp
ls -al /bin/cp
chmod u+s /bin/cp
cp /etc/passwd /var/www/html

kodları ile passwd de ki parola hash değerlerini açık dosya dizinimize kopyaladık böylece parola hash değerlerine ulaşmış olduk.

Sonuc

Suid biti kullanarak root hesabındaymış gibi komut çalıştırdık ve gereken dosyaları okuyabildik.Suid aslında bir güvenlik önlemidir. Ama bilindiği üzere hiç bir sistem güvenli değildir 🙂 ,bugünkü yazımda bu zafiyetten nasıl faydanabileceğimizi anlatmaya çalıştım.Umarım faydalı olmuştur ,iyi çalışmalar..

Tags:

No responses yet

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir