İçindekiler:
XML External Entity (XXE) Nedir ?
XXE bir saldırganın uygulamanın kendisinin erişebileceği herhangi bir backend veya external sistemle etkileşime girmesine izin verir ve bu sayede saldırgan sistemden dosya okuyabilir. Ayrıca RCE,SSRF veya DOS gerçekleştirmek için de kullanılabilir. iki tür XXE saldırısı vardır.
1) in-band : Bant içi xxe saldırısı saldırganın xxe payloaduna anında yanıt alabildiği saldırıdır.
2) out-of-band : blind xxe olarak da adlandırılır. Web uygulamasından direkt yanıt gelmez ve saldırgan xxe payloadının çıktısını başka bir dosyaya veya kendi sunucusuna yansıtması gerekir.
İlgili sunucunun şöyle bir xml verisi aldığını varsayalım:
381
Her xml dökümanı şu şekilde başlar:
note.dtd dosyasının içeriği şu şekilde olsun :
]>
Sunucuya gönderilen xml verisi de bu şekilde :
falcon feast hacking XXE attack
!DOCTYPE note kısmı root elementi tanımlar. Bu bilgi note.dtd de mevcut.
!ELEMENT to,from,heading,bodykısımlarının tipi #PCDATA şeklinde tanımlanmıştır.
Örnek XML payloadı şu şekilde :
]>&read;
root elementi tanımlandıktan sonra SYSTEM ile sunucudan /etc/passwd dosyası okunur ve read değişkenine aktarılır. Daha sonra bu root elementi içerisinde belirtilip ekrana yazılır.
XXE zafiyetinden ssrf elde etmek de mümkün demiştik:
]> ]>
Task 1 Deploy the VM:
Makineyi deploy etmekle başlayalım.
Task 2 eXtensible Markup Language:
Soru 1 : Full form of XML
Cevap : extensensible markup language
Soru 2 : Is XML case sensitive?
Cevap : yes
Soru 3 : Is it compulsory to have XML prolog in XML documents?
Cevap : no
Soru 4 : Can we validate XML documents against so schema?
Cevap : yes
Soru 5 : How can we specify XML version and encoding in XML document?
Cevap : xml prolog
Task 3 DTD:
Soru 1 : With what extension do you save a DTD file?
Cevap : dtd
Soru 2 : How do you define a new ELEMENT?
Cevap : !ELEMENT
Soru 3 : How do you define a ROOT element?
Cevap : !DOCTYPE
Soru 4 : How do you define a new ENTITY?
Cevap : !ENTITY
Task 4 XXE payload:
No answer needed.
Task 5 Exploiting:
Soru 1 : What is the name of the user in /etc/passwd
Hedef : 10.10.29.33
Bizi şöyle bir sayfa karşılıyor.

Payload kısmına XXE payloadımı yazdıktan sonra request e burp ile müdehale edip çıktısını görüyorum.
]>&goster;

Cevap : falcon
Soru 2 : What are the first 18 characters for falcon’s private key
falconun private key’i .ssh dizini altında bulunuyor. bu yüzden payloadıma bu bilgiyi ekleyip private key e ulaşıyorum.
]>&cokgizli;

Cevap : MIIEogIBAAKCAQEA7b
