Geforceerd browsen
Een niet-gekoppelde URL is geen toestemmingscontrole.
Wat is Geforceerd browsen?
Er bestaat een route, niets in de interface linkt ernaar, en het antwoordt iedereen die het pad raadt. Het geheimhouden van mapnamen is geen toegangscontrole. Zonder account voert u een woordenlijst voor het ontdekken van inhoud uit op een mensenplatform en vindt u een interne exportroute die 200 OK antwoordt met de volledige werknemerslijst, geen cookie of API-sleutel vereist. Vervolgens voeg je de poort toe die het nooit heeft gehad, een sessie- en rolcontrole voordat een enkele rij is gelezen, en herhaal je het verzoek naar een 403.
Wat je leert in Geforceerd browsen
- Maak onderscheid tussen gedwongen browsen en escalatie van bevoegdheden: de eerste gaat uit van geen sessie, de laatste gaat uit van de verkeerde sessie
- Herken dat een padsegment zoals <code>/internal/</code> of <code>/admin/</code> een conventie is en geen controle; de handler is de poort
- Begrijp dat tools voor het ontdekken van inhoud (ffuf, dirbuster, gobuster) padgeheim binnen enkele minuten waardeloos maken
- Pas een sessie-aanwezigheids- en rolcontrole toe bovenaan elke handler die gevoelige gegevens leest of schrijft
- Controleer de codebasis voor weesroutes die voor één tool zijn verzonden, zijn vervangen en nooit zijn verwijderd
Geforceerd browsen — Trainingsstappen
-
Maak het doel groter
Bob is een financieel gemotiveerde aanvaller. Hij vindt bedrijven die iets op het openbare internet hebben achtergelaten en verkoopt vervolgens wat hij eruit haalt of gebruikt het om aan hun geld te komen. Vandaag richt hij zich op Kelvara, een mensenplatform waarop bedrijven hun salarisadministratie en HR beheren. Hij begint waar iedereen dat zou doen, op de openbare site, en neemt het bedrijf in kaart voordat hij een manier zoekt om binnen te komen.
-
Breng de API-structuur in kaart
Niets op de openbare site is ongebruikelijk: een aanmelding, een productrondleiding, een ondersteuningspagina. Maar een app beantwoordt veel meer paden dan waarnaar hij linkt. Alles wat een ontwikkelaar bereikbaar heeft gelaten, blijft bereikbaar voor iedereen die op zoek gaat, dus brengt Bob elk pad in kaart waar de API van de portal daadwerkelijk op reageert.
-
Open de exportroute
Het enige pad dat zonder uitdaging beantwoordde, is een URL zoals alle andere. Bob heeft hiervoor geen gereedschap nodig: hij typt het ontdekte pad rechtstreeks in de browser en drukt op Enter, net als bij het openen van een willekeurige pagina.
-
De hele map, geen login
Het antwoord is geen foutpagina. De browser geeft het inline weer: Kelvara's volledige werknemerslijst, duizenden records, overhandigd aan een verzoek waarvoor helemaal geen aanmelding nodig was.
-
Kennis check
Je zag hoe een geraden URL gevoelige gegevens retourneerde naar een verzoek zonder inloggegevens. Leg vast waarom het eindpunt bereikbaar was.
-
De DLP-waarschuwing komt binnen
Jij bent eigenaar van Kelvara's mensenportaal. Van de ene op de andere dag werd de monitoring van uitgaand gegevensverlies geactiveerd als gevolg van een reactie die het volledige werknemersbestand, inclusief SSN's en salarissen, buiten het netwerk bracht. Security Operations heeft u de details per e-mail gestuurd.
-
Open de exporthandler
De handler die de werknemersexport opbouwt, is wat u moet veranderen. Open het en kijk wat het doet tussen het binnenkomen van het verzoek en het uitgaan van de gegevens.
-
Zoek de ontbrekende poort
De handler leest elk personeelsdossier en stuurt het terug. Lees het van boven naar beneden en zoek naar de toegangscontrole. Er staat niets tussen het verzoek en de vraag.
-
Kennis check
Je hebt de handler van verzoek naar gegevens zien rennen, met niets ertussenin. Leg vast wat een route als deze feitelijk privé houdt.
-
Voeg de toegangscontrole toe
Plaats een echt hek bovenaan de handler. Het lost de sessie van de beller op, bevestigt dat deze de rol hr_admin heeft en wijst al het andere af voordat de databasequery ooit wordt uitgevoerd. Het pad blijft hetzelfde; het vinkje, en niet de mapnaam, beschermt nu de gegevens.
Dekking van beveiligingsframeworks
OWASP Top 10
- A01:2025 Broken Access Control
- A01:2021 Broken Access Control
CWE
- CWE-425 Direct Request ('Forced Browsing')
- CWE-862 Missing Authorization
CIS Controls
- CIS 16 Application Software Security
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- PR.PS Platform Security