Out-of-Band SQL Injection Nedir? Nasıl Gerçekleştirilir? Güvenlik Önlemleri Nasıl Alınır

cua5wkl.jpg

Out-of-Band SQL Injection Nedir?

Hepinizin bildiği gibi SQL injection saldırıları, web uygulamalarındaki savunmasızlıklardan yararlanarak, saldırganların uygulamaya zarar vermek veya gizli bilgileri ele geçirmek için SQL sorguları enjekte etmesine izin veren bir saldırı türüdür. Out-of-Band SQL Injection, saldırganların, sorguların gerçekleştirilmesini takip etmek için ayrı bir kanal kullanarak verileri görüntülemesini sağlar.

Bu saldırı türünde, saldırgan uygulamanın dışında bir kanal kullanarak veri çalar. Örneğin, saldırgan bir SQL sorgusuna /etc/passwd dosyasını okuyacak bir işlev ekleyebilir. Ardından, uygulamanın çıktısını kontrol ederek, saldırgan /etc/passwd dosyasındaki verilere erişebilir.


yrx4499.jpg

Out-of-Band SQL Injection Saldırısı Nasıl Gerçekleştirilir?

Out-of-Band SQL Injection saldırıları, web uygulamalarındaki savunmasızlıklardan yararlanarak gerçekleştirilir. Saldırganlar, uygulamaların girdi doğrulama işlevlerini aşmak için SQL kodları enjekte ederler. Bu enjekte edilmiş kodlar, uygulamanın veritabanıyla etkileşim kurmasına neden olur.

Out-of-Band SQL Injection saldırısı, sorguların gerçekleştirilmesini takip etmek için ayrı bir kanal kullanarak gerçekleştirilir. Saldırganlar, uygulamanın dışında bir kanal kullanarak, özellikle savunmasızlığın kurban ağda uzak bir konumda bulunduğunda veri görüntülemesini sağlar.


nvu1jpr.jpg

Out-of-Band SQL Injection Örneği


Bir örnek vermek gerekirse, aşağıdaki SQL sorgusunu ele alalım:

Kod:
SELECT * FROM Products WHERE ProductID = <input>


Bu sorgu, kullanıcı tarafından belirtilen ProductID parametresine göre ürün bilgilerini getirir. Saldırganlar, bu sorguda bir UNION sorgusu enjekte ederek, uygulamanın veritabanından farklı bir bilgi kaynağına erişmesini sağlayabilirler. Örneğin, saldırgan aşağıdaki kodu kullanarak /etc/passwd dosyasındaki bilgileri çalabilir:

Kod:
' UNION SELECT username, password FROM mysql.user INTO OUTFILE '/var/www/html/data.txt'--


Bu kod, mysql.user tablosundan kullanıcı adları ve şifreleri seçer ve bunları `/var/www/html/data.txt` dosyasına kaydeder. Saldırgan, daha sonra bu dosyayı dışarı aktararak, kullanıcı adları ve şifreleri çalabilir.

Out-of-Band SQL Injection saldırıları, bir HTTP isteği aracılığıyla gerçekleştirilebilir. Aşağıdaki örnekte, saldırgan, ProductID parametresine aşağıdaki kodu enjekte ederek, bir HTTP GET isteği gönderir:

Kod:
http://example.com/products.php?ProductID=1' UNION SELECT username, password FROM mysql.user INTO OUTFILE '/var/www/html/data.txt'--

Bu istek, uygulamanın Products tablosundaki ProductID sütununu 1'e eşleştirdiğinde, önceki SQL sorgusunu çalıştırır. Saldırgan, bu isteği gönderdikten sonra, /var/www/html/data.txt dosyasını kontrol ederek, kullanıcı adları ve şifreleri alabilir.


otlo6q7.jpg

Out-of-Band SQL Injection Güvenlik Önlemleri


Out-of-Band SQL Injection saldırıları, genellikle uygulamaların girdilerini yeterince sınırlandıramadığı ve doğru bir şekilde doğrulamadığı durumlarda gerçekleşir. Bu nedenle, bu açık, genellikle girdi doğrulama işlemlerindeki hatalardan kaynaklanır.

Örneğin, uygulamalar, kullanıcıların girdi yapabileceği alanlara, örneğin bir web formu alanına, yeterince sınırlandırma ve doğrulama yapmadıklarında, saldırganlar girdileri manipüle ederek, SQL enjeksiyonu yapabilirler.

Out-of-Band SQL Injection saldırılarının önlenmesi için, uygulamaların girdileri doğru bir şekilde sınırlandırması ve doğrulaması gerekmektedir. Bu, özellikle web formlarının tasarlanması ve veritabanı sorgularının oluşturulması aşamasında dikkat edilmesi gereken bir noktadır.

Bir başka önlem ise, uygulama güvenliği açısından önemli olan, uygulamanın dışındaki kanalların kullanımını kısıtlamaktır. Verilerin dışarı aktarılması gerekirse, yalnızca güvenli bir API kullanarak ve doğru bir şekilde kimlik doğrulama ve yetkilendirme sağlayarak yapılmalıdır.

Bununla birlikte, güvenlik açığına sahip bir web uygulamasını güncellemek ve güvenlik açıklarını arındırmak en önemli önlemdir. Bu nedenle, web uygulamaları düzenli olarak güvenlik testlerine tabi tutulmalı ve güncellenmelidir.

Özetle, Out-of-Band SQL Injection saldırılarının önlenmesi için, girdi doğrulama işlemlerinin doğru bir şekilde yapılması, veritabanı sorgularının oluşturulması aşamasında dikkatli olunması, uygulamanın dışındaki kanalların kullanımının kısıtlanması ve web uygulamalarının düzenli olarak güvenlik testlerine tabi tutulması gerekmektedir.

PHP programlama dilinde, SQL Injection açığı genellikle dinamik olarak oluşturulan SQL sorgularında kullanıcı girdilerinin doğru şekilde filtrelenmemesi veya düzgün bir şekilde temizlenmemesi nedeniyle oluşur. Örneğin, aşağıdaki kod örneği kullanıcı tarafından sağlanan verileri doğru bir şekilde işlemez ve SQL Injection açığına neden olur:

PHP:
<?php

$userInput = $_POST['username'];

$query = "SELECT * FROM users WHERE username = '$userInput'";

$result = mysql_query($query);


while ($row = mysql_fetch_array($result)) {
  echo $row['username'] . "<br />";
}
?>



Yukarıdaki örnek kodda, kullanıcının sağladığı veri $userInput değişkeninde saklanır ve daha sonra SQL sorgusunda kullanılır. Ancak, kullanıcının sağladığı veri, doğru bir şekilde temizlenmediği için, saldırganlar tarafından manipüle edilebilir ve istenmeyen sorguların çalıştırılmasına neden olabilir.

Örneğin, bir saldırgan, kullanıcı adı alanına ' or '1'='1 gibi bir girdi gönderebilir ve bu, SQL sorgusunun şu şekilde oluşmasına neden olabilir:


Kod:
SELECT * FROM users WHERE username = '' or '1'='1'


Bu sorgu, veritabanında kullanıcı adı boş olan tüm kayıtları veya '1' = '1' koşulunun doğru olduğu tüm kayıtları döndürecektir, böylece saldırgan uygulamaya gizli veriler elde etmek veya veritabanını bozmak için erişebilir.

Bu nedenle, uygulama geliştiricileri, kullanıcı girdilerini doğru bir şekilde filtrelemek ve temizlemek için özel fonksiyonlar kullanmalıdırlar. Örneğin, PHP'de mysqli_real_escape_string() fonksiyonu kullanılarak, kullanıcı girdileri önceden işlenerek, SQL Injection saldırılarına karşı korunabilir.

ui672xb.jpg

 
Son düzenleme:

'Monster

Üye
27 Nis 2023
103
32

cua5wkl.jpg

Out-of-Band SQL Injection Nedir?

Hepinizin bildiği gibi SQL injection saldırıları, web uygulamalarındaki savunmasızlıklardan yararlanarak, saldırganların uygulamaya zarar vermek veya gizli bilgileri ele geçirmek için SQL sorguları enjekte etmesine izin veren bir saldırı türüdür. Out-of-Band SQL Injection, saldırganların, sorguların gerçekleştirilmesini takip etmek için ayrı bir kanal kullanarak verileri görüntülemesini sağlar.

Bu saldırı türünde, saldırgan uygulamanın dışında bir kanal kullanarak veri çalar. Örneğin, saldırgan bir SQL sorgusuna /etc/passwd dosyasını okuyacak bir işlev ekleyebilir. Ardından, uygulamanın çıktısını kontrol ederek, saldırgan /etc/passwd dosyasındaki verilere erişebilir.


yrx4499.jpg

Out-of-Band SQL Injection Saldırısı Nasıl Gerçekleştirilir?

Out-of-Band SQL Injection saldırıları, web uygulamalarındaki savunmasızlıklardan yararlanarak gerçekleştirilir. Saldırganlar, uygulamaların girdi doğrulama işlevlerini aşmak için SQL kodları enjekte ederler. Bu enjekte edilmiş kodlar, uygulamanın veritabanıyla etkileşim kurmasına neden olur.

Out-of-Band SQL Injection saldırısı, sorguların gerçekleştirilmesini takip etmek için ayrı bir kanal kullanarak gerçekleştirilir. Saldırganlar, uygulamanın dışında bir kanal kullanarak, özellikle savunmasızlığın kurban ağda uzak bir konumda bulunduğunda veri görüntülemesini sağlar.


nvu1jpr.jpg

Out-of-Band SQL Injection Örneği


Bir örnek vermek gerekirse, aşağıdaki SQL sorgusunu ele alalım:

Kod:
SELECT * FROM Products WHERE ProductID = <input>


Bu sorgu, kullanıcı tarafından belirtilen ProductID parametresine göre ürün bilgilerini getirir. Saldırganlar, bu sorguda bir UNION sorgusu enjekte ederek, uygulamanın veritabanından farklı bir bilgi kaynağına erişmesini sağlayabilirler. Örneğin, saldırgan aşağıdaki kodu kullanarak /etc/passwd dosyasındaki bilgileri çalabilir:

Kod:
' UNION SELECT username, password FROM mysql.user INTO OUTFILE '/var/www/html/data.txt'--


Bu kod, mysql.user tablosundan kullanıcı adları ve şifreleri seçer ve bunları `/var/www/html/data.txt` dosyasına kaydeder. Saldırgan, daha sonra bu dosyayı dışarı aktararak, kullanıcı adları ve şifreleri çalabilir.

Out-of-Band SQL Injection saldırıları, bir HTTP isteği aracılığıyla gerçekleştirilebilir. Aşağıdaki örnekte, saldırgan, ProductID parametresine aşağıdaki kodu enjekte ederek, bir HTTP GET isteği gönderir:

Kod:
http://example.com/products.php?ProductID=1' UNION SELECT username, password FROM mysql.user INTO OUTFILE '/var/www/html/data.txt'--

Bu istek, uygulamanın Products tablosundaki ProductID sütununu 1'e eşleştirdiğinde, önceki SQL sorgusunu çalıştırır. Saldırgan, bu isteği gönderdikten sonra, /var/www/html/data.txt dosyasını kontrol ederek, kullanıcı adları ve şifreleri alabilir.


otlo6q7.jpg

Out-of-Band SQL Injection Güvenlik Önlemleri


Out-of-Band SQL Injection saldırıları, genellikle uygulamaların girdilerini yeterince sınırlandıramadığı ve doğru bir şekilde doğrulamadığı durumlarda gerçekleşir. Bu nedenle, bu açık, genellikle girdi doğrulama işlemlerindeki hatalardan kaynaklanır.

Örneğin, uygulamalar, kullanıcıların girdi yapabileceği alanlara, örneğin bir web formu alanına, yeterince sınırlandırma ve doğrulama yapmadıklarında, saldırganlar girdileri manipüle ederek, SQL enjeksiyonu yapabilirler.

Out-of-Band SQL Injection saldırılarının önlenmesi için, uygulamaların girdileri doğru bir şekilde sınırlandırması ve doğrulaması gerekmektedir. Bu, özellikle web formlarının tasarlanması ve veritabanı sorgularının oluşturulması aşamasında dikkat edilmesi gereken bir noktadır.

Bir başka önlem ise, uygulama güvenliği açısından önemli olan, uygulamanın dışındaki kanalların kullanımını kısıtlamaktır. Verilerin dışarı aktarılması gerekirse, yalnızca güvenli bir API kullanarak ve doğru bir şekilde kimlik doğrulama ve yetkilendirme sağlayarak yapılmalıdır.

Bununla birlikte, güvenlik açığına sahip bir web uygulamasını güncellemek ve güvenlik açıklarını arındırmak en önemli önlemdir. Bu nedenle, web uygulamaları düzenli olarak güvenlik testlerine tabi tutulmalı ve güncellenmelidir.

Özetle, Out-of-Band SQL Injection saldırılarının önlenmesi için, girdi doğrulama işlemlerinin doğru bir şekilde yapılması, veritabanı sorgularının oluşturulması aşamasında dikkatli olunması, uygulamanın dışındaki kanalların kullanımının kısıtlanması ve web uygulamalarının düzenli olarak güvenlik testlerine tabi tutulması gerekmektedir.

PHP programlama dilinde, SQL Injection açığı genellikle dinamik olarak oluşturulan SQL sorgularında kullanıcı girdilerinin doğru şekilde filtrelenmemesi veya düzgün bir şekilde temizlenmemesi nedeniyle oluşur. Örneğin, aşağıdaki kod örneği kullanıcı tarafından sağlanan verileri doğru bir şekilde işlemez ve SQL Injection açığına neden olur:

PHP:
<?php

$userInput = $_POST['username'];

$query = "SELECT * FROM users WHERE username = '$userInput'";

$result = mysql_query($query);


while ($row = mysql_fetch_array($result)) {
  echo $row['username'] . "<br />";
}
?>



Yukarıdaki örnek kodda, kullanıcının sağladığı veri $userInput değişkeninde saklanır ve daha sonra SQL sorgusunda kullanılır. Ancak, kullanıcının sağladığı veri, doğru bir şekilde temizlenmediği için, saldırganlar tarafından manipüle edilebilir ve istenmeyen sorguların çalıştırılmasına neden olabilir.

Örneğin, bir saldırgan, kullanıcı adı alanına ' or '1'='1 gibi bir girdi gönderebilir ve bu, SQL sorgusunun şu şekilde oluşmasına neden olabilir:


Kod:
SELECT * FROM users WHERE username = '' or '1'='1'


Bu sorgu, veritabanında kullanıcı adı boş olan tüm kayıtları veya '1' = '1' koşulunun doğru olduğu tüm kayıtları döndürecektir, böylece saldırgan uygulamaya gizli veriler elde etmek veya veritabanını bozmak için erişebilir.

Bu nedenle, uygulama geliştiricileri, kullanıcı girdilerini doğru bir şekilde filtrelemek ve temizlemek için özel fonksiyonlar kullanmalıdırlar. Örneğin, PHP'de mysqli_real_escape_string() fonksiyonu kullanılarak, kullanıcı girdileri önceden işlenerek, SQL Injection saldırılarına karşı korunabilir.

ui672xb.jpg

Eline sağlık.
 
Son düzenleme:

edeben

Üye
8 Eki 2022
57
19
Normalini bilmeyen yoktur da. Bunu bilen azdır şahsen duydum ama araştırmamıştım sağolasın.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.