Skip to content

Latest commit

 

History

History
30 lines (27 loc) · 1.79 KB

File metadata and controls

30 lines (27 loc) · 1.79 KB

index.php içini okumamız mümkünse okuyalım

  1. Parametre Manipülasyonu (Injection Testi) Eğer bir cmd parametresi varsa ve bu parametre bir komut çalıştırmak için kullanılıyorsa, bu bir komut enjeksiyonu (Command Injection) olasılığını gösterir. Örnek test: http://abc.thm/assets/index.php?cmd=whoami http://abc.thm/assets/index.php?cmd=ls Eğer bir sonuç dönerse (örneğin, dosyalar listeleniyorsa), komut çalıştırabildiğiniz anlaşılır.
  2. Kendi Komutlarınızı Ekleyerek Test Etme PHP'de genelde komutları zincirlemek için &&, |, ; veya $(komut) gibi operatörler kullanılır. Bununla test edebilirsiniz:

http://abc.thm/assets/index.php?cmd=ls;whoami http://abc.thm/assets/index.php?cmd=ls&&whoami Eğer sonuç dönüyorsa, komut zincirlemenin mümkün olduğu anlaşılır. 3. Yanıtı Analiz Etme Eğer cmd parametresine rastgele değerler gönderdiğinizde bir hata mesajı dönerse, PHP'nin exec(), shell_exec() veya benzeri bir fonksiyonun çalıştığını fark edebilirsiniz. Örneğin: http://abc.thm/assets/index.php?cmd=abc123 Dönen mesajda, komut bulunamadı (command not found) gibi ifadeler varsa, bu bir göstergedir. 4. Kaynak Kod Analizi Eğer PHP dosyasını (örneğin /assets/.php) veya dizin altında başka bir dosyayı görüntüleme şansınız varsa, içeride şu gibi kodları arayabilirsiniz:

system($_GET['cmd']); exec($_GET['cmd']); passthru($_GET['cmd']); Bu fonksiyonlar, gelen kullanıcı girdilerini işletim sisteminde komut olarak çalıştırmak için kullanılır. 5. Dışarı Çıkmaya Çalışma Eğer ls gibi komutlar dönerse, daha fazla yetki veya bilgi almak için şu komutları deneyebilirsiniz:

pwd (Mevcut dizini öğrenmek için) cat /etc/passwd (Kullanıcı bilgilerini görüntülemek için) uname -a (Sistem bilgilerini almak için)