İçeriğe atla
0 XP 0
0/5

Puan ders bitince hesaba yazılır. Bu dersi tamamlayınca +55 XP alacaksın. Giriş yapmadan ilerlersen puan yalnız bu tarayıcıda durur.

9 dk · 55 XP · 5 etkinlik

XML dış varlık (XXE)

XML belgesi, kendi içinde yeniden kullanılabilir kısayollar tanımlayabilir; bunlara varlık (entity) denir. Belge Türü Tanımı (DTD) bölümünde bir varlık, sabit bir metne ya da dış bir kaynağa bağlanır. Dış varlık (external entity), ayrıştırıcıya bu kısayolu kullanınca şu dosyayı ya da adresi oku der. Standart bir XML ayrıştırıcısı, varsayılan ayarlarla bu talimatı yerine getirir. Altay Kargo'nun toplu sipariş ucu, iş ortaklarının yüklediği XML dosyasını ayrıştırıp sipariş listesine dönüştürüyor olsun. Dosyanın başına bir DTD bloğu ve dış varlık tanımı eklenirse, ayrıştırıcı o varlığı her gördüğü yerde sunucudaki bir dosyanın içeriğiyle değiştirir. Sipariş listesi alanında beklenmedik biçimde bir yapılandırma dosyasının içeriği belirir.

Kök neden yine tanıdıktır: ayrıştırıcı, belge içindeki bir talimatı veriyle aynı kanaldan okur ve veri sanılan kısım aslında bir komuttur. Fark, komutun bu kez dosya okumaya ya da ağa istek atmaya kadar uzanmasıdır; dış varlık tanımı bir adres de taşıyabilir, bu durumda XXE, SSRF'e dönüşür. CWE bu sınıfı CWE-611 olarak kaydeder. OWASP, XXE'yi genelde güvenlik yanlış yapılandırması başlığı altında ele alır, çünkü kök sorun çoğunlukla ayrıştırıcının varsayılan ayarıdır. Aynı zayıflık, ayrıştırıcıyı çağıran her entegrasyonda; e-posta eki, harita dosyası, ofis belgesi gibi XML tabanlı her girişte tekrar eder.

<?xml version="1.0"?>
<!DOCTYPE siparis [
  <!ENTITY disvarlik SYSTEM "file:///etc/altaykargo/gizli.conf">
]>
<siparis>
  <musteri>&disvarlik;</musteri>
</siparis>
SYSTEM anahtar sözcüğü, ayrıştırıcıya dosyayı oku ve içeriğini &disvarlik; ile değiştir der.