Drupal RCE
PHP Filtre Modülü ile
Eski Drupal sürümlerinde (sürüm 8'den önce), admin olarak giriş yapmak ve PHP filter
modülünü etkinleştirmek mümkündü; bu modül "Gömülü PHP kodu/parçalarının değerlendirilmesine izin verir." Ancak sürüm 8'den itibaren bu modül varsayılan olarak yüklenmemektedir.
php eklentisinin yüklü olması gerekir ( /modules/php adresine erişerek kontrol edin ve 403 dönerse, mevcuttur, eğer bulunamadı dönerse, php eklentisi yüklü değildir)
Modüller -> (Kontrol Et) PHP Filtre -> Yapılandırmayı Kaydet
Ardından İçerik Ekle -> Temel Sayfa veya Makale seçin -> gövdeye php shellcode yazın -> Metin formatında PHP kodu seçin -> Önizleme seçin
Son olarak, yeni oluşturulan düğüme erişin:
PHP Filtre Modülünü Kurun
Mevcut sürümlerde, varsayılan kurulumdan sonra yalnızca web erişimi ile eklenti kurmak artık mümkün değildir.
8 ve sonrası sürümlerde, PHP Filtre modülü varsayılan olarak kurulmamıştır. Bu işlevselliği kullanmak için modülü kendimiz kurmamız gerekecek.
Drupal web sitesinden modülün en son sürümünü indirin.
wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
İndirdikten sonra
Yönetim
>Raporlar
>Mevcut güncellemeler
bölümüne gidin.Gözat
butonuna tıklayın, indirdiğimiz dosyayı seçin ve ardındanKur
butonuna tıklayın.Modül kurulduktan sonra,
İçerik
butonuna tıklayıp yeni bir temel sayfa oluşturabiliriz, Drupal 7 örneğinde yaptığımız gibi. Yine,Metin formatı
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 erişimi ile eklenti kurmak artık mümkün değildir.
Arka kapılı bir modül, mevcut bir modüle bir shell 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şivinin bağlantısını kopyalayın.
Arşivi indirin ve içeriğini çıkarın.
İçeriği ile bir PHP web shell oluşturun:
Sonra, kendimize klasöre erişim sağlamak için bir
.htaccess
dosyası oluşturmamız gerekiyor. Bu, Drupal'ın/modules
klasörüne doğrudan erişimi reddetmesi nedeniyle gereklidir.
Yukarıdaki yapılandırma, /modules içinde bir dosya talep ettiğimizde / klasörü için kuralları uygulayacaktır. Bu iki dosyayı captcha klasörüne kopyalayın ve bir arşiv oluşturun.
Web sitesine yönetici erişimimiz olduğunu varsayarsak, yan menüde
Yönet
ve ardındanGenişlet
seçeneğine tıklayın. Sonra,+ Yeni modül yükle
butonuna tıklayın ve bizi yükleme sayfasına yönlendirecek, örneğinhttp://drupal-site.local/admin/modules/install
Backdoored Captcha arşivine gidin veYükle
butonuna tıklayın.Yükleme başarılı olduktan sonra, komutları çalıştırmak için
/modules/captcha/shell.php
adresine gidin.
Drupal'ı Konfigürasyon senkronizasyonu ile Backdoorlamak
Paylaşan: Coiffeur0x90
Bölüm 1 (Media ve Media Library aktivasyonu)
Genişlet menüsünde (/admin/modules), zaten yüklenmiş gibi görünen eklentileri etkinleştirebilirsiniz. Varsayılan olarak, Media ve Media Library eklentileri etkin görünmüyor, bu yüzden bunları etkinleştirelim.
Aktivasyondan önce:
Aktivasyondan sonra:
Bölüm 2 (Configuration synchronization özelliğinden yararlanma)
Drupal konfigürasyon girişlerini dökmek (ihracat) ve yüklemek (ithalat) için Configuration synchronization özelliğinden yararlanacağız:
/admin/config/development/configuration/single/export
/admin/config/development/configuration/single/import
Patch system.file.yml
İlk giriş olan allow_insecure_uploads
'ı yamanlamaya başlayalım:
Dosya: system.file.yml
Şuna:
Dosya: system.file.yml
Yamanla field.field.media.document.field_media_document.yml
Ardından, ikinci girişi file_extensions
olarak yamalayın:
Dosya: field.field.media.document.field_media_document.yml
Şuna:
Dosya: field.field.media.document.field_media_document.yml
Bu blog yazısında kullanmıyorum ama
file_directory
girişinin keyfi bir şekilde tanımlanabileceği ve bir yol geçişi saldırısına karşı savunmasız olduğu not edilmiştir (bu nedenle Drupal dosya sistemi ağacında yukarı geri gidebiliriz).
Bölüm 3 (özellik Belge Ekle kullanımı)
Son adım en basit olanıdır ve iki alt adıma ayrılmıştır. İlk adım, Apache direktiflerini kullanmak ve .txt dosyalarının PHP motoru tarafından yorumlanmasına izin vermek için bir .htaccess formatında dosya yüklemektir. İkinci adım, yükleyeceğimiz yükü içeren bir .txt dosyasıdır.
Dosya: .htaccess
Neden bu hile havalı?
Çünkü Webshell (biz buna LICENSE.txt diyeceğiz) Web sunucusuna yüklendikten sonra, komutlarımızı $_COOKIE
aracılığıyla iletebiliriz ve bu, Web sunucu günlüklerinde, bir metin dosyasına yapılan meşru bir GET isteği olarak görünecektir.
Webshell'imize neden LICENSE.txt adını veriyoruz?
Basitçe, örneğin core/LICENSE.txt dosyasını alırsak (ki bu dosya zaten Drupal çekirdeğinde mevcuttur), 339 satır ve 17.6 KB boyutunda bir dosyamız var, bu da ortasına küçük bir PHP kodu eklemek için mükemmel (çünkü dosya yeterince büyük).
Dosya: Yamanmış LICENSE.txt
Bölüm 3.1 (dosya yükle .htaccess)
Öncelikle, Apache direktiflerini içeren dosyamızı yüklemek için Belge Ekle (/media/add/document) özelliğini kullanıyoruz (.htaccess).
Bölüm 3.2 (dosya yükle LICENSE.txt)
Ardından, bir lisans dosyası içinde gizli bir Webshell yüklemek için tekrar Belge Ekle (/media/add/document) özelliğini kullanıyoruz.
Bölüm 4 (Webshell ile etkileşim)
Son bölüm, Webshell ile etkileşimde bulunmaktan oluşmaktadır.
Aşağıdaki ekran görüntüsünde gösterildiği gibi, Webshell'imiz tarafından beklenen çerez tanımlı değilse, bir Web tarayıcısı aracılığıyla dosyayı sorguladığımızda aşağıdaki sonucu alıyoruz.
Saldırgan çerezi ayarladığında, Webshell ile etkileşimde bulunabilir ve istediği herhangi bir komutu çalıştırabilir.
Ve loglarda görebileceğiniz gibi, yalnızca bir txt dosyasının talep edildiği görünmektedir.
Bu makaleyi okumak için zaman ayırdığınız için teşekkür ederim, umarım size bazı shell'ler elde etmenizde yardımcı olur.
Last updated