Filer: Download challenge files
Writeup: Kopi Pasta
Indledende Observationer
Jeg startede med en klassisk recon.
| |
Resultat:
22/tcp – SSH
80/tcp – HTTP
Websiden var en “ShareBin”-lignende paste-applikation med login og mulighed for at oprette pastes.
XSS blev hurtigt testet med:
| |
Men input blev korrekt escaped, så XSS var ikke en attack vector.
Recon / Kortlægning
Ved at analysere frontend fandt jeg i /static/paste.js at applikationen brugte følgende endpoint:
| |
Dette afslørede API-strukturen.
Frontend-routen:
| |
returnerede “Unauthorized” for andre brugeres pastes.
Men da jeg testede direkte mod API’et:
| |
fik jeg JSON tilbage uden nogen form for authorization-check.
Eksempel:
| |
Dette var en klassisk Broken Object Level Authorization (IDOR).
Authorization var implementeret i frontend, men ikke i backend.
Analyse
Jeg enumererede IDs direkte via API’et.
Eksempel:
| |
Ved paste ID 8 fandt jeg:
| |
Angrebet
Jeg loggede ind via SSH:
| |
Password:
| |
Shell:
| |
Systemet kørte:
| |
Brugernavnet samedit viste sig at være en reference til CVE-2021-3156 (Baron Samedit).
Jeg testede sårbarheden:
| |
Resultat:
| |
Dette indikerede, at heap corruption kunne bruges.
Efter lidt research fandt jeg en POC på github af worawit. Du kan læse mere her.
Jeg uploadede:
| |
og kørte:
| |
Efter nogle sekunder fik jeg root shell:
| |
Flaget
Som root:
| |
| |
Flag:
| |
Konklusion
Chainen var:
IDOR i
/api/v1/pastes/<id>Credential leakage via paste enumeration
SSH adgang som low-priv user
Privilege escalation via CVE-2021-3156
Root shell → flag retrieval
Sårbarhederne var:
Broken Object Level Authorization (API)
Hardcoded credentials i paste
Sårbar sudo-version
Challenge-namnet og brugernavnet samedit var et tydeligt hint mod privesc-vektoren.
Flag:
| |