JSON Injection Nedir?
JSON Injection, kötü niyetli bir kullanıcının uygulamadaki JSON verilerine müdahale etmesiyle oluşan bir güvenlik açığıdır. Uygulamanın davranışını değiştirmek, XSS veya yetki yükseltme gibi saldırılar yapmak mümkün olabilir.
İki ana türü vardır:
- Server-Side JSON Injection
- Client-Side JSON Injection
JSON Hijacking Nedir?
Bir kullanıcı login durumdayken, saldırgan onu sahte bir siteye yönlendirir. JSON dosyasını <scrip src> ile çeker ve çerezleri veya hassas bilgileri çalmaya çalışır. Bu yöntem XSSI ve CSRF'nin birleşimi gibidir.
Server-Side JSON Injection Örneği (PHP)
Kullanıcının gönderdiği input:
Sonuçta oluşan JSON:
"json_decode()" son accountType'ı alır. Kullanıcı admin olur
Client-Side JSON Injection (JS)
Zararlı JSON girdisi:
Eval çalışır > alert(document.cookie) > XSS olur
JSON Injection'dan Nasıl Korunulur?
JSON enjeksiyonlarını önlemenin temel yolu, her zamanki gibi kullanıcı verisini düzgünce filtrelemekten geçer. Bu hem sunucu hem de istemci tarafı için geçerlidir.
Sunucu tarafında, veriler JSON’a çevrilmeden önce mutlaka temizlenmeli. Java gibi dillerde OWASP’in JSON Sanitizer kütüphanesi bu iş için kullanılabilir. Ama en sağlıklısı, JSON’u elle string olarak yazmak yerine, framework’ün güvenli metotlarıyla üretmektir.
İstemci tarafında ise eval() fonksiyonundan kesinlikle uzak durulmalı. Çünkü içine gömülü kötü amaçlı kod varsa doğrudan çalıştırılır. Bunun yerine her zaman JSON.parse() kullanılmalı. Ayrıca Content Security Policy (CSP) ile eval gibi riskli işlemler baştan engellenebilir.
Sorusu olan sorabilir
Konum bu kadardı. İlginiz için teşekkür ederim, iyi forumlar dilerim : )
JSON Injection, kötü niyetli bir kullanıcının uygulamadaki JSON verilerine müdahale etmesiyle oluşan bir güvenlik açığıdır. Uygulamanın davranışını değiştirmek, XSS veya yetki yükseltme gibi saldırılar yapmak mümkün olabilir.
İki ana türü vardır:
- Server-Side JSON Injection
- Client-Side JSON Injection
JSON Hijacking Nedir?
Bir kullanıcı login durumdayken, saldırgan onu sahte bir siteye yönlendirir. JSON dosyasını <scrip src> ile çeker ve çerezleri veya hassas bilgileri çalmaya çalışır. Bu yöntem XSSI ve CSRF'nin birleşimi gibidir.
Server-Side JSON Injection Örneği (PHP)
PHP:
[/SIZE][/COLOR]
[COLOR=rgb(209, 213, 216)][SIZE=4]// Kullanıcı verisi JSON’a yazılıyor[/SIZE][/COLOR][/SIZE][/COLOR]
[COLOR=rgb(65, 168, 95)][SIZE=4][COLOR=rgb(65, 168, 95)][SIZE=4]$json = '{"accountType":"user","userName":"'.$_GET['userName'].'","pass":"'.$_GET['pass'].'"}';
Kullanıcının gönderdiği input:
Perl:
john%22,%22accountType%22:%22admin%22
Sonuçta oluşan JSON:
JSON:
{
"accountType":"user",
"userName":"kryzlo",
"accountType":"admin",
"pass":"1234"
}
Client-Side JSON Injection (JS)
JavaScript:
var result = eval("(" + json_string + ")");
document.getElementById("accountType").innerText = result.accountType;
Zararlı JSON girdisi:
JSON:
user"});alert(document.cookie);({"accountType":"user
JSON Injection'dan Nasıl Korunulur?
JSON enjeksiyonlarını önlemenin temel yolu, her zamanki gibi kullanıcı verisini düzgünce filtrelemekten geçer. Bu hem sunucu hem de istemci tarafı için geçerlidir.
Sunucu tarafında, veriler JSON’a çevrilmeden önce mutlaka temizlenmeli. Java gibi dillerde OWASP’in JSON Sanitizer kütüphanesi bu iş için kullanılabilir. Ama en sağlıklısı, JSON’u elle string olarak yazmak yerine, framework’ün güvenli metotlarıyla üretmektir.
İstemci tarafında ise eval() fonksiyonundan kesinlikle uzak durulmalı. Çünkü içine gömülü kötü amaçlı kod varsa doğrudan çalıştırılır. Bunun yerine her zaman JSON.parse() kullanılmalı. Ayrıca Content Security Policy (CSP) ile eval gibi riskli işlemler baştan engellenebilir.
Sorusu olan sorabilir
Konum bu kadardı. İlginiz için teşekkür ederim, iyi forumlar dilerim : )


