- 14 Eki 2022
- 581
- 489
merhaba, bu konumda road isimli makinenin çözümünü göstereceğim. makine sahibi gerçek dünyada ki bir sızma testinden ilham alarak yaptığını söylemiş ve bunun dışında bir bilgi vermemiş. makine üzerinde bir şeyler yapabilmek için öncelikle bir port taraması yapmamız gerekiyor.
> nmap -sV --min-rate 1000 10.10.197.114
tarama sonucunda 22 ve 80 portunun açık olduğunu görüyoruz, 80 portu üzerinde neler çalıştığını görmek için tarayıcıya ip adresini yapıştıralım.
bizi güzel bir web uygulaması karşıladı. uygulama içerisinde career.html ve /v2/admin/login.html olmak üzere 2 sayfa bulunuyor. öncelikle yönetici sayfasına baktığımızda kayıt olma ve giriş yapma adı altında 2 buton görüyoruz. bizim herhangi bir hesabımız olmadığı için yeni hesap açmamız gerekiyor. register butonuna tıklayıp bir hesap açalım sonra ise bu hesaba giriş yapalım.
panele giriş yaptıktan sonra içerisinde ResetUser.php ve profile.php olmak üzere 2 sayfa görüyoruz. profile.php sayfasında bir dosya yükleme butonu var fakat bu butonu sadece [email protected] kullanıcısı kullanabiliyormuş. ResetUser.php sayfasında ise ilginç bir bölüm var.
büyük ihtimalle işaretlediğim yerdeki kullanıcı adını kullanarak şifreyi sıfırlıyor. aşağıda muhtemel bir kod paylaştım. tıpkısının aynısı olmayabilir ama bu koda benzer bir şekilde kodlanmıştır.
yani kullanıcı adı veri tabanında var ise girdiğimiz şifre ile hesabın şifresini değiştiriyor. bu güvenlik açığına "Insecure Direct Object References (IDOR)" deniyor. sağ tık incele yaparak işaretlediğim yere, yetkili kullanıcı adını yazalım ve göndere basıp şifresini değiştirelim.
şifresini değiştirdiğimize göre bulunduğumuz hesaptan çıkış yapıp, yöneticinin hesabına giriş yapabiliriz.
artık dosya yükleme iznimiz var. reverse shell dosyamızı yükleyelim sonra dosyanın yüklendiği yeri bulmaya çalışalım. bu sayfanın kaynak koduna baktığımızda yüklediğimiz dosyanın /v2/profileimages/ dizinine gittiğini öğreniyoruz. yani dosyamız http://10.10.197.114/v2/profileimages/carver.php adresinde. çalıştırmadan önce pwncat ile 1234 portunu dinlemeye alacağım sonra ise yüklediğim dosyayı çalıştıracağım. isterseniz pwncat kullanmak yerine netcat kullanabilirsiniz.
pwncat-cs yazıp programı çalıştırdım sonra "listen -m linux 1234 -D" komutunu kullanarak 1234 portuna gelen bağlantıları yakalamasını sağladım. siteye yüklediğim shell dosyasını çalıştırdığımda ise bağlantı geldi. ctrl + d kombinasyonu ile shell'e geçtim ve user.txt dosyasını okuyabildim.
son olarak root.txt dosyasını okumamız gerekiyor. bu dosyayı okuyabilmek için anlayacağınız üzere root yetkisinde olmamız gerek. tekrar ctrl + d kombinasyonunu kullanarak pwncat'e geçiş yapalım sonra ise "run enumerate" komutunu kullanarak sistem üzerinden bilgi toplayalım.
sistemde yukarıda gördüğünüz gibi mongodb çalışıyor bunun dışında sudo versiyonunun 1.8.31 olmasından dolayı bir zafiyet içerebileceğini öğrendik ama bunu kullanamayız çünkü şuan herhangi bir kullanıcı hesabında değiliz ve webdeveloper kullanıcısının şifresini bilmiyoruz. tekrar ctrl + d kombinasyonu ile shell'e geçiş yapalım sonra da mongo komutunu kullanarak veritabanına bağlanmaya çalışalım.
veri tabanına bağlanabildik. help komutunu kullandıktan sonra çıkan komutlar üzerinden veri tabanı içerisinde gezelim, belki önemli bir şeyler buluruz.
veri tabanı içerisinde gezerken webdeveloper kullanıcısının şifresini buldum, su webdeveloper komutu ile kullanıcıya geçiş yapalım.
webdeveloper kullanıcısına geçtikten sonra sudo -l komutunu kullandım ve işaretlediğim sonuçlar çıktı. sistem üzerinde linpeas.sh dosyasını çalıştırırsanız sağ tarafta ki işaretlediğim yazı sarı kırmızı (yetki yükseltmek için kullanılabilir) olarak işaretlenir. bu yazıyı google üzerinden aratalım ve nasıl yetki yükseltebileceğimizi öğrenelim.
> https://www.hackingarticles.in/linux-privilege-escalation-using-ld_preload/
gördüğünüz gibi yetki yükselttik ve root.txt dosyasını okuduk.
okuduğunuz için teşekkür ederim.
> nmap -sV --min-rate 1000 10.10.197.114
tarama sonucunda 22 ve 80 portunun açık olduğunu görüyoruz, 80 portu üzerinde neler çalıştığını görmek için tarayıcıya ip adresini yapıştıralım.
bizi güzel bir web uygulaması karşıladı. uygulama içerisinde career.html ve /v2/admin/login.html olmak üzere 2 sayfa bulunuyor. öncelikle yönetici sayfasına baktığımızda kayıt olma ve giriş yapma adı altında 2 buton görüyoruz. bizim herhangi bir hesabımız olmadığı için yeni hesap açmamız gerekiyor. register butonuna tıklayıp bir hesap açalım sonra ise bu hesaba giriş yapalım.
panele giriş yaptıktan sonra içerisinde ResetUser.php ve profile.php olmak üzere 2 sayfa görüyoruz. profile.php sayfasında bir dosya yükleme butonu var fakat bu butonu sadece [email protected] kullanıcısı kullanabiliyormuş. ResetUser.php sayfasında ise ilginç bir bölüm var.
büyük ihtimalle işaretlediğim yerdeki kullanıcı adını kullanarak şifreyi sıfırlıyor. aşağıda muhtemel bir kod paylaştım. tıpkısının aynısı olmayabilir ama bu koda benzer bir şekilde kodlanmıştır.
PHP:
<?php
if (isset($_POST["npass"]) && isset($_POST["cpass"])){
$username = $_POST["uname"];
$npass = $_POST["npass"];
$cpass = $_POST["cpass"];
if ($npass == $cpass){
$pdo = new PDO("mysql:host=localhost;dbname=road", "user", "pass");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$updateQuery = "UPDATE users SET password = :password WHERE username = :username";
$stmt = $pdo->prepare($updateQuery);
$stmt->bindParam(':password', $npass, PDO::PARAM_STR);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
if ($stmt->execute()) {
echo "Şifre başarıyla güncellendi.";
} else {
echo "Şifre güncelleme işlemi başarısız.";
}
}
}
?>
yani kullanıcı adı veri tabanında var ise girdiğimiz şifre ile hesabın şifresini değiştiriyor. bu güvenlik açığına "Insecure Direct Object References (IDOR)" deniyor. sağ tık incele yaparak işaretlediğim yere, yetkili kullanıcı adını yazalım ve göndere basıp şifresini değiştirelim.
şifresini değiştirdiğimize göre bulunduğumuz hesaptan çıkış yapıp, yöneticinin hesabına giriş yapabiliriz.
artık dosya yükleme iznimiz var. reverse shell dosyamızı yükleyelim sonra dosyanın yüklendiği yeri bulmaya çalışalım. bu sayfanın kaynak koduna baktığımızda yüklediğimiz dosyanın /v2/profileimages/ dizinine gittiğini öğreniyoruz. yani dosyamız http://10.10.197.114/v2/profileimages/carver.php adresinde. çalıştırmadan önce pwncat ile 1234 portunu dinlemeye alacağım sonra ise yüklediğim dosyayı çalıştıracağım. isterseniz pwncat kullanmak yerine netcat kullanabilirsiniz.
pwncat-cs yazıp programı çalıştırdım sonra "listen -m linux 1234 -D" komutunu kullanarak 1234 portuna gelen bağlantıları yakalamasını sağladım. siteye yüklediğim shell dosyasını çalıştırdığımda ise bağlantı geldi. ctrl + d kombinasyonu ile shell'e geçtim ve user.txt dosyasını okuyabildim.
son olarak root.txt dosyasını okumamız gerekiyor. bu dosyayı okuyabilmek için anlayacağınız üzere root yetkisinde olmamız gerek. tekrar ctrl + d kombinasyonunu kullanarak pwncat'e geçiş yapalım sonra ise "run enumerate" komutunu kullanarak sistem üzerinden bilgi toplayalım.
sistemde yukarıda gördüğünüz gibi mongodb çalışıyor bunun dışında sudo versiyonunun 1.8.31 olmasından dolayı bir zafiyet içerebileceğini öğrendik ama bunu kullanamayız çünkü şuan herhangi bir kullanıcı hesabında değiliz ve webdeveloper kullanıcısının şifresini bilmiyoruz. tekrar ctrl + d kombinasyonu ile shell'e geçiş yapalım sonra da mongo komutunu kullanarak veritabanına bağlanmaya çalışalım.
veri tabanına bağlanabildik. help komutunu kullandıktan sonra çıkan komutlar üzerinden veri tabanı içerisinde gezelim, belki önemli bir şeyler buluruz.
veri tabanı içerisinde gezerken webdeveloper kullanıcısının şifresini buldum, su webdeveloper komutu ile kullanıcıya geçiş yapalım.
webdeveloper kullanıcısına geçtikten sonra sudo -l komutunu kullandım ve işaretlediğim sonuçlar çıktı. sistem üzerinde linpeas.sh dosyasını çalıştırırsanız sağ tarafta ki işaretlediğim yazı sarı kırmızı (yetki yükseltmek için kullanılabilir) olarak işaretlenir. bu yazıyı google üzerinden aratalım ve nasıl yetki yükseltebileceğimizi öğrenelim.
> https://www.hackingarticles.in/linux-privilege-escalation-using-ld_preload/
gördüğünüz gibi yetki yükselttik ve root.txt dosyasını okuduk.
okuduğunuz için teşekkür ederim.
Son düzenleme: