Yüksek Risk

WordPress Plugin LayerSlider'da Kritik Güvenlik Açığı

CVE-2024-2879

SQL injection Nedir?

SQL Enjeksiyonu (SQL Injection), web uygulamalarında kullanılan SQL sorgularının kullanıcı girdisiyle manipüle edilmesi sonucu ortaya çıkan bir güvenlik açığıdır. Bu tür zafiyetler, geliştiricilerin kullanıcı girişlerini yeterince doğrulamaması veya temizlememesi nedeniyle oluşur. Kötü niyetli kullanıcılar, uygulamanın veritabanına kendi komutlarını ekleyerek yetkisiz veri erişimi, veri manipülasyonu veya sistemdeki başka güvenlik açıklarının sömürülmesini gerçekleştirebilirler.

Örnek: Basit SQL injection

Klasik bir SQL injection örneği, kullanıcı adı ve şifre doğrulaması sırasında meydana gelebilir. Bir uygulamanın şu şekilde bir SQL sorgusu oluşturduğunu düşünelim:

SELECT * FROM users WHERE username = 'user_input' AND password = 'password_input';

SELECT * FROM users WHERE username = 'admin' OR '1'='1' AND password = 'password_input';

Bu sorgu, 1=1 ifadesinin her zaman doğru olması nedeniyle tüm kullanıcı verilerini döndürebilir ve saldırganın sisteme giriş yapmasına olanak tanır.

SQL injection Türleri

SQL injection farklı yöntemlerle gerçekleştirilebilir:

  1. Hata Tabanlı SQL injection (Error-Based): Veritabanından gelen hata mesajları kullanılarak veri sızdırılır.

  2. Kör SQL injection (Blind SQL Injection): Veritabanından doğrudan bir çıktı alınamaz, ancak sunucunun davranışı (örneğin yanıt süresi) temel alınarak bilgi elde edilir.

  3. Zaman Tabanlı SQL injection (Time-Based SQL Injection): Veritabanı yanıt süreleri manipüle edilerek veri sızdırılır.

Zaman Tabanlı SQL injection (Time-Based SQL Injection)

Zaman tabanlı SQL injection, kör SQL injection türlerinden biridir ve çıktının doğrudan gözlemlenemediği durumlarda kullanılır. Bu yöntemde, saldırgan doğru veya yanlış bir koşulu değerlendirmek için veritabanı işlemlerinde gecikme yaratır ve sunucunun yanıt sürelerine göre sistemden bilgi elde eder.

Nasıl Çalışır?

Bu saldırı, genellikle aşağıdaki gibi bir teknikle gerçekleştirilir:

  1. SQL sorgusuna bir zaman gecikmesi fonksiyonu (ör. SLEEP() veya WAITFOR DELAY) eklenir.

  2. Koşullu bir ifade kullanılarak veritabanından veri sızdırılır.

  3. Sunucunun yanıt süresi ölçülerek sorgunun doğru ya da yanlış olduğu anlaşılır.

Örnek: Zaman Tabanlı SQL injection

Bir web uygulamasında şu tür bir SQL sorgusu olduğunu varsayalım:

SELECT * FROM users WHERE username = 'user_input';

Saldırgan, user_input olarak şu girdiyi sağlar:

' OR IF(SUBSTRING((SELECT database()),1,1)='m', SLEEP(5), 0) --

Bu şekilde bir sorguya dönüşür:

SELECT * FROM users WHERE username = '' OR IF(SUBSTRING((SELECT database()),1,1)='m', SLEEP(5), 0) -- ;

Eğer veritabanı adı 'm' ile başlıyorsa, sunucu 5 saniye boyunca bekleyecektir.

Bekleme süresine göre sorgunun doğruluğu anlaşılabilir ve bu şekilde veri sızdırılabilir.

CVE-2024-2879 – WordPress Plugin LayerSlider'da Kritik Güvenlik Açığı

WordPress için LayerSlider eklentisinin 7.9.11 ve 7.10.0 sürümleri, ls_get_popup_markup eylemi aracılığıyla SQL injection’a karşı savunmasızdır. Bu durum, kullanıcı tarafından sağlanan parametrelerde yetersiz kaçış işlemi yapılması ve mevcut SQL sorgularının yeterince hazırlanmış olmaması nedeniyle ortaya çıkmaktadır. Söz konusu güvenlik açığı, kimliği doğrulanmamış saldırganlar tarafından veritabanından hassas bilgilerin çıkarılması amacıyla mevcut sorgulara ek SQL ifadelerinin eklenmesine olanak tanımaktadır.

WordPress Eklentiler ekranından eklenti ve sürümü aşağıda gösterildiği gibi gösterilir:

Fonksiyonun ls_get_popup_markup değeri bir dize olarak alındığında, id parametresindeki temizleme eksikliği nedeniyle kötü amaçlı yüklerin herhangi bir filtreleme uygulanmaksızın gönderilmesine olanak tanınmaktadır. Bu durum aşağıda gösterilmektedir.

assets/wp/actions.php:

Sonuç olarak, özel olarak hazırlanmış bir istek, argümanın belirli bir değer alması ve parametrenin zaman tabanlı olması durumunda, /wp-admin/admin-ajax.php üzerinde zaman tabanlı SQL injection’a yol açabilir.

id[where]=(SELECT 0 FROM (SELECT SLEEP(5))qualysWAS)

request:

response:

SELECT SQL_CALC_FOUND_ROWS {$args['columns']} FROM $table (SELECT 0 FROM (SELECT SLEEP(5))qualysWAS) ORDER BY {$args['orderby']} {$args['order']}, name ASC LIMIT {$args['limit']}

Yukarıda, ana bilgisayar adı, geçerli veritabanı ve geçerli veritabanı kullanıcısı elde edilmiştir.

Aşağıda, saldırı sırasında bir Apache sunucusundan alınmış bir access.log kesiti sunulmaktadır.


Author : Halil İbrahim İLHAN

Benzer CVE Analizleri

Geliştirdiğimiz siber güvenlik çözümlerinin işletmeler üzerindeki etkisini gerçek projeler üzerinden görün. Her vaka çalışması, müşterilerimizin ihtiyaçlarına özel yaklaşımlarımızı ve tehditlere karşı sunduğumuz kapsamlı çözümleri detaylandırıyor. Güvenlik stratejilerimizin başarısını ve değerini keşfedin.

NELER BAŞARDIK?

NELER BAŞARDIK?

NELER BAŞARDIK?

Güvenliğinizi rakamlarla güvence altına alıyoruz

Güvenliğinizi rakamlarla güvence altına alıyoruz

Güvenliğinizi rakamlarla güvence altına alıyoruz

Yılların tecrübesi, uzman ekibimiz ve başarı oranımızla işletmenizi siber tehditlere karşı koruyoruz.

Yılların tecrübesi, uzman ekibimiz ve başarı oranımızla işletmenizi siber tehditlere karşı koruyoruz.

Yılların tecrübesi, uzman ekibimiz ve başarı oranımızla işletmenizi siber tehditlere karşı koruyoruz.

15+ Yıl

Tecrübe

10+

Siber Güvenlik Uzmanı

100%

Başarı Oranı

400+

Başarılı İşlem

SIKÇA SORULAN SORULAR

SIKÇA SORULAN SORULAR

SIKÇA SORULAN SORULAR

Aklınızdaki soruları yanıtlayalım

Aşağıda sıkça sorulan sorulara verdiğimiz yanıtları bulabilirsiniz.

Siber güvenlik için ne çalışmalıyım?

Siber güvenlik kariyeri nasıl seçilir?

Siber güvenlikte hangi sertifikalar önemlidir?

Siber güvenlikte hangi programlama dillerini öğrenmeliyim?

Siber güvenlikte Red Team ve Blue Team arasındaki fark nedir?

Siber güvenlik için ne çalışmalıyım?

Siber güvenlik kariyeri nasıl seçilir?

Siber güvenlikte hangi sertifikalar önemlidir?

Siber güvenlikte hangi programlama dillerini öğrenmeliyim?

Siber güvenlikte Red Team ve Blue Team arasındaki fark nedir?

Siber güvenlik için ne çalışmalıyım?

Siber güvenlik kariyeri nasıl seçilir?

Siber güvenlikte hangi sertifikalar önemlidir?

Siber güvenlikte hangi programlama dillerini öğrenmeliyim?

Siber güvenlikte Red Team ve Blue Team arasındaki fark nedir?

defendzero

DefendZero, yıllardır siber güvenlik alanında birçok farklı sektörde kapsamlı hizmetler sunmuştur. Finans, sağlık, eğitim ve daha birçok sektörde kurumların güvenliğini sağlayarak onları olası tehditlere karşı koruma altına aldık.

© 2024 defendzero. "Over the rules , leading security."

defendzero

DefendZero, yıllardır siber güvenlik alanında birçok farklı sektörde kapsamlı hizmetler sunmuştur. Finans, sağlık, eğitim ve daha birçok sektörde kurumların güvenliğini sağlayarak onları olası tehditlere karşı koruma altına aldık.

© 2024 defendzero. "Over the rules , leading security."

defendzero

DefendZero, yıllardır siber güvenlik alanında birçok farklı sektörde kapsamlı hizmetler sunmuştur. Finans, sağlık, eğitim ve daha birçok sektörde kurumların güvenliğini sağlayarak onları olası tehditlere karşı koruma altına aldık.

© 2024 defendzero. "Over the rules , leading security."