Drupal RCE
PHP Filtre Modülü ile
Drupal'ın (8. sürümden önceki sürümlerinde) eski sürümlerinde, bir yönetici olarak giriş yaparak PHP filtresi
modülünü etkinleştirmek mümkündü, bu da "Gömülü PHP kodlarının değerlendirilmesine izin verir." Ancak 8. sürümden itibaren bu modül varsayılan olarak yüklenmez.
Eklenti php'nin yüklü olması gerekiyor (bunu kontrol etmek için /modules/php adresine erişerek kontrol edin ve eğer 403 dönüyorsa, mevcut, eğer bulunamadıysa, o zaman php eklentisi yüklü değil demektir)
Modüller -> (Kontrol Et) PHP Filtresi -> Yapılandırmayı Kaydet
Ardından İçerik Ekle'ye tıklayın -> Temel Sayfa veya Makale seçin -> Gövdede php kabuk kodunu yazın -> Metin formatında PHP kodu seçin -> Önizleme seçin
Son olarak, sadece yeni oluşturulan düğüme erişin:
PHP Filtre Modülünü Yükle
Mevcut sürümlerde, varsayılan kurulumdan sonra yalnızca web'e erişim sağlayarak eklentileri yüklemek artık mümkün değil.
8 ve sonraki sürümlerde, PHP Filtre modülü artık varsayılan olarak yüklenmiyor. Bu işlevselliği kullanabilmek için modülü kendimiz yüklememiz gerekecek.
Modülün en güncel sürümünü Drupal web sitesinden indirin.
wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
İndirildikten sonra
Yönetim
>Raporlar
>Kullanılabilir güncellemeler
bölümüne gidin.Göz at
'e tıklayın, dosyayı indirdiğimiz dizinden seçin ve ardındanYükle
'ye tıklayın.Modül yüklendikten sonra
İçerik
'e tıklayarak yeni bir temel sayfa oluşturun, Drupal 7 örneğinde yaptığımız gibi. Yine,Metin biçimi
açılır menüsündenPHP kodu
'nu seçtiğinizden emin olun.
Arka Kapılı Modül
Mevcut sürümlerde, varsayılan kurulumdan sonra yalnızca web'e erişim sağlayarak eklentileri yüklemek artık mümkün değil.
Bir arka kapılı modül, mevcut bir modüle bir kabuk ekleyerek oluşturulabilir. Modüller drupal.org web sitesinde bulunabilir. CAPTCHA gibi bir modül seçelim. Aşağı kaydırın ve tar.gz arşivi için bağlantıyı kopyalayın.
Arşivi indirin ve içeriğini çıkarın.
İçeriği olan bir PHP web kabuğu oluşturun:
Ardından, kendimize klasöre erişim sağlamak için bir
.htaccess
dosyası oluşturmamız gerekmektedir. Bu, Drupal'ın/modules
klasörüne doğrudan erişimi reddettiği için gereklidir.
Yukarıdaki yapılandırma, /modules içinde bir dosya istediğimizde / klasörü için kurallar uygulayacaktır. Bu dosyaların her ikisini de captcha klasörüne kopyalayın ve bir arşiv oluşturun.
Website'ye yönetici erişimi olduğunu varsayarak,
Yönet
üzerine tıklayın ve ardından kenar çubuğundaGenişlet
seçeneğine tıklayın. Daha sonra+ Yeni modül yükle
düğmesine tıklayarak yükleme sayfasına yönlendirileceksiniz, örneğinhttp://drupal-site.local/admin/modules/install
Bağlantısına giderek backdoorlu Captcha arşivine göz atın veYükle
'ye tıklayın.Kurulum başarılı olduğunda, komutları yürütmek için
/modules/captcha/shell.php
sayfasına gidin.
Drupal'ı Yapılandırma Senkronizasyonu ile Backdoor Ekleme
Tarafından paylaşılan yazı Coiffeur0x90
Bölüm 1 (Media ve Media Kütüphanesi etkinleştirme)
Etend menüsünde (/admin/modules), zaten yüklü gibi görünen eklentileri etkinleştirebilirsiniz. Varsayılan olarak, Media ve Media Kütüphanesi eklentilerinin etkin olmadığı görünüyor, bu yüzden onları etkinleştirelim.
Etkinleştirmeden önce:
Etkinleştirdikten sonra:
Bölüm 2 (Yapılandırma senkronizasyonu özelliğinden faydalanma)
Drupal yapılandırma girişlerini dökümlemek (dışa aktarmak) ve yüklemek (içe aktarmak) için Yapılandırma senkronizasyonu özelliğinden faydalanacağız:
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Sistem dosyasını yama system.file.yml
İlk girişi yamalamaya başlayalım allow_insecure_uploads
'den:
Dosya: system.file.yml
Dosya: system.file.yml
field.field.media.document.field_media_document.yml dosyasını yamultayın
Daha sonra, ikinci girişi şu şekilde yamultayın:
Dosya: field.field.media.document.field_media_document.yml
Dosya: field.field.media.document.field_media_document.yml
Bu blog yazısında kullanmasam da, giriş
file_directory
'nin keyfi bir şekilde tanımlanabileceği ve yol travması saldırısına açık olduğu belirtilmiştir (bu sayede Drupal dosya sistemi ağacı içinde yukarı çıkabiliriz).
Bölüm 3 (özellik Belge Ekleme kullanımı)
Son adım en basittir ve iki alt adıma ayrılır. İlk adım, .htaccess formatında bir dosya yüklemek ve Apache direktiflerini kullanarak .txt dosyalarının PHP motoru tarafından yorumlanmasına izin vermek için. İkinci adım ise payload içeren bir .txt dosyasını yüklemektir.
Dosya: .htaccess
Neden bu hile harika?
Çünkü Webshell (ki ona LICENSE.txt diyeceğiz) Web sunucusuna bırakıldığında, komutlarımızı $_COOKIE
üzerinden iletebiliriz ve Web sunucusu günlüklerinde bu, metin dosyasına yapılmış meşru bir GET isteği olarak görünecektir.
Neden Webshell'imize LICENSE.txt adını verdik?
Basitçe çünkü örneğin şu dosyayı alırsak core/LICENSE.txt (ki zaten Drupal çekirdeğinde bulunmaktadır), 339 satır ve 17.6 KB boyutunda bir dosyaya sahibiz, ki bu dosyaya PHP kodunun küçük bir parçasını eklemek için mükemmeldir (çünkü dosya yeterince büyüktür).
Dosya: Yamasız LICENSE.txt
Bölüm 3.1 (dosya yükleme .htaccess)
İlk olarak, Apache direktiflerini içeren dosyamızı yüklemek için Add Document (/media/add/document) özelliğini kullanıyoruz.
Bölüm 3.2 (dosya yükleme LICENSE.txt)
Ardından, lisans dosyası içinde gizlenmiş bir Webshell yüklemek için Add Document (/media/add/document) özelliğini tekrar kullanıyoruz.
Bölüm 4 (Webshell ile etkileşim)
Son bölüm, Webshell ile etkileşimde bulunmayı içerir.
Aşağıdaki ekran görüntüsünde gösterildiği gibi, Webshell tarafından beklenen çerez tanımlanmamışsa, dosyayı bir Web tarayıcısı aracılığıyla danıştığımızda sonuç aşağıdaki gibi olur.
Saldırgan çerezi ayarladığında, Webshell ile etkileşimde bulunabilir ve istediği herhangi bir komutu çalıştırabilir.
Ve loglarda gördüğünüz gibi, yalnızca bir txt dosyasının istendiği görünüyor.
Bu makaleyi okuduğunuz için teşekkür ederim, umarım size bazı kabuklar elde etmenize yardımcı olur.
Last updated