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

Similar CVE Analyses

See the impact of our cybersecurity solutions on businesses through real projects. Each case study details our tailored approaches to our clients' needs and the comprehensive solutions we provide against threats. Discover the success and value of our security strategies.

WHAT HAVE WE ACHIEVED?

WHAT HAVE WE ACHIEVED?

WHAT HAVE WE ACHIEVED?

We ensure your safety with numbers.

We ensure your safety with numbers.

We ensure your safety with numbers.

With years of experience, our expert team, and our success rate, we protect your business against cyber threats.

With years of experience, our expert team, and our success rate, we protect your business against cyber threats.

With years of experience, our expert team, and our success rate, we protect your business against cyber threats.

15+ Years

Experience

10+

Cyber Security Specialist

100%

Success Rate

400+

Successful Operation

FREQUENTLY ASKED QUESTIONS

FREQUENTLY ASKED QUESTIONS

FREQUENTLY ASKED QUESTIONS

Let's answer the questions in your mind.

You can find the answers to frequently asked questions below.

What should I work on for cybersecurity?

How to choose a career in cybersecurity?

Which certifications are important in cybersecurity?

Which programming languages should I learn in cybersecurity?

What is the difference between Red Team and Blue Team in cybersecurity?

What should I work on for cybersecurity?

How to choose a career in cybersecurity?

Which certifications are important in cybersecurity?

Which programming languages should I learn in cybersecurity?

What is the difference between Red Team and Blue Team in cybersecurity?

What should I work on for cybersecurity?

How to choose a career in cybersecurity?

Which certifications are important in cybersecurity?

Which programming languages should I learn in cybersecurity?

What is the difference between Red Team and Blue Team in cybersecurity?

defendzero

DefendZero has provided comprehensive services in the field of cybersecurity across many different sectors for years. By ensuring the security of institutions in finance, health, education, and many other sectors, we have protected them against potential threats.

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

defendzero

DefendZero has provided comprehensive services in the field of cybersecurity across many different sectors for years. By ensuring the security of institutions in finance, health, education, and many other sectors, we have protected them against potential threats.

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

defendzero

DefendZero has provided comprehensive services in the field of cybersecurity across many different sectors for years. By ensuring the security of institutions in finance, health, education, and many other sectors, we have protected them against potential threats.

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