SSH ve .SSH exploitation

Sergen can
3 min readJul 12, 2023

--

SSH

SSH, uzaktan başka bir bilgisayarın komut satırına erişmemizi ve eriştiğimiz kullanıcının hakları ile işlem yapmamızı sağlayan bir protokoldür. SSH kullanımından önce bunun için telnet kullanılırdı, fakat telnet gönderdiği bilgileri “clear text” formatında yani encrypt etmeden gönderdiği için güvenlik açısından “secure shell” yani SSH kullanılmaya başlandı.

Linux ssh connection

ssh <user-name>@<ip-address>

Daha sonra girdiğimiz kullanıcı adı için bizden bir şifre isteyecek ve doğru verdiğimiz taktirde bağlanmak istediğimiz ip adresine, komut satırı üzerinden erişim sağlayacağız.

.SSH

Şifre ile girişi gördük, peki şifresiz giriş yapabilir miyiz ?

.SSH klasörü genelde /home dizini altında bulunan bir ssh key klasörüdür. Başında “ . ” olmasının sebebi gizli bir klasör olmasındandır. Bu klasör içerisinde önemli üç adet dosya barındırır.

  1. id_rsa
  2. id_rsa.pub
  3. autorized_key

Bu üç dosyadan birine bile ulaşmanız demek eğer bir CTF çözüyorsanız veya sızma testi yapıyorsanız çok önemli bir bilgidir. Bu dosyaları biraz daha detaylı inceleyelim.

id_rsa ve id_rsa.pub

id_rsa adı verdiğimiz dosya içerisinde bir adet ssh key bulundurur varsayılan olarak rsa ile şifrelenmiştir. Bu ssh key karşı tarafa şifre olmadan bağlanmamızı sağlar fakat tek başına yeterli değildir, id_rsa dosyasını kendi bilgisayarımda bulundururken id_rsa.pub dosyası bağlanacağım sistemde bulunmalıdır.

Bu iki dosya eş dosyalardır, bir bağlantı sırasında benden giden id_rsa dosyasının içeriği ile karşıdan gelen id_rsa.pub dosyası birleştirilerek şifresiz giriş yapılmış olur. Id_rsa.pub dosyasının içeriğinde bir adet ssh key ve bu keyin sonunda bir adet kullanıcı adı görürüz. Bu dosya karşıda bulunacağı için bulundurduğu key ile bizden ona giden key birleştiğinde hangi kullanıcıya ait olduğunu da içinde tutmak zorundadır. Böylece kullanıcı adı ve key eşleşirse içeriye giriş yapılmış olur.

id_rsa dosyası içeriği şu şekilde görünür;

id_rsa.pub dosyası içeriği şu şekilde görünür;

SSH KEY CONNECTION

ssh -i <id_rsa-path> sergen@10.10.10.10

NOT: “-i” diyip kullanacağımız id_rsa dosyasını vermezsek eğer, default olarak “/home/.ssh/id_rsa” olarak arayacaktır. Eğer kullanacağımız dosya adı ve yolu değişik ise “-i” diyerek belirtmeliyiz.

SSH KEY GENERATE

Bir ssh key üretmek istiyorsak eğer ssh-keygen komutunu kullanılabilir. Bu komut kullanıldığında bizden dosyanın oluşturulacağı dizin istenir, eğer dizini default olarak enter diyerek geçersek .ssh altında bu dosyalar oluşur. Bu çok sıklıkla yapılan bir hatadır ve bu dosyalara erişilebilirliği kolaylaştırır. Kendi istediğimiz farklı bir yol vermek best practice’dir.

autorized_key

autorized_key ise bu dosyalardan bağımsız olarak tek başına bile bir CTF veya Pentest sırasında bulunursa kullanılabilir bir dosyadır. Bu dosya içerisinde autorized yani yetkilendirilmiş keyleri barındırır. Aslında bu dosya id_rsa.pub dosyasının aynısıdır fakat içinde birden çok yetkilendirilmiş kullanıcı bulunabilir ve aynı zamanda sonunda bulunan kullanıcı adı, Örneğin sergen@10.10.10.10 diye bir kullanıcı adı bulunuyorsa bu demek oluyor ki bana sadece 10.10.10.10 ip adresine sahip sergen kullanıcısı eğer id_rsa’e sahipse bağlanabilsin.

autorized_key dosya içeriği şu şekilde görünür;

autorized_key exploitation

ssh-keygen

Yukarıda bulunan komutu kullandıktan sonra kendi bilgisayarımda iki adet dosya oluştu, bu dosyalardan birisi id_rsa diğeri ise id_rsa.pub’dır. Şimdi, ben sadece hedef makinanın autorized_key dosyasına erişebildim diye düşünelim. Bu dosyanın içerisine benim kendi bilgisayarımda oluşturduğum id_rsa.pub dosya içeriğimi yazarsam eğer, artık bende hedef bilgisayarda bir autorized kullanıcı olmuş olurum. Aynı zamanda kendi oluşturduğum id_rsa.pub dosyasının içeriğini karşıda bulduğum autorized_key içerisine yazdıktan sonra ssh ile bağlanabilirim, çünkü bende aynı zamanda kendim bir ssh-key oluşturduğum için id_rsa dosyası da bulunuyor.

kendimi eklediğim autorized_key dosya içeriği şu şekilde görünür;

Bu gibi zafiyetlerin ortaya çıkmaması için alınması gereken önlemler;

  1. ssh-keygen” komutu kullanılırken default path seçilmemeli.
  2. Bu dosyaların isimleri değiştirilmeli
  3. Dosyalar şifrelenmelidir.

--

--

Sergen can
Sergen can

Written by Sergen can

CyberSecurity | CPTS | PJPT |

No responses yet