disable_functions bypass - dl function

Support HackTricks

Önemli not:

image

dl PHP uzantılarını yüklemek için kullanılabilen bir PHP fonksiyonudur. Eğer bu fonksiyon devre dışı bırakılmamışsa, disable_functions bypass etmek ve keyfi komutlar çalıştırmak için kötüye kullanılabilir. Ancak, bazı katı sınırlamaları vardır:

  • dl fonksiyonu mevcut olmalı ve devre dışı bırakılmamalıdır

  • PHP uzantısı, sunucunun kullandığı aynı ana sürümle (PHP API sürümü) derlenmiş olmalıdır (bu bilgiyi phpinfo çıktısında görebilirsiniz)

  • PHP uzantısı, extension_dir direktifi ile tanımlanan dizinde bulunmalıdır (bunu phpinfo çıktısında görebilirsiniz). Bir saldırganın bu dizinde yazma erişimine sahip olması çok olası değildir, bu nedenle bu gereklilik muhtemelen bu tekniği kötüye kullanmanızı engelleyecektir.

Bu gereklilikleri karşılıyorsanız, disable_functions bypass etmeyi öğrenmek için yazıyı okumaya devam edin https://antichat.com/threads/70763/. İşte bir özet:

dl fonksiyonu, script çalıştırma sırasında PHP uzantılarını dinamik olarak yüklemek için kullanılır. Genellikle C/C++ ile yazılan PHP uzantıları, PHP'nin işlevselliğini artırır. Saldırgan, dl fonksiyonunun devre dışı bırakılmadığını fark ettiğinde, sistem komutlarını çalıştırmak için özel bir PHP uzantısı oluşturmayı karar verir.

Saldırganın Aldığı Adımlar:

  1. PHP Sürüm Belirleme:

  • Saldırgan, bir script kullanarak PHP sürümünü belirler (<?php echo 'PHP Version is '.PHP_VERSION; ?>).

  1. PHP Kaynağını Temin Etme:

  1. Yerel PHP Kurulumu:

  • Belirli PHP sürümünü sistemine çıkarır ve kurar.

  1. Uzantı Oluşturma:

Özel Uzantıyı Derleme Notları:

  1. ZEND_MODULE_API_NO:

  • bypass.c içindeki ZEND_MODULE_API_NO, mevcut Zend Extension Build ile eşleşmelidir, bu bilgi şu komutla alınabilir:

php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  1. PHP_FUNCTION Değişikliği:

  • Son PHP sürümleri (5, 7, 8) için PHP_FUNCTION(bypass_exec) ayarlanması gerekebilir. Sağlanan kod parçası bu değişikliği detaylandırır.

Özel Uzantı Dosyaları:

  • bypass.c:

  • Özel uzantının temel işlevselliğini uygular.

  • php_bypass.h:

  • Uzantı özelliklerini tanımlayan başlık dosyası.

  • config.m4:

  • Özel uzantının derleme ortamını yapılandırmak için phpize tarafından kullanılır.

Uzantıyı Derleme:

  1. Derleme Komutları:

  • Uzantıyı derlemek için phpize, ./configure ve make kullanır.

  • Ortaya çıkan bypass.so, modüller alt dizininde bulunur.

  1. Temizlik:

  • Derlemeden sonra make clean ve phpize --clean komutlarını çalıştırır.

Kurban Sunucusuna Yükleme ve Çalıştırma:

  1. Sürüm Uyumluluğu:

  • Saldırganın ve kurbanın sistemleri arasında PHP API sürümlerinin eşleştiğinden emin olur.

  1. Uzantı Yükleme:

  • dl fonksiyonunu kullanarak, kısıtlamaları aşmak için göreceli yollar veya süreci otomatikleştiren bir script kullanır.

  1. Script Çalıştırma:

  • Saldırgan, bypass.so ve bir PHP scriptini kurbanın sunucusuna yükler.

  • Script, bypass.so'yu dinamik olarak yüklemek için dl_local fonksiyonunu kullanır ve ardından cmd sorgu parametresi aracılığıyla geçirilen bir komut ile bypass_exec çağrısında bulunur.

Komut Çalıştırma:

  • Saldırgan artık komutları şu şekilde çalıştırabilir: http://www.example.com/script.php?cmd=<command>

Bu ayrıntılı inceleme, sistem komutlarını çalıştırmak için bir PHP uzantısı oluşturma ve dağıtma sürecini, dl fonksiyonunu kötüye kullanarak açıklamaktadır; bu, bu tür güvenlik ihlallerini önlemek için ideal olarak devre dışı bırakılmalıdır.

Support HackTricks

Last updated