disable_functions bypass - dl function

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Önemli not:

dl PHP uzantılarını yüklemek için kullanılan bir PHP işlevdir. İşlev devre dışı bırakılmamışsa, disable_functions'ı atlamak ve keyfi komutlar çalıştırmak için kötüye kullanılabilir. Ancak, bazı katı sınırlamaları vardır:

  • dl işlevi çevrede mevcut ve devre dışı bırakılmamış olmalı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 yönergesi tarafından tanımlanan dizinde bulunmalıdır (bu bilgiyi phpinfo çıktısında görebilirsiniz). Sunucuyu kötüye kullanmaya çalışan bir saldırganın bu dizine yazma erişimi olması çok olası olmadığından, bu gereklilik muhtemelen bu teknikten yararlanmanızı engelleyecektir.

Bu gereksinimleri karşılıyorsanız, disable_functions'ı atlamayı öğrenmek için https://antichat.com/threads/70763/ bağlantısındaki gönderiyi okumaya devam edin. İşte bir özet:

dl işlevi, betik yürütme sırasında PHP uzantılarını dinamik olarak yüklemek için kullanılır. C/C++ ile genellikle yazılan PHP uzantıları, PHP'nin işlevselliğini geliştirir. Saldırgan, dl işlevinin devre dışı bırakılmadığını fark ettikten sonra, sistem komutlarını çalıştırmak için özel bir PHP uzantısı oluşturmaya karar verir.

Saldırgan Tarafından İzlenen Adımlar:

  1. PHP Sürümünün Belirlenmesi:

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

  1. PHP Kaynak Kodunun Edinilmesi:

  1. Yerel PHP Kurulumu:

  • Belirli PHP sürümünü kendi 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 bilgiyi aşağıdaki komutla alabilirsiniz:

php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
  1. PHP_FUNCTION Düzenlemesi:

  • Son PHP sürümleri (5, 7, 8) için PHP_FUNCTION(bypass_exec) düzenlemesi gerekebilir. Sağlanan kod parçacığı bu düzenlemeyi 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ı için yapılandırmayı phpize kullanarak yapılandırmak için kullanılır.

Uzantının Derlenmesi:

  1. Derleme Komutları:

  • Uzantının derlenmesi için phpize, ./configure ve make kullanılır.

  • Sonuç olarak oluşan bypass.so dosyası, modüller alt dizininde bulunur.

  1. Temizlik:

  • Derleme işleminden sonra make clean ve phpize --clean çalıştırılır.

Kurban Sunucuda Yüklenmesi ve Yürütülmesi:

  1. Sürüm Uyumluluğu:

  • Saldırganın ve kurbanın sistemlerinde PHP API sürümlerinin eşleştiğinden emin olunur.

  1. Uzantı Yüklenmesi:

  • İlgili kısıtlamaları atlamak için dl işlevi kullanılır ve göreceli yollar veya süreci otomatikleştiren bir betik kullanılır.

  1. Betik Yürütme:

  • Saldırgan, bypass.so ve bir PHP betiğini kurban sunucusuna yükler.

  • Betik, dl_local işlevini kullanarak bypass.so'yi dinamik olarak yükler ve ardından cmd sorgu parametresi aracılığıyla iletilen bir komutla bypass_exec işlevini çağırır.

Komut Yürütme:

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

Bu ayrıntılı adım adım rehber, dl işlevini kötüye kullanarak sistem komutlarını çalıştırmak için özel bir PHP uzantısı oluşturma ve dağıtma sürecini açıklar. Bu, böyle bir güvenlik açığını önlemek için ideal olarak devre dışı bırakılması gereken dl işlevini istismar etmektedir.

AWS hacklemeyi sıfırdan kahraman olmak için htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'ı desteklemenin diğer yolları:

Last updated