Hoş geldiniz, Ziyaretçi
Kullanııcı Adı: Parola: Bilgilerim hatırlansın
  • Sayfa:
  • 1

KONU:

'mysql_history' Açıklığı ve Önlemi 5 yıl 2 ay önce #209

MySQL veritabanlarının kullanımı özellikle bireysel amaçlı web uygulamalarında oldukça yaygındır. Bireysel uygulamalarda veritabanı güvenliği geri planda kalmakta ve basit yapılandırmalar bile göz ardı edilebilmektedir. Bu durum saldırganların işini büyük ölçüde kolaylaştırmaktadır.

Bu makalede Linux işletim sistemi üzerinde kurulu olan MySQL 5.1 ve önceki sürümlerinde bulunan 'mysql_history' açıklığı anlatılmaktadır. Ayrıca bu açıklığın nasıl kapatılacağı makalenin son bölümünde yer almaktadır.

1. 'mysql_history' Açıklığının Kullanımı
MySQL veritabanı yönetim sisteminin 5.1 ve önceki sürümlerinde, kullanıcılar tarafından çalıştırılan komutlar 'mysql_history' dosyasında kayıtlı tutulur. MySQL artık 4.1 ve 5.0 sürümlerini desteklememektedir. Bu makalenin yazıldığı tarihte MySQL 5.1 için en güncel sürüm numarası 5.1.73'tür.[1] MySQL 5.1.73 ve yeni sürümlerinde 'mysql_history' açıklığı bulunmamaktadır. Bu açıklık Linux işletim sistemlerindeki 'bash_history' (komut geçmişinin tutulması) yapısından kaynaklanmaktadır. Windows işletim sistemlerinde farklı bir yapı kullanıldığı için bu açıklık bulunmamaktadır.

'mysql_history' sayesinde veritabanı kullanıcısı yukarı-aşağı yön tuşlarıyla geçmişte kullandığı komutları rahatlıkla tekrar getirebilir. İşletim sistemi kapatılıp tekrar açıldığında bu kayıtlar silinmez ve bu kayıtların tamamı, içinde parola bulunsa dahi açık metin halinde saklanır.

Senaryoda kullanılan veritabanı MySQL 5.1.69 sürümündedir. Bu veritabanı Ubuntu 10.11 işletim sistemine sahip makine üzerine kurulmuştur. Veritabanı ön tanımlı yapılandırma ayarlarıyla kurulup hiçbir değişiklik yapılmamıştır.

Ubuntu işletim sistemi kullanıcısı olan 'test' üzerinden veritabanı hesabıyla MySQL'e giriş yapıldıktan sonra Şekil 1'de gösterilen komutlar çalıştırılmıştır.

1.png
Şekil 1. Veritabanı Kullanıcısı Tarafından Çalıştırılan Komutlar

İşletim sistemindeki 'test' kullanıcısının parolasını ele geçirebilen veya 'root' hakkına erişebilen bir saldırgan, veritabanı hesabını bilmeden bu kullanıcının çalıştırdığı tüm komutları görebilir. Bunun için Şekil 2'de gösterilen 'cat ~/.mysql_history' komutunu çalıştırması yeterlidir. Bu dosya her kullanıcı için '/home/user_name' klasörü içinde bulunur. Dosya isminin başındaki nokta işaretinden de anlaşılabileceği gibi gizli olarak saklanır ve 'ls -a' komutu ile bu gizli dosya gösterilebilir.

2.png
Şekil 2. 'mysql_history' Dosyasının İçeriğinin Görüntülenmesi

Saldırgan veritabanı tabloları, prosedürleri ve diğer nesneleri hakkında bilgi edinebilir. Ayrıca çalıştırılan komutlar içinde veritabanı kullanıcılarına ait parola bilgileri varsa, saldırgan bu bilgileri kullanarak veritabanına erişim sağlayabilir. Bu açıklıktan elde edilen veritabanı hesabıyla erişim Şekil 3'te gösterilmiştir.

3.png
Şekil 3. ”mysql_history” Dosyasından Elde Edilen Kullanıcıyla Veritabanına Erişim

2. 'mysql_history' Açıklığının Önlemi

Bu açıklık 3 farklı şekilde kapatılabilir:

İlk yöntem Ubuntu üzerindeki 'mysql_history' çevresel değişkenini yapılandırmaktır. Bunun için 'export MYSQL_HISTFILE=/dev/null' komutu çalıştırılmalı ve bu değişken kontrol edilmelidir. Bu yapılandırmadan sonra veritabanında çalıştırılan komutlar kaydedilmeyecektir. Daha önce kaydedilen komutların silinmesi için 'mysql_history' dosyası silinmelidir.

İkinci yöntem 'mysql_history' dosyası '/dev/null' yapısına yönlendirecek bir link oluşturarak, komutların görüntülenmesi engellenir.[2][3] '/dev' dizini altındaki 'null' dosyası özel bir yapıya sahiptir. Bu yapıya gönderilen çıktılar silinir. Linux işletim sistemlerinde, istenmeyen çıktılar 'kara delik' olarak adlandırılan '/dev/null' yapısına yönlendirilir. Bu sayede komutların fazla veya olumsuz çıktılardan korunması sağlanır. Ancak eski kayıtlar silinmesi için 'mysql_history' dosyası silinmelidir.


Açıklığın kapatmak için anlatılan ilk 2 yöntem farklı yollar kullanan benzer çözümlerdir. Anlatılan ilk 2 yöntem için gerekli komutlar Şekil 4'te gösterilmiştir.

4.png
Şekil 4. Açıklığın Önlemi

Gerekli yapılandırmalar uygulandıktan sonra 'cat ~/.mysql_history' komutunun çalışmadığı Şekil 5'te görülmüştür.

5.png
Şekil 5. 'mysql_history' Dosyasının Açılamaması


Bu açıklığın kapatılması için son yöntem, kullanılan veritabanının en güncel yamaları uygulanarak, sürümünün yükseltilmesidir.

Lütfen sohbete katılmak için Giriş ya da Hesap açın.

  • Sayfa:
  • 1
Sayfa oluşturma süresi: 0.224 saniye

NDK Hoş Geldin

Ders Kafe Anketi

Uzaktan Eğitim sistemini hangi cihazlardan takip ediyorsunuz?

loader
Bu anket sona erdi Oca 04 2021 at 08:00 PM
Tüm anketleri görüntüleyin