Drupal'ın ana çekirdeğinde bir kez daha uzaktan kod çalıştırmaya(RCE) olanak sağlayan güvenlik açığı geçtiğimiz günlerde tespit edildi. Bu sefer Drupal 8'in REST servisini hedef alan bu açıklık normal kurulum sırasında kapalı bir şekilde geliyor. Bu yazımda bu açıklık hakkında bilmeniz gerekenler ve bu açıklığın ne şekilde kullanılarak istismar sağlanabileceğini gösteren örnek bir çalışma gerçekleştirdim. Bu açıklığa karşı yapılması gerekenleri ve dikkat edilmesi gerekenleri yazımda bulabilirsiniz. 20 Şubat 2019 tarihinde Drupal Çekirde ekibi bu açıklıkla ilgili erken uyarı gerçekleştirdiler daha sonrasında CVE 2019-6340 numarası atandı.

Bu saldırının gerçekleşmesi için aşağıdaki şartlardan herhangi birini sağlaması yeterli olacaktır:

  • Web sitenizde Drupal Çekirdek 8 RESTful Web Servisi aktif olması ve "GET", "PATCH" veya "POST" isteklerine açık olması
  • diğer web servis modüllerinin aktif olması, örneğin JSON:API modülünün Drupal 8'te veya Servisler modülünün veya RESTful Web Servisinin Drupal 7'te aktif olması yeterli olacaktır.

Drupal Sunucularının Güvenliğini sağlamak için ne yapabilirim?

  1. Eğer Drupal 8.6.x versiyonunu kullanıyorsanız, Drupal 8.6.10 versiyonuna yükseltmeniz
  2. Eğer Drupal 8.5.x ve öncesi versiyonlarını kullanıyorsanız, Drupal 8.5.11 versiyonuna yükseltmeniz
  3. Eğer çok hızlı bir şekilde çözüm sağlamak istiyorsanız web servisi modüllerinizin "GET/PUT/PATCH/POST" isteklerini kapatılması tavsiye ediliyor.

Saldırganlar bu açıklığı nasıl istismar edebilir?

Öncelikli olarak Ubuntu 18.04 ve LAMP paketlerimizi sanal makinamız için simulasyon ortamını kuralım. Daha sonrasında bu makina üzerine Drupal 8.6.9 versiyonunu kurulumunu ve içerisine demo içerik hazırlandı.
demo

Saldırının gerçekleşeceği Drupal 8.6.9 makinasının detayları aşağıdaki şekilde hazırlandı:
ipa2

Drupal 8.6.9 ve öncesi versiyonlar için hazırlanan exploit'e buradan erişebilirsiniz.

Bu exploit, form dışı alanlardan gelen verinin temizlenmesi sırasında tetiklenerek uzaktan kod çalıştırılmasına olanak sağlamaktadır.
REST servisini nasıl etkilediğinin detaylarına buradan ulaşabilirsiniz : https://www.ambionics.io/blog/drupal8-rce

Exploiti reverse shell'i tetikleyecek şekilde çağırdığımızda www-data kullanıcısıyla uzaktaki makinaya erişim sağlayabiliyoruz.
reverse

Kaynaklar: