#340 – Forced browsing: gömt är inte skyddat

Forced browsing-bilden illustreras av ett landskap.

Bortom det du inte kan se på hemsidan du surfar till ligger gömda funktioner och filer som man kan hitta bara man vet namnet. Och det är precis vad angriparen letar efter. I det här avsnittet av IT-säkerhetspodden pratar Erik och Mattias om forced browsing och vad det innebär, hur det fungerar och hur det kan påverka oss som användare.  Utanför den tydligt utstakade vägen finns sårbarheterna som ger tillgång till hemliga delar och okända funktioner. Hur nyttjar angriparna Forced Browsing och hur kan man försvara sig?

Lyssna och få en djupare förståelse för fenomenet, varför det är viktigt att uppmärksamma detta angreppssätt som varit populärt i över tjugo år.

Inspelat: 2026-10-11 (publicerat 2026-10-12)
Deltagare: Mattias Jadesköld och Erik Zalitis.
Texten skrevs och sammanställdes av Erik Zalitis.

Medan du lyssnar – Vad innebär ”Forced browsing” ?

Svaret är att det är att gå till delar av en hemsida utan att klicka på länkar eller knappar. Alltså att gå dit inga vägar leder, men där det finns dolda sidor, tjänster och funktioner som svarar. Och detta är exakt vad en typisk attackerare letar efter.

Det är svårt att definiera begreppet ”Forced browsing”, tycker jag. Hur man än talar om det, kommer man vidare till var det leder och vad man kan göra med det. Så jag tror det är bra att se det som en ”inkörsport” eller ett första steg för att kunna komma vidare in i ett system man pentestar. Och för en utvecklare är det en utmaning att inte råka ladda upp känsliga filer med information och lösenord samt att hela tiden hålla ner på antalet endpoints och dokumentera deras funktion.

Här är transkriptionen av avsnittet

Mattias Jadesköld (00:00.000)
[bakgrundsmusik] Webbsidor ska ju vara enkla att skydda, kan man tycka. Se bara till att hålla koden säker, uppdatera alla komponenter och kontrollera att ingen kan logga in med då det är lösenord.

Erik Zalitis (00:18.160)
Men attackeraren bryter sig sällan in via den skyddade frontdörren, utan letar efter det som gömts eller glömts.

Mattias Jadesköld (00:26.540)
Okej, så idag ska vi tala om det som man kanske inte riktigt tror kan hittas eller inte ens vet att den finns där. Forced browsing står på agendan i IT-säkerhetspodden och jag är i vanlig ordning Mattias Jadesköld och han som har skrivit manus idag, Erik Zalitis.

Vi börjar med att konstatera att man skriver för andra, inte för sig själv

Erik Zalitis (00:40.800)
Så är det. Ja, jag menar, jag börjar bli bra på att skriva saker. Det går till och med att läsa. Sen om någon förstår det, det är en mer, det är en svårare fråga.

Mattias Jadesköld (00:49.240)
Ja, men att skriva är en dialog, Erik.

Erik Zalitis (00:53.660)
Det är en dialog med en själv, eller vad då? Nu försöker du gå lite djupt här.

Mattias Jadesköld (00:56.440)
Nej, det är en, det är en dialog med läsaren. Det tänker man inte alltid på. Man tänker ju såhär när man skriver sina stora epos att man tänker så att det är en slags monolog, att man sitter där och beskriver sina egna tankar. Men när man skriver saker så har man ju alltid en läsare som man riktas till egentligen, eller hur? Så det är en slags dialog.

Erik Zalitis (01:13.740)
Jag tycker det är konstigt att du säger det för jag har aldrig tänkt på någonting annat än att vem är det som läser och kom de förstår? Jag försöker sätta mig in i den som, som faktiskt ska läsa grejerna. Det har alltid varit så. Det, det är väldigt… Annars blir det som Knausgård. Det är ingen som förstår vad han skriver.

Mattias Jadesköld (01:27.720)
Nej men då är det ju… Ja, precis. Om du tänker så, då tänker du ju rätt. Då är det någon form av dialog kan man ju säga. Att du har liksom mottagaren eller läsaren i, i ditt,

Mattias Jadesköld (01:37.460)
i din tanke när du skriver.

Erik Zalitis (01:39.200)
[skratt] Ja, eller någonting. Ja, men absolut. Jag tror det. Men jag tror att både du och jag är lite skadade av att vi skriver till användare, till chefer, vi skriver till utvecklare, vi skriver till konsulter. Folk ska förstå vad vi skriver. Det, det-

Mattias Jadesköld (01:54.980)
Men så är det väl alltid när man skriver. När, när skriv– Ja i och för sig om man kanske antecknar någonting, så kanske man för sitt eget minne så skriver man kanske till sig själv eller, eller man kanske har någon dagbok eller någonting. Men oftast så är det att man skriver till en .

Erik Zalitis (02:07.760)
Men du, du vet hur det är med en del böcker. En del författare som kan ju skriva bara för att kolla vad smart jag är [skratt]. Det liksom, det handlar om deras favoritteorier som ska beskrivas i sida upp och sida ner som förklaras av någon av karaktärerna som bara magiskt råkar ha exakt samma åsikt som författaren och måste berätta det ungefär som det är en, en lecture, vad heter det, en föreläsning. Vem pratar så i verkligheten?

Mattias Jadesköld (02:34.480)
Ja, det är ju lite dåligt. Men det tycker jag också, om, om vi tar lite mer närmare vårt eget yrke och såna här saker. Jag tycker många oftast när man ska skriva instruktioner eller göra presentation eller beskriva tekniska komplexa saker, att man oftast glömmer bort vem som är,

Mattias Jadesköld (02:49.260)
eh, mottagaren helt enkelt. Det är bland det viktigaste. Det vill säga att om du ska skriva någonting, ja men vem är det som ska läsa det här? Och så får man ju försöka anpassa sin, den beskrivningen till det. För det viktigaste är ju att den, den på andra sidan förstår.

Erik Zalitis (03:00.960)
Ja, men det är lite floskeltoppen där. Jag, jag, jag håller med dig i sak. Jag bara tänker såhär, när jag läser, nej, inte men, men när jag läser vad andra skriver så tänker jag varför har de inte förstått att det här är det första man undrar? Jag försöker tänka sådär när jag skriver själv. Vad är det första de kommer vilja fråga? Vad är den första frågan som kommer? Skriver du inte svaret på den i första paragrafen, ja [skratt], då hjälper du inte till.

Mattias Jadesköld (03:25.840)
Nej, precis som våra lyssnare nu så tänker, skulle de inte prata om forced browsing när man har-

Erik Zalitis (03:29.540)
Nja, forced listening.

Mattias Jadesköld (03:31.180)
[skratt] Ja, precis. Men hur är läget annars då, Erik?

Erik Zalitis (03:35.860)
Jo, det är jättebra. Jag håller på och gör klart tusen andra saker, så det är lite stressigt sådär. Men jobbet imorgon och sådär. Hur är det själv?

Mattias Jadesköld (03:43.240)
Mm. Trabajo en mañana. Jobba imorgon.

Erik Zalitis (03:47.280)
Ja, precis. Mañana, mañana.

Mattias Jadesköld (03:49.620)
Ja, nej men jag har tagit det lugnt idag. Har varit och tränat lite på Friskis och sen kört,

Mattias Jadesköld (03:58.980)
eh,

Mattias Jadesköld (04:00.540)
en lugn dag hemma. Eh, men däremot så håller jag på att pilla lite med ett sånt där kortspel som jag, som jag leker lite med tanken med.

Erik Zalitis (04:07.440)
Ja, ja precis. Där ska man hacka varandra, eller hur? Du attackerar och försvarar och använder kort. Det är som Magic the Gathering eller kanske Hacking the Gathering då.

Mattias Jadesköld (04:16.800)
[skratt] Jag vet inte riktigt. Vi får se. Jag håller på med själva, eh, den här, vad ska man kalla det för, spellogiken. Och det är faktiskt mycket svårare än vad man tror att det ska bli logiskt.

Mattias Jadesköld (04:27.800)
Det som man tror är en bra idé är oftast inte det när man prov-provar en prototyp. Hur som helst, vad är forced browsing, Erik?

Erik Zalitis (04:35.680)
Ja, det är en jättebra fråga. Alltså, det handlar om att-

Mattias Jadesköld (04:38.760)
Tack.

Erik Zalitis (04:39.140)
[skratt] Tack ska du ha. Nej men alltså du går till en hemsida. Så finns det ju saker de vill att du ska göra. Logga in, skriva ett liksom meddelande eller klicka på en länk, läsa någonting. Så det finns länkar och knappar och massor med hjälp som

Erik Zalitis (04:54.420)
talar om för dig den korrekta vägen att göra det.

Mattias Jadesköld (04:57.680)
Mm, hittills är jag med dig. Mm.

Vi måste starta med att diskutera begreppet

Erik Zalitis (04:59.160)
Ja, forced browsing händer när du börjar att göra saker som sidan inte förklarar för att du faktiskt kan.

Mattias Jadesköld (05:07.200)
Mhm.

Erik Zalitis (05:07.760)
Det är såhär, ja men okej, vi säger att det finns, att du loggar in så ser en hackare. Ja men då kommer du åt en adminsida om du är administratör. Så den stora frågan är, vad händer om jag går till den här adminsidan när jag inte är administratör eller inte ens inloggad? Vad händer då?

Erik Zalitis (05:23.200)
Det är forced browsing. Du gör saker ur sekvens, du gör någonting i fel ordning bara för att se vad händer? Kan den hantera det?

Mattias Jadesköld (05:31.100)
Mm.

Mattias Jadesköld (05:32.540)
Det känns som ett ganska

Mattias Jadesköld (05:35.340)
vanligt problem om man bygger en stor komplex webbsida, att det är logikproblem på något sätt då liksom. Att den, den här typen av användare ska inte nå sådana här saker och den här, sådana här användare ska inte få göra det och sådana här saker, eller?

Erik Zalitis (05:46.780)
Nej, det är det som är problemet och det kallas också, det är lite grann vidare i diskussionen och så kallas för business logic tampering.

Erik Zalitis (05:56.820)
Det mest vanliga exemplet som de alltid tar, det är lite grann som forced browsing det här också. Det är att du… Du ska köpa en grej. Så du säger, jag tar den här för tusen spänn och så kommer svaret tillbaka. Ja, då var– Du, här är produkten för tusen spänn. Då när du svarar, jag vill ta två av den här. Då säger du, men jag vill beta– bara betala en spänn. Eh, och om produkten, om den här webbapplikationen är dåligt skriven och förväntar sig att den kan lita på svaret från användaren, ja, då kommer den att ändra priset va.

Mattias Jadesköld (06:28.468)
Okej.

Erik Zalitis (06:29.028)
Du gör saker och ting. Där ändrar du ju svaret på ett sätt som kanske hemsidan inte tillåter. Du fryser anropet, skriver om det och gör någonting annat. Eller talar om, nej men jag har redan betalat. Skicka mig till utcheckningen. Eller vad heter det? Leveransdata. Och om applikationen förväntar sig att en viss ordning, ja den kanske inte fattar det. Och så helt plötsligt slipper du betala.

Mattias Jadesköld (06:52.068)
Okej.

OWASP top 10 – en bibel för utvecklarna

Mattias Jadesköld (06:54.148)
Ja, och det här känns ju så att om man bygger, om man bygger såna här stora komplexa system måste man ju testa det helt enkelt. Men nu skulle vi säga, vi landar fortfarande i, i forced browsing här. Det– OWASP, OWASP topp tio är den här på också, eller hur? Det är så pass vanligt.

Erik Zalitis (07:07.888)
Ja, OWASP topp tio är ju en lista på de vanligaste typer av attacker, attacker som man kan göra mot en webbapplikation. Och den här har hållit sig kvar i, i liksom hö-högsta positionerna, både i 2025 som jag har för mig är den senaste och 2021 som är den innan.

Mattias Jadesköld (07:26.548)
Mm.

Erik Zalitis (07:27.228)
Det finns ju en del s-sårbarheter som är längre– Ingen längre attackerar, de försvinner från listan och det finns andra som smälter ihop. Så att man inser att det här är en väldigt allvarlig attack.

Mattias Jadesköld (07:37.508)
Ja, det här– Då handlar det också om, det är på OWASP språk kallas för broken access control, det vill säga liksom att logiken då i själva autentiseringen och auktoriseringen då är fel på sätt.

Erik Zalitis (07:48.088)
Ja, logiken förväntar sig vissa saker. Eh, om jag kan bypassa den igenom att gå direkt till någon del i flödet där jag ännu inte borde vara.

Mattias Jadesköld (07:58.528)
Mm.

Erik Zalitis (07:59.268)
Till exempel en sån här grej att jag ska logga ur. Ja, bra. Kan jag tala om för den här logout-grejen, logga ut alla användare som är inloggade. Klarar– Om jag går förbi det här som ska kolla till bara jag, kan jag gå förbi?

Erik Zalitis (08:12.508)
Förstår.

Forced browsing är angriparens inkörsport

Mattias Jadesköld (08:13.628)
Jag misstänker, utan att ha något liksom belägg för det, jag tror nog att ju mer folk kan, kan nu skriva snabba webbapplikationer med hjälp av AI, man kan få snabbt upp prototyper som fungerar, så kommer man nog stöta på ännu mer vanligt sådana här typ av logikproblem.

Erik Zalitis (08:30.768)
Ja, precis. Och jag, jag tänker den, den typen av logikproblem är en bit. Forced browsing egentligen är som en inkörsport till en massa attacker. För det jag har beskrivit här, inte exakt forced browsing, utan det är var forced browsing leder. Att du kan gå vidare och göra business logic tampering och allting. Det, det är liksom– Till mångt och mycket så är forced browsing möjligheten att direkt anropa olika saker utan att gå via hemsidelogiken. Det, det är där det där gör ont.

Mattias Jadesköld (09:01.268)
Mm. En–

Mattias Jadesköld (09:03.628)
Ja, men om, om organisationer och företag har skapat webbsidor i vad då, tjugo plus sidor då? Varför har inte det här, varför är inte det här problemet löst? Varför är det här fortfarande toppen av topplistan, OWASPs topplista? [skratt]

Erik Zalitis (09:19.368)
Jo, jag skulle huvudsakligen säga att det beror på att det för– Det är väldigt svårt att förutsäga. Kan du förutsäga att om jag ska göra A, B, C, D, i det– den ordningen. Vad händer om jag kastar om den? Har du som utvecklare tänkt på alla möjligheter? Har du tänkt på att varje steg måste kontrollera att du kommer från det föregående steget? Eller tar den emot och förutsätter, ja men du kan ju inte hitta hit till den här sidan som liksom, liksom avslutar transaktionen innan du har gått till de första sidorna. Men hackarna kan det och det är exakt det de gör.

Mattias Jadesköld (09:54.108)
Men när du gör, när du gör pentester, provar du sådana här typ av saker då?

Erik Zalitis (09:58.848)
Givetvis, det är väldigt viktigt.

Verktygen som leder dig rätt – det är enklare än du tror

Mattias Jadesköld (10:00.248)
Hur gör man det? Hur gör man det? Är det bara rent kreativt att klicka runt på alla undersajter och så vidare, eller?

Erik Zalitis (10:05.808)
När det gäller forced browsing, den, det enklaste sättet att börja där är att använda verktyg som försöker mappa upp delar av verktygen, ja av sidan som du inte kan se. Det finns verktyg som till exempel DirBuster. Det finns– Burp har en del inbyggda grejer. Så det är första grejen, bara för att mappa upp, finns det gömda filer? Vi, vi kommer till det sen. När det gäller att börja göra tampering, att man går vidare där, då gäller det att titta i, i ditt verktyg. Du kan till och med trycka F12 på din webbläsare och titta på vilka sidor laddas. Om jag klickar på inloggningen, vart skickas jag sen? Och sen mappar du upp det hela. Och sen kan du göra en del logiska slutledningar. Om det finns ett API som har en metod som heter till exempel modify,

Erik Zalitis (10:51.728)
eller om du har ett, att du använder kommandot put för att ändra någonting. Ja, vad händer om jag skickar delete? Det finns inte angivet att det går att göra. Kan jag radera mina egna grejer? Kan jag radera andra personers grejer? Du testar saker som inte din, den här webbsidan har en funktion för, men du antar, den borde finnas där.

Mattias Jadesköld (11:12.288)
Mm.

Mattias Jadesköld (11:15.208)
Eh, just det. Och om man tittar på hur typiska sajter ser ut, ehm,

Mattias Jadesköld (11:20.728)
så brukar det finnas liksom slash admin, slash wp-admin och så vidare. PHP, MyAdmin, Tomcat har ju sin manager, HTML.

Mattias Jadesköld (11:31.088)
Ehm,

Mattias Jadesköld (11:32.868)
hur kan liksom en angripare nyttja sådana

Mattias Jadesköld (11:36.448)
sajter?

Erik Zalitis (11:37.668)
Alltså, när det gäller wp-admin, alltså det är ju WordPress då. Då förutsätter du att den finns där. Det ser ut lite grann som en WordPress-sajt. Så du skriver in slash wp bindestreck admin. Och är det en WordPress-sajt och de inte har låst ner den, ja då svarar den. Eh, och du med forced browsing så har du en lång kedja, en lista med saker. PHP MyAdmin är en väldigt vanlig administrativskonsol för, för, för databasadministratörer. Den– Du testar, finns den där? Säger den nej, jag har inte den. Ja, då går du vidare till nästa. Så den här kortlistan på de vanligaste sakerna som är gömda är väldigt, väldigt, väldigt avslöjande.

Varför letar angriparen efter kända programvaror?

Mattias Jadesköld (12:16.092)
Mm, och vad kan– Ja men vad kan en angripare, säg att de kommer till PHPMyAdmin då? Ja men då möts de väl av en inloggningsprompt liksom?

Erik Zalitis (12:25.292)
Ja, den första frågan är, My– PHPMyAdmin är en väldigt känd produkt. Den är supporterad, men den har haft väldigt mycket allvarliga sårbarheter igenom tiderna, vilket de flesta produkter har. Det innebär att de kanske inte har patchat dem. Så det du gör som attackerare, du går igenom CVE:er. Du går igenom, ja, PHP MyAdmin. Ja men då har jag alla de här allvarliga sårbarheterna. Testa om de funkar. Nu har du använt forced browsing för att hitta själva undersajten. Ja nu flyger du på den med de här rimliga attacken och ser vad händer? Kommer jag in? Får jag någonting tillbaka? Du kan även fassa, men det här är lite grann att då börjar du testa igen punkter och skickar in skräpdata. Får du tillbaka att nej, sorry, du kan inte logga in eller får du felmeddelanden? Det är så du börjar göra. Det här, forced browsing är inte en attack. Det är ett sätt att mappa upp grejerna innan man faktiskt attackerar eller laddar ner eller läcker data.

Mattias Jadesköld (13:20.812)
Men vad om jag har till exempel en WordPress-sida som har WP Admin, är det värt att byta namn på själva den sajten då? Är inte det lite security by obscurity?

Erik Zalitis (13:29.852)
Ja, vi ska komma till det. Och personen tycker jag, i sig, om det är det enda skydd du tar så är det inte bra. Däremot som ett komplementerande skydd till någonting som du inte skulle göra jätteont om de faktiskt hittar ändå, tycker jag det är okej. Men just när det gäller adminsidor så har jag en bättre idé. Använd IP-filter och VPN så att administratörerna måste använda ett VPN för att komma åt de administrativa delarna.

Mattias Jadesköld (13:56.432)
Just det.

Erik Zalitis (13:57.252)
Och då har du, då har du ju ett helt annan nivå av skydd. Då kan de hålla på och flyga på WP-admin, du kommer aldrig in. Du kommer inte ens dit.

Mattias Jadesköld (14:04.012)
Det, det är bra

Mattias Jadesköld (14:06.052)
rekommendation.

Mattias Jadesköld (14:08.532)
Ehm, då ska vi se här. Eh, rester från utveckling och driftsättning kan ni finna också?

Alla älskar git – särskilt hackaren

Erik Zalitis (14:16.152)
Ja, det, det vanligaste är ju att man använder någon form av versionshantering för att annars kan du inte hålla koll på vad du har gjort för uppdateringar. Och den vanligaste, det är faktiskt den som Linux skaparen, Linus Torvalds har skapat. Den heter Git.

Bild på Linus Torvalds från Wikipedia.

… Sen skapade han ju något som hetter Linux också. Tydligen rätt populärt det också.

Mattias Jadesköld (14:30.812)
Mhm, han har skapat det?

Erik Zalitis (14:32.372)
Han har skapat det, inte själv naturligtvis, men han har tagit fram den. Det är en av de produkter han är känd för.

Erik Zalitis (14:38.572)
Och Git är känd. Många tänker på GitHub, men det är ju bara en tjänst som använder Git, en, en, en gratistjänst från Microsoft eller vad man ska säga.

Mattias Jadesköld (14:47.672)
Mm.

Erik Zalitis (14:49.032)
Men grejen är det, om jag går till någons hemsida och så säger vi säger att hemsidan heter abc.se. Nu hoppas jag inte att jag hänger ut någon riktig sida här. Men om du går till abc.se och så skriver du snedstreck punkt git. Vad händer då? Om– I de flesta fall så, nej den där finns inte. Men om den finns och den inte är nedlåst, då svarar den med data och då vet du att någon har av misstag laddat upp det som är själva versionshanteringsträdet. Och det är alltså i princip en massa data om vad som har gjorts för ändringar och kodrader kan det innehålla som kan innehålla hemlig information. Det kan till exempel vara så att någon av dina, eh, uppdateringar innehöll en nyckel, ett lösenord eller någonting. Ja, då är det lösenordet röjt. För du– En attackerare som hittar den här på Git, han kör diverse verktyg för att läsa igenom, för det är ett strukturerat format. Så du kan ju läsa ut. Om du hittar Git-katalogen, då kan du ju bara sitta och ladda ner allt data och hämta hem det. Och sen har du en strukturerad väg, se hur sidan är byggd. Du kan hitta delar av koden, du kan hitta hemliga nycklar, du kan hitta kommentarer som kanske avslöjar hur man arbetar. Det är otroligt farligt.

Mattias Jadesköld (16:06.012)
Är det här fortfarande inom forced browsing?

Erik Zalitis (16:08.472)
Det här är exakt forced browsing. Vi har varit lite grann utanför och nämnt andra attacker, men det här är ju verkligen kärnan av vad forced browsing är.

Mattias Jadesköld (16:16.252)
Just det. Så här kan ju då en angripare lägga pusslet då till exempel att aha, den har WP Admin, då vet jag att det är en WordPress. Man kanske ser en sån här Git-katalog, då kan man se versionshantering och dokumentation därifrån till exempel.

.env – gratis lösenord!

Erik Zalitis (16:28.332)
Ja, precis, det är otroligt farligt. Och det finns även de här punkt env-filerna. De är ju riktigt läskiga.

Mattias Jadesköld (16:35.092)
Mhm.

Erik Zalitis (16:36.072)
Det står för environment och där innehåller man variabler som ett skript till exempel behöver för att kunna köra. Och den vanligaste variabeln som ett skript behöver, som verkligen brukar kunna ligga, är att det är lösenord eller passfraser eller annan information som skriptet behöver för att kunna koppla upp.

Mattias Jadesköld (16:55.292)
Mm.

Erik Zalitis (16:55.912)
Normalt så sparar man env-filerna borta utanför, eh, själva webbkatalogen. De är inte publicerade på webben. Men ibland på grund av hur folk jobbar, de trycker upp en hel fil rakt upp, alltså en zip-fil och packar upp den eller använder några SSH-skript eller någonting. Så tar de allting i utvecklingskatalogen, inklusive lösenord, allting och bara trycker rakt ut.

Mattias Jadesköld (17:18.032)
Mm, ja det är inte bra.

Erik Zalitis (17:20.012)
Eh, nej, [skratt] det är ett sätt att se det på. Det är, det är riktigt illa, men det är väldigt, väldigt kraftfull attack.

Mattias Jadesköld (17:27.392)
Ja.

Mattias Jadesköld (17:29.312)
Man kan jobba också med förutsägbara sökvägar, till exempel, liksom slash uploads och så till– Så kanske man kan browsa igenom hela det katalogen och kanske hitta folk som har laddat upp fakturor eller bilder eller vad det kan vara för någonting och allt möjligt ju.

Erik Zalitis (17:42.892)
Ja, du skulle vara förvånad hur mycket sånt där skräp man hittar.

Erik Zalitis (17:47.212)
Forced browsing egentligen handlar om att hitta saker som inte finns refererade någonstans. Det finns inga länkar, det finns ing-ing-ingenting som pekar på dem. Och det innebär i princip att stora ordlistor är magin.

Mattias Jadesköld (18:00.872)
Jaha.

Mattias Jadesköld (18:03.472)
Hur då?

SecLists hjälper dig hitta saker du inte trodde fanns

Erik Zalitis (18:04.252)
Ja, ordlistor innehåller inte nödvändigtvis ord från en ordbok, utan som jag sa förut här, liksom de kändaste applikationerna som en sajt kan ha. De här som alla-

Mattias Jadesköld (18:14.032)
Just det. Mm.

Mattias Jadesköld (18:17.192)
Ja, eh, [harklar sig] men det här är ju då liksom,

Mattias Jadesköld (18:21.692)
eh, det här är

Mattias Jadesköld (18:25.252)
hur man kan kartlägga utan att veta någonting om en sajt, hur man kan kartlägga vad det är för någonting och kanske få mer information. Men hur går det här till i verkligheten då?

Erik Zalitis (18:36.312)
Ja, alltså man använder ju, som jag sa då, ordlistor. Det blir SecList, det är en ganska känd sådan. Eh, det kan man googla på. Sen finns det en del verktygen som Burp Suite, ZAP. ZAP är ju en grat-gratisprodukt som liknar, det är OWASPs variant av Burp Suite. Den är väldigt kraftfull, men den är inte… Burp Suite är ju en kommersiell grej ja. Så det finns ett antal. De jag har hittat här är Feroxbuster, Gobuster, Dirbuster, den är gammal. Och sen en som heter… Ja, precis. Det finns ett antal där. Eh, och de här-

Mattias Jadesköld (19:11.092)
Vänta, men den här SecList, alltså den är för angripare egentligen?

Erik Zalitis (19:15.052)
Ja, eller försvarare. Funkar för försvarare också. Om du vill-

Mattias Jadesköld (19:18.912)
Ska du rekommendera någon som jobbar med säkerhet och lite, eller kanske pen tester och sådär, att man ska ladda ner den och titta på den eller?

Erik Zalitis (19:25.472)
Ja, det tycker jag. Det– Absolut. Skapa din egen. Utgå från då om du behöver ha olika för olika syften. Det här handlar om att veta någonting. Om du vet att det här är en sida som st– som har JS och den kör ASPX, så är det ingen idé att leta efter PHP-skript. De kommer nog inte att finnas där. Så man får vara lite smart.

Mattias Jadesköld (19:46.172)
Ja, det är bra att vara smart.

Erik Zalitis (19:48.452)
Det är bra att vara smart.

Mattias Jadesköld (19:50.172)
Ja.

Robots.txt kan ibland säga lite för mycket

Mattias Jadesköld (19:51.412)
Ehm, sen finns det också källor som är gratis, till exempel robots.txt. Vad är det för någonting?

Erik Zalitis (19:57.452)
Ja,

Erik Zalitis (19:58.972)
robots.txt är ju en fil. Man kan hitta den där genom att köra slash robots.txt på, på domänen. Och den talar om vad finns det för regler för crawlers? Alltså typ Google, Bing och även AI-bottar. Vad får de läsa? Och då kan man säga liksom att ja, ni får läsa allt utom det som ligger här. Det får ni absolut inte läsa. Och den instruktionen är till, [skrattar] till Google. Och det kan vara saker som en streamingtjänst. Min radiostation förbjuder Goo-Google att koppla upp mot stationens stream för den kan inte läsa den. Det är bara en massa ettor och nollor som fortsätter i all evighet. Det är helt legitimt. Men däremot kan det vara disallow kolon och sen någonting admin eller backup eller någonting. Då börjar hackaren tycka det här är intressant.

Mattias Jadesköld (20:45.712)
Just det.

Erik Zalitis (20:46.132)
Vad finns det där som vi kan titta på? Den avslöjar det [skrattar] som man försöker hålla gömt.

Mattias Jadesköld (20:51.812)
Finns ingenting att se här. [skrattar]

Erik Zalitis (20:53.732)
Nej, titta inte på den där grejen. Absolut inte. Jättefarligt.

Mattias Jadesköld (20:58.412)
Ja, tryck inte på den här röda knappen. [skratt] Eh, precis. Ja men det finns ju en hel del då egentligen. Och så kan man ju läsa svaren också i sin webbläsare. Klassikern typ hundratvå eller trehundratvå, att den omdirigerar sidan. Vad kan man göra då liksom i det, i det här fallet som en angripare?

Erik Zalitis (21:16.192)
Det finns ju mycket du kan göra. Till exempel om du omdirigeras, kan du styra omdirigeringen. Om jag talar om för den här, du förväntas, du talar om var, vart kom jag ifrån? Ja, då ska du gå och åka hit. Och i vissa lägen kanske man kan injicera vart du ska. Eller helt enkelt att den inte kontrollerar domänen, vilka domäner det är tillåten att redigera till, dirigera till.

Erik Zalitis (21:38.872)
Och då kan du använda lite forced browsing för att räkna ut genom att prova mata in saker. Vart hamnar jag? Då kanske du kan bygga någonting som redirigerar någonstans dit du inte ska. Du kan använda det för att lura användare ut på äventyr eller läcka information och sånt där. Eh, så det är lite grann man får vara kreativ där.

Mattias Jadesköld (21:59.832)
Just det.

F12-konsolen – din webbläsares inbyggda analysverktyg

Erik Zalitis (22:00.332)
Det billigaste verktyget är din webbläsares F12-konsol. Den innehåller en massa väldigt användbara verktyg.

Mattias Jadesköld (22:07.792)
Ja.

Erik Zalitis (22:08.412)
Den ingår. Alla Chrome och Firefox har en sån.

Mattias Jadesköld (22:13.092)
Precis. Så att när man gör det och håller på att titta runt på sådana här saker, kan man säga att det är såhär som en attackerare skulle gjort ungefär?

Erik Zalitis (22:19.432)
Det, det kan man säga. En attackerare har förmodligen lite mer avancerade verktyg. För att om du tittar på hur en, en, de här F12-konsolen är byggd, så är den ju bety– byggd för utvecklare och de ska felsöka. Det innebär att kunna skriva om frågor och sånt där. Det är inte riktigt rätt verktyg för det. Då vill du ha någonting annat och som sagt, vill du ha något som är gratis, prova ZAP, OWASP ZAP, Zed Attack Proxy eller Burp Suite, gratisversionen.

Mattias Jadesköld (22:46.272)
Men du, jag tycker såhär, forced browsing, det är ju en fin gränsdragning mot det liksom närliggande begreppet sårbarhet. Men det är inte riktigt sårbarheter det här, eller?

Erik Zalitis (22:55.792)
Det behöver inte vara det. Forced browsing hittar en massa saker. Det kan vara att du har filer som heter passwords.old. Och det är såhär, ja, old, ofta när någon, när du byter ut någonting så byter du namn från, från punkt, säger vi ASPX eller punkt POP till punkt old, så du har kvar en gammal backupkopia. Och den kan du ju då läsa i klartext för den kommer inte att köra eftersom punkt old är inte en tillåten till extension, vad heter det, ändelse. Och där kanske det finns lite lösenord, lite information och sånt. Så att leta efter det, punkt old, punkt bak, punkt någonting. Eh, punkt text är inte dåligt alls.

Mattias Jadesköld (23:36.812)
Nej.

Business logic tampering – steget efter ”forced browsing”

Mattias Jadesköld (23:39.712)
Men det är inte, som sagt, oftast inte sårbarheter, utan det vanligaste är väl på något sätt logikproblem kopplat till det här, eller?

Erik Zalitis (23:46.792)
Grejen är, logikproblem är en bit av. Jag skulle säga att forced browsing som det är, är ett sätt att hitta möjliga logikproblem. Logikproblemen, att använda dem, det kallas ofta för business logic tampering. Det är någonting annat. Det är därför det låter som jag åker ut i sidan hela tiden. Men det är mer att, som jag sa då, forced browsing är inkörsporten för att kunna göra andra saker liksom. Den ger i sig själv inte en väg in. Den bara ger dig någonting du kan jobba vidare med.

Mattias Jadesköld (24:15.152)
Den– Det börjar med forced browsing, sen leder det till tyngre grejer. [skratt]

Erik Zalitis (24:20.032)
Eller hur? [skratt] Friends don’t let friends do forced browsing. [skratt]

Mattias Jadesköld (24:26.544)
[skratt] Ja, det börjar ju med lite forced browsing och sen slutar det med ransomware. [skratt] Ja, men okej, men varför händer det här egentligen då? Eh, typ när behörigheten sitter i gränssnittet då liksom, så kanske man gör så att man döljer typ en viss knapp eller sådär, men, men endpointen svarar ändå.

Mattias Jadesköld (24:45.044)
Hur funkar det liksom?

Erik Zalitis (24:48.024)
Ja, nej men endpointen är ju normalt sett ett API. Det är alltså i princip när du trycker på knappen så skickar den någonting till ett API som talar om, ja men den här personen har just begärt att du ska radera den här posten. API:et svarar då på, ja men är du inloggad? Och så kollar den, ja men här fick jag till exempel ett JWE-token, J-W-E, som är, ja men det är användarens inloggningsuppgifter eller vad man ska säga, inloggningssession kodat på ett krypterat sätt. Och den svarar då, ja jag har raderat den.

Mattias Jadesköld (25:18.044)
Mm.

Erik Zalitis (25:18.484)
En ga– Med forced browsing så går du förbi det här. Du pratar direkt med API:et och säger hej, vad kan jag få göra hos dig?

Mattias Jadesköld (25:26.764)
Just det.

Ibland är det bara att läsa dokumentationen

Erik Zalitis (25:27.424)
Och ganska vanligt att säga ett öppet API är dokumenterat. Det betyder att du kan gå till det och bara läsa dokumentationen. Det här är vad du får göra, det här är vad du ska göra. De här möjliga metoderna finns för att göra olika saker. Det är liksom, det är gefundenes Fressen för, för hackaren som får allting på ett, på ett bord liksom. [skratt]

Mattias Jadesköld (25:50.104)
Ja, ja precis. Eh, men alltså…

Mattias Jadesköld (25:54.364)
Hu-hur– Om man bygger en webbsida, då måste man ju tänka på allt det här liksom. Eh, typ att den här delete-knappen som deletar en post som du var inne på, den, den måste vara skyddad bakom en viss behörighetsstruktur.

Erik Zalitis (26:06.924)
Ja.

Mattias Jadesköld (26:07.604)
Det är väldigt lätt att man– Det känns, det känns som att det är lätt att man missar sådana saker. Alltså jag tänker, jag tänker att man har en webbapplikation med en massa olika sidor och då olika roller och beroende på var man är så får man tillgång till olika saker. Det är inte bara, det är inte bara att en hel admin-sida till exempel är dold, men det kan vara just sådana här saker som du säger, att en delete-knapp där eller en edit-knapp eller vad det kan vara för någonting.

Erik Zalitis (26:27.664)
Ja, och det är väldigt lätt att missa. Men det här är egentligen en diskussion som går vidare. Vad händer sen? Men låt oss ta den. Lateral förflyttning. Lateral betyder sidledes. Det betyder-

Mattias Jadesköld (26:38.704)
Just det.

Erik Zalitis (26:39.764)
Det är som du säger. Ja, jag har, jag är inloggad. Jag har rätt att radera mina grejer. Sen vet jag att Mattias, du har ju ett annat ID. Det har jag sett på skärmen när du jobbar. Du har användar-ID 13. Så jag säger att ja men jag är användare 13 och så raderar jag dina filer. Får jag göra det? En dåligt skrivet API som inte kollar, utan bara, ja men du är ju inloggad. Den gör inte koll, så du gör en lateral förflyttning på det sättet. Alltså du i princip gör– Du går förbi själva, du bypassar själva, eh,

Erik Zalitis (27:13.624)
behörighetskontrollerna va.

Mattias Jadesköld (27:15.304)
Just det. Och det är för att man oftast då kanske när man har byggt webbapplikationen att man kanske inte har satt en behörighetskontroll där det ska vara en.

Erik Zalitis (27:23.704)
Ja, eller så är behörighetskontrollen bara på nivån vad får du göra? Inte vem får du göra det för?

Mattias Jadesköld (27:31.804)
Nej, just det. Eller vad får inte göra?

Erik Zalitis (27:33.904)
Ja, det är också en sån där grej. Jag menar, om jag får, om jag får göra det här, betyder det också implicit att jag får göra det här? Det här är ju, det här skenar ju i antalet möjliga kombinationer. Det är därför det är väldigt svårt att kontrollera. Därför folk gör kreativa saker.

Mattias Jadesköld (27:49.684)
Har du sett någonting med det här själv, eller?

Erik berättar när han själv blev lurad

Erik Zalitis (27:51.764)
Ja, det är antal gånger, men en av de mer kreativa grejerna är ju faktiskt en, en, ett skolexempel på det här. Jag hade byggt en aut-autentiseringslösning och sen hade jag sagt att det finns vissa användarnamn när du liksom skapar ett nytt konto, du får inte kalla dig det. En del fula ord förstås, men även admin. Du får inte kalla dig admin rätt uppenbart. Du kan lura någon. Ja, då var det någon som försökte med det. Gick inte. Då kallade han sig själv för adminer. Det gick ju naturligtvis. Därefter när han kom in och jag hade godkänt honom, jag var väldigt tveksam. Jag tänkte okej, jag hoppas ingenting värre kommer här. Då bytte han namn till admin, för jag hade inte tänkt på att kontrollera varje gång du byter namn, bara när du skapar det. [skratt]

Mattias Jadesköld (28:35.604)
Varför ville han heta admin då liksom?

Erik Zalitis (28:37.764)
Grejen är, det är någon– Jag tror att den här snubben tyckte jag skulle pen-testa för att få pengar. [skratt] Så han ville kolla om, om han kunde kalla sig själv för admin. En vanlig attackera som gör det är ju för att lura någon. Om du kommer ihåg Michael Kelsey, M-mafia Boy. Ja, han berättar att han gjorde ju det med något som heter AOL Hell, där han fick en flagga. Han– Det var ett program som utnyttjade en sårbarhet på America Online. Så då kunde man se ut som man hade den här administratörsflaggan. Så då trodde folk som fick meddelande från honom, ja han är en, han jobbar på AOL.

Mattias Jadesköld (29:11.784)
Mm.

Erik Zalitis (29:12.624)
Och det är därför-

Mattias Jadesköld (29:13.244)
Det var lite enklare på den tiden på 90-talet när han-

Erik Zalitis (29:15.104)
Ja, men om du kan kalla dig för admin eller kanske administratörens namn eller företagets namn, då kan du säga ja men jag kommer från företaget, jag är ju admin.

Mattias Jadesköld (29:25.284)
Typ om du försöker registrera ett Gmail-konto som heter admin då.

Erik Zalitis (29:28.484)
Nej, jag tror inte… [skratt] Du tror du är den första som har försökt det. [skratt]

Mattias Jadesköld (29:33.684)
Nej, jag tror inte det. [skratt] Nej, jag tror

Mattias Jadesköld (29:37.904)
inte det. Ja men hur ska man försvara sig mot det här då? Eh,

Mattias Jadesköld (29:42.044)
ett, ett sätt att börja är kanske man ska kolla på behörighetsstrukturen, antar jag.

Rensa, rensa och rensa. Ta bort attackytan en fil i taget

Erik Zalitis (29:45.964)
Det finns massor med saker att göra. Det första du ska tänka på är måste allting finnas tillgängligt? Rensa ur allt med punkt git, leta efter alla de här grejerna. Jag gör ju så att jag tittar på alla 404 och alla de här anropen i mina serverloggar och så kollar jag vad är det de försöker anropa? Och så funderar jag på har jag ens det där?

Erik Zalitis (30:09.524)
Det, det är så bara gå igenom allting och det är det första. Eh, sen är det liksom om du använder,

Erik Zalitis (30:17.084)
eh, om du bygger din egen logik med API:er så är det stenhårt viktigt att flödet måste vara kontrollerat. Du kan, du ska inte kunna gå direkt en endpoint och säga ja, men jag får för någon anledning. Du måste verkligen validera hela kedjan steg för steg.

Mattias Jadesköld (30:34.824)
Mm.

Erik Zalitis (30:37.064)
Sen är det ju också deny by default. Alltså allt nekas som inte en regel uttryckligen tillåter det.

Mattias Jadesköld (30:43.644)
Ja, där kommer ju det liksom att man, att man inte– Då blir det mycket lättare att sätta behörighetsstrukturen från början.

Erik Zalitis (30:50.944)
Mm.

Mattias Jadesköld (30:51.744)
Men det är här jag menar, tror jag liksom, när folk bygger prototyper med hjälp av AI och man vibe kodar supersnyggt liksom. Du kan bygga färdiga produkter och såna här saker.

Mattias Jadesköld (31:01.724)
Hela behörighetsstrukturen.

Erik Zalitis (31:03.804)
Du, du har ingen koll på den. Du vet inte vad den har byggt. Vad nu tyckte Claude eller ChatGPT Codex tyckte var bra.

Att vibe-koda en behörighetsstruktur och sedan inte veta hur den fungerar

Mattias Jadesköld (31:10.144)
Jag är helt övertygad om att de kan bygga en behörighetsstruktur, men du måste ju då prompta att den ska göra det.

Erik Zalitis (31:14.504)
Ja, den kommer hitta på någonting. Och då, då grejen är om du inte vet saker, vad är RBAC? Rollbaserad skydd– kontroll. Vad är DAC? Vad är MAC? Inte Apple.

Erik Zalitis (31:25.204)
Om du inte vet det så har du ingen anledning att vibe koda en autentiseringsstruktur. Det är jättedålig idé.

Mattias Jadesköld (31:31.544)
Och det här är ju typiskt en sån här sak som, eh, som…

Mattias Jadesköld (31:37.904)
Jag har tittat, jag har gått igenom, gått igenom, eh, utbildningar både med Anthropic, OpenAI, Google, Microsoft. Alla säger tydligt liksom när du jobbar, när du kodar tillsammans med

Mattias Jadesköld (31:49.684)
ett AI så måste du veta dess begränsningar, vad du själv ska göra och vad, vad, vad AI:t ska göra helt enkelt. Och här är ju väldigt, väldigt tydligt att,

Mattias Jadesköld (31:59.924)
att du måste ju sätta arkitekturen i början, eh, liksom övergripande idén. Och då är typiskt en sån här saker som, som behörighetskontrollen är ju en del av det då. Visst, du behöver inte vara ner på detaljnivå, men man ska ha en idé om att en användare ska kunna göra det här, en annan användare ska kunna göra det här och så. Eh, sen kan man låta AI förstås bygga en skitsnygg front supersnabbt, men, eh, den kommer inte bygga en sån här typ av saker om man inte säger till den att göra det.

Erik Zalitis (32:27.724)
Nej, precis. Och det är det som är det stora problemet. AI:t har ju någon form av horisont över vad den faktiskt kan komma på. Stämmer överens med vad du har beskrivit. Sådan, sådan prompt, sådant svar på något vis.

Mattias Jadesköld (32:40.484)
Mm.

Erik Zalitis (32:41.724)
När jag, när jag-

Mattias Jadesköld (32:43.004)
”Som man promptar får man surfa”, brukar jag säga.

Erik Zalitis (32:45.464)
[skratt] Ja, ”som man promptar får man läcka data”.

Mattias Jadesköld (32:48.164)
[skratt] Ja, som man hackar får man…

Erik Zalitis (32:51.524)
Sova. Nej, jag vet inte nu där.

Att inventera är att veta

Mattias Jadesköld (32:52.884)
Ja, nu blir det för flummigt. Ehm, ja, vad ska man mer göra? Ska man inventera sin endpoint? Det låter ju en väldigt kul grej att göra. Kanske redan på måndag morgon.

Erik Zalitis (33:02.364)
Ja, men det är väldigt viktigt att ha. Därför att inventeringen innebär dels att dokumentera det, men det betyder också att du kan kontrollera, den där följer inte de här nya reglerna vi har satt upp. Då stänger man av den om det inte absolut måste vara i gång. Det är såhär klassiskt, du går över från att du har inte krävt autentisering, men nu har du byggt en användarstruktur, nu gör du det. Vilka endpoint-punkter är kvar som inte kräver autentisering?

Mattias Jadesköld (33:29.644)
Mm.

Erik Zalitis (33:31.004)
Eh, du är mitt emellan en migrering mellan ett sätt att göra det och ett annat. Ja, en del av ändpunkterna är ute i regnet så att säga. De är, de är inte flyttade än. Genom att du dokumenterar dem och versionshanterar dem. Jag har ju testat hos kunder där de har såhär V1, V2, V3. Så alla ändpunkter heter någonting under en katalog som heter version ett, två, tre. Och sen jobbar man vidare på dem och då har man koll på det hela.

Erik Zalitis (33:56.464)
Sen finns det ju verktyg. En open API-specifikation, det är en så kallad YAML-fil. Eh, den innehåller maskinläsbar, eh, specificering.

Erik Zalitis (34:08.704)
Och den är ju väldigt viktig att hålla uppdaterad och korrekt för den talar om vad som finns. Och är det så att du har endpointer som inte är dokumenterade, då kan någon force browsea dem. De letar efter dem igenom att hitta någonting och så kan de prata med någonting du inte längre vet att du faktiskt har kvar.

Mattias Jadesköld (34:25.984)
Just det.

Mattias Jadesköld (34:28.044)
Så det här, det här är ett bra sätt om man har ett API att, att använda det verktyget för att kunna se vilken punkt vi har.

Erik Zalitis (34:33.844)
Ja, open API-specifikationen är ju egentligen textformat.

Mattias Jadesköld (34:37.544)
Mm.

Erik Zalitis (34:37.884)
Den beskriver såhär förklarar du maskinläsbart. Då kan en programvara eller ett AI läsa den och direkt förstå vad finns där. De här grejerna är otroligt viktiga och din inventering handlar om att det som finns i dokumentationen finns i verkligheten. Om det inte stämmer, om du har en impedans mismatch med att du har fler endpoint än vad du faktiskt beskriver, då har du ett problem.

Mattias Jadesköld (35:00.684)
Mm, då vill man gärna veta vad de här extra ändpunkterna är för någonting då.

En kodgranskning hittar problemen

Erik Zalitis (35:04.584)
Ja, och det kräver code reviews, till exempel, alltså kodgenomgångar, kodgranskning. Du kan även gå igenom med diverse skript och leta efter de här ändpunkterna brukar kunna hittas igenom att till exempel scanna av koden och sånt. Och då får du upp det här är ju vad vi har och då kan man tycka, oj, det där ska nog inte vara kvar.

Mattias Jadesköld (35:23.604)
Nej.

Erik Zalitis (35:24.604)
Det är väldigt viktigt för att säkerhet dör i tystnad. Säkerhet dör i komplexitet.

Mattias Jadesköld (35:32.404)
Sorligt.

Erik Zalitis (35:33.724)
Ja.

Mattias Jadesköld (35:36.264)
Hur kan man upptäcka sådana här attacker tänkte jag att vi skulle snacka om nu då?

Erik Zalitis (35:39.684)
Ja, eller hur? Det är ju ett enormt bakgrundsbrus.

Mattias Jadesköld (35:43.464)
Vad menas med det? Att det är mycket snack ute på nätet?

Erik Zalitis (35:47.164)
Nej, det är mer, det här är mer en fråga om att du tittar i dina loggar. Så har du 404, 404. Så de här, jag hittar inte det här, eh, entrerna. Det är ju någon som scannar och kollar, finns det här verktyget? Finns det här verktyget? Finns inte det här verktyget? Och då får du hela tiden, eh, helt enkelt en lista på vad folk faktiskt letar efter.

Mattias Jadesköld (36:07.284)
Ja.

Erik Zalitis (36:08.144)
Och jag har ju gjort en del skript som analyserar de där och jag kan bara konstatera att det är så mycket skräp. Det är såhär, den förutsätter att det är WordPress. Om du inte har det, det struntar den och den försöker. Den letar efter de här punkt env, punkt git, punkt ena, punkt det andra, punkt bak. Den letar efter kända verktyg med enorma sårbarheter som har varit i, liksom historiskt.

Mattias Jadesköld (36:30.204)
Just det.

Blockera farliga filer – en extra säkerhet när olyckan slår till

Erik Zalitis (36:31.344)
Eh, så det enda du kan göra där… Jag har gjort lite lo-logik som att i min, på min webbserver hemma, om du försöker gå till någonting som börjar med en punkt så är det automatiskt deny. Så det behöver inte ens finnas där. Den kommer inte tillåta dig. Så skulle jag av misstag lägga upp en punkt env med ett lösenord eller en punkt git- Den kommer inte kunna läcka ut.

Mattias Jadesköld (36:51.104)
Okej, men om du jobbar med Git då och vill ha din versionshantering, skapar det inte automatiskt en sån Git-bibliotek, .git-bibliotek? Behöver man inte ha ett sånt?

Erik Zalitis (36:59.444)
Jo, men du ska inte ladda upp det på sidan. Du ska ha det på din egen utvecklingsmiljö.

Mattias Jadesköld (37:05.844)
Ja, just det.

Erik Zalitis (37:06.564)
Alltså i din, i din, din dator eller i vad, var du nu är. I produktion ska absolut inga Git-filer finnas.

Mattias Jadesköld (37:14.444)
Nej, det är nog lätt att det, att det kommer.

Erik Zalitis (37:19.044)
Det är väldigt lätt att göra misstag. Särskilt om du trycker upp allting i en docker container eller nåt sånt där. Så gör du ingen kontroll på vad du faktiskt skickar in. Det, det är inte svårt. Du kan nästan sätta filer som såhär gitignore finns en fil som talar om att det här är– ska du inte hålla på och versionshantera.

Mattias Jadesköld (37:38.204)
Just det. Den här Claude MD-filen som många använder när man kör Claude Code.

Erik Zalitis (37:43.664)
Ja, Markdown, ja.

Mattias Jadesköld (37:44.764)
Ja, den kan– Skulle du let– Skulle du vilja vara intresserad av den om du var en angripare?

Claude.md är nog en alldeles för bra dokumentation

Erik Zalitis (37:50.464)
Ja, det tror jag. Det är liksom gratis dokumentation. Och dessutom de som har lagt ner tid på att låta Claude [skrattar] kompakta den ett par gånger. Den är väldigt strukturerad. Den är väldigt kort i sammanfattningen och berättar allt du behöver veta. [skratt] Det är lite jättebra.

Mattias Jadesköld (38:07.244)
Den ska man också ta bort i produktionsmiljön i så fall.

Erik Zalitis (38:11.024)
I alla fall på, på– Den ska inte ha på så att någon kan komma åt den utifrån. Den ska inte finnas på någon webbserver. Den blir– Den ska ligga kvar i vad, var du nu utvecklar din lösning liksom.

Mattias Jadesköld (38:22.684)
Mm.

Mattias Jadesköld (38:25.004)
Ja, precis. Ehm, man kan jobba med web application firewall, alltså själva applikationsbrandväggar. Det är bra.

Erik Zalitis (38:33.284)
Mm. Och det är egentligen samma sak. Där kan du instruera den att förbjuda uppenbara attackmönster. Den kommer inte ens fram till webbservern, utan den känner av, äh det där ska du inte ens testa. Och då, då gör det ingenting eller gör ingenting, men det är inte farligt längre på samma sätt om, om det råkar ligga grejer där.

Mattias Jadesköld (38:53.084)
Mm.

Mattias Jadesköld (38:55.504)
Sen kommer vi till det här begreppet som vi nämnde lite i början, security by obscurity, som handlar om det här

Mattias Jadesköld (39:00.524)
lite märkliga sätt att tänka på säkerhet. Att själva

Skydda nyckeln – inte låset

Mattias Jadesköld (39:04.484)
[harklar sig] att säkerheten i själv, att man gör den på nåt sätt hemligt. Att det enda skyddet man har till, till sin, till sin dörr, till exempel, det är att man inte säger vad det är för, för lås egentligen. Det är inte låset i sig som är det skyddande liksom. Jag vet inte.

Erik Zalitis (39:18.844)
Nej, det är en bra analogi. För frågan är, ska man skydda en kryptometod eller ett typ av lås eller någonting? Och svaret är nej, det ska du inte. Där-därför att hur en mekanism funkar måste vara ute i ljuset. Därför då kan folk felsöka den och säga: ”Du, det här låset är inte säkert.” Om du gömmer det så kan hackarna hitta det eller attackera den här låstjuvarna hittar det, men kanske inte låssmederna. Eh, så security by obscurity är egentligen begreppet när du an– En väldigt bärande del i ett skydd är att du inte hittar det sårbara delen. Det är en jättedålig säkerhet.

Mattias Jadesköld (39:56.224)
Just det. Men är alltid security by obscurity fel?

Erik Zalitis (40:00.504)
Nej, det är inte det. Alltså jag säger-

Mattias Jadesköld (40:02.424)
Men om det är den enda kontrollen, då är det fel.

Erik Zalitis (40:05.264)
Ja, egentligen, det är inte subscri– Att gömma någonting så att det inte är uppenbart att hitta är inte nödvändigtvis security by obscurity. Det beror på vad som händer om någon faktiskt skulle hitta det. Gör det ingenting, ja då är det inte security by obscurity. Det är bara ett bra sätt att, att inte göra det uppenbart.

Mattias Jadesköld (40:21.164)
Nej, men frågan är om det är security by obscurity för att man rensar bort .git-biblioteket eller, eller, eller dö– liksom låser bort wp.admin och allt vad det innebär. Det är väl en ganska– Det är väl inte security by obscurity. Det är väl snarare att det…

Mattias Jadesköld (40:37.844)
Vad ska man säga? Att man sanerar lite webbsajten.

Erik Zalitis (40:41.004)
Ja, nej men det håller jag helt med om. Om du däremot tyckte, ja men vi har lite Git-filer lite nu och då, men det är ingen som vet att de är där. Det är ett väldigt skolboksexempel på security by obscurity.

Mattias Jadesköld (40:50.724)
Mm.

Erik Zalitis (40:51.684)
Det, det, hittar de grejerna och det är jättejobbigt, då, då är det, då gör du inte rätt. Däremot, ja som sagt, att låsa ut admin interface, att inte exponera saker mot internet som faktiskt inte har anledning att vara där, det är smart säkerhetsdesign.

Mattias Jadesköld (41:08.124)
Om jag har till exempel en Microsoft 365-miljö eller typ Google Workplace, då kan man ju dela filer, en delad extern fil genom att liksom välja att alla som har den här länken kan, kan läsa eller editera den här filen. Är det upphov till forced browsing?

Erik Zalitis (41:26.144)
Ja, du kan använda forced browsing. Eh, fast nu får du tänka såhär att det är inte forced browsing per se, därför du kan inte gissa, du kan inte liksom gissa länken. Däremot får du tag i den, ja då är det öppet.

Mattias Jadesköld (41:39.284)
Mm.

Erik Zalitis (41:40.324)
Det gre– Det, det, det-

Tänk på vad du delar med världen

Mattias Jadesköld (41:41.724)
Men då är det egentligen… Man har ju delat en fil och sagt att alla som har länken får läsa filen liksom. Så att ja, då har de fått länken så får de läsa filen. Så jag vet inte riktigt.

Erik Zalitis (41:52.284)
Det är väl mer en fråga om, om du lägger upp länken som någonting sånt här enkelt som

Erik Zalitis (41:58.744)
nåt såhär index.old eller något sånt där, så är det någon som hittar den. Ja, då är det ju forced browsing. Men bara det faktum att den läcker och Kalle ger den till Lena som ger den till Agnes och jag fick den från Agnes. Jag menar, då, då har du per definition en, en, en, en läcka, men jag skulle inte kalla det forced browsing.

Mattias Jadesköld (42:19.624)
Nej, jag skulle nog

Mattias Jadesköld (42:23.824)
tänka på det, att man har en slags tidsangivelse eller, eller pekar ut de personer som man ska se den. Det, det är egentligen lite, lite sån detaljfråga det. Men en annan smart sak man kan jobba med, det är ju ehm,

Mattias Jadesköld (42:38.304)
automatiska testverktyg och då finns det ju två varianter här, DAST och SAST. DAST är ju dynamiska testverktyg och SAST är statisk. Och om man tittar på en utvecklingscykel så ska man ju använda-

Mattias Jadesköld (42:52.280)
De med lite olika skeende helt enkelt. Eh, för-för att ta de här begreppen då. SAST är oftast det som man gör innan man-man releasar kod, det vill säga att det är en statisk testning. Det kan vara att man testar till exempel källkoden eller, eller verktygen eller mjukvaru– ähm, mjukvaran efter sårbarheter.

Erik Zalitis (43:13.220)
Ja, just det.

Mattias Jadesköld (43:14.080)
Det är väl oftast såhär. Ja, den här är baserad på PHP åtta punkt bla bla bla. Den innehåller de här och de här sårbarheterna. Men DAST är ju det som i så fall skulle kunna upptäcka mer av de här forced browsing tror jag. För det är det man gör när den är publicerad på webbsidan, att den testar olika scenarion mot-

Erik Zalitis (43:30.180)
Ja, just det.

Mattias Jadesköld (43:30.720)
Mot liksom logik eller vad man ska säga i, äh,

Mattias Jadesköld (43:36.580)
mot den, mot den körande applikationen kan man säga.

Erik Zalitis (43:39.520)
Ja, just det, precis. Ja.

En titt på Burp suites nya AI-funktioner

Erik Zalitis (43:42.840)
Apropå det förresten, jag har lekt lite grann med Burps nya AI test suit.

Mattias Jadesköld (43:48.120)
Jaha.

Erik Zalitis (43:48.640)
Den har ju en AI pen-testare. Så jag tycker det var intressant. Jag lät den testa saker jag har byggt bara för att se vad den kunde komma på för någonting. De här verktygen är både väldigt begränsade och väldigt kraftfulla liksom.

Mattias Jadesköld (44:02.840)
Hittar du någonting intressant då?

Erik Zalitis (44:04.760)
Nej, det var nå– det var ett ställe jag hade byggt på som man faktiskt kunde logga ut utan att vara inloggad. Det är inte för att det hände någonting, men man ska normalt sett säga, äh, det får du inte göra. Det är, det är inte osäkert, det är bara dålig programmering. Så det hittade den.

Mattias Jadesköld (44:21.200)
Men det blir lite skomakarens barn då, Erik. Liksom såhär, har, har du tillräckligt när du bygger egna system? Har du tänkt på alla de här, äh, forced browsing själv då kan man undra?

Erik Zalitis (44:32.480)
Jag försöker, men, men det är återigen skomakarens barn. Ja, det är, det är, det är en otroligt svårt grej att skydda sig mot för komplexiteten är så överväldigande.

Mattias Jadesköld (44:42.420)
Ja, och jag kan bara tänka mig såna här stora projekt där man sitter många utvecklare och man har olika, många olika delar och komponenter, ähm, i en jättestor applikation. Jag tror att det är väldigt

Mattias Jadesköld (44:57.120)
lätt att man, att man har någon sån här typ av fel.

Erik Zalitis (45:01.120)
Ja, det kan jag tro. Det kan jag absolut tro. Ja, och det blir ju, det blir värre med tiden. Därför att ju mer du bygger på grejer, desto mer glöms kvar.

Mattias Jadesköld (45:10.860)
Ja, verkligen. Men det här tycker jag är intressant också, det här som vi började lite med, som vi avslutar också med på något sätt, att den här har varit

Är ”Forced browsing” även morgondagens attack?

Mattias Jadesköld (45:19.800)
på toppen av, äh, attack-attackerna mot webbapplikationer i över tjugo års tid och är det fortfarande och kommer vara framöver också tror vi. Eller hur?

Erik Zalitis (45:30.320)
Det är svårt att säga om vi har hjärninterface där vi styr våra webbapplikationer med tanken. Då, då kanske det finns andra sårbarheter att fundera på. Äh, men, men jag tror att över en överskådlig framtid tror du var allvarlig. Äh, så tror jag att det där är en mycket allvarlig attack därför att den är liksom otroligt mycket en inkörsport för så mycket mer. När du väl hittar mekanismer att komma åt saker direkt eller saker som är gömda eller saker, ja, då är det bara din fantasi som sätter begränsningarna på hur långt du kan gå med det.

Mattias Jadesköld (46:03.580)
Mm.

Mattias Jadesköld (46:06.600)
Äh, bra. Vi kan ta med oss lite såna här saker som, beroende på vilken roll man har. Är man utvecklare, då ska man nog,

Mattias Jadesköld (46:13.380)
ähm, titta på endpointsen, äh, i koden. Äh, vem framropar mig? Och inte bara i gränssnittet utan även i API:t.

Erik Zalitis (46:23.760)
Mm.

Mattias Jadesköld (46:26.880)
Ähm, och jobbar man med drift av en sida eller operationsdelen ska man kanske tita på vad, vad är det för delar av sajten som svarar helt enkelt? Som ger kod tvåhundra.

Erik Zalitis (46:37.460)
Ja, eller hur? Precis. Äh, och även andra koder kan vara intressanta. Jag menar, K200 betyder ja, du– här har du sidan.

Mattias Jadesköld (46:45.780)
Mm.

Vilka är våra favorit HTTP-koder?

Mattias Jadesköld (46:47.460)
302, minst sant, redirect.

Erik Zalitis (46:49.620)
Ja, 500 – du kraschade servern.

Mattias Jadesköld (46:52.440)
Klassiker, 500. Vi behöver inte räkna upp alla, men jag tänkte bara ta en till roll här. Till exempel om man jobbar med SOC också. Kan det vara bra att man för att försöka sätta upp larm, till exempel, att om det finns speciella sök– känsliga sökvägar på en webbsajt så kan man ju faktiskt, äh, kolla larm där. Är det någon som går mot VP admin eller så vidare eller slash git och såna här saker, eller hur?

Erik Zalitis (47:13.720)
Ja, eller hur? Jo, men det kan du ju göra. Men grejen är, du ska inte larma för att de försöker. Du ska larma för att de lyckas. Det är en jättestor skillnad. Försöker gör de hela tiden. Alla, alla som försöker på en git, du kan inte larma på det. Då vadar du i larm.

Mattias Jadesköld (47:29.720)
Ja.

Mattias Jadesköld (47:31.940)
Och det här som vi varit inne på, bygger du en webbsajt, tänk på arkitekturen från början, alltså behörighetsstrukturen.

Erik Zalitis (47:38.420)
Ja. Och, och kom ihåg det att du ska bara ha rättigheter till det du har rättigheter till. Förutsätt inte annat än att du måste kontrollera att du äger dina egna resurser, inte alla andras. Bara för att du är inloggad så ska du inte vara inne och kunna bara göra vad du vill liksom.

Mattias Jadesköld (47:56.220)
Nej, man ska säga nej. Deny by default.

Erik Zalitis (47:59.360)
Ja, precis. Om jag inte vet vad det är, säg stopp.

Mattias Jadesköld (48:02.660)
Ja.

Sykofantisk programvara? Nej, det är nog ingen bra idé

"Yes man" från Fallout New Vegas. En robot som håller med lite för mycket ibland.

”Yes man” från Fallout New Vegas. En robot som håller med lite för mycket ibland.

Mattias Jadesköld (48:05.600)
Som ”Yes Man”, fast tvärtom då.

Erik Zalitis (48:07.540)
[skratt] Eller hur? Som pyskofantisk programvara. Ja, men jag tycker du har helt rätt. Självklart så skulle vi programmera på det här sättet.

Vi kanske har lärt oss något idag, eller?

Mattias Jadesköld (48:17.100)
Ja, men bra då Erik. Då har vi nått vägs ände här med forced browsing. Har vi lärt oss något i dag?

Erik Zalitis (48:25.480)
Nej, ingen aning.

Mattias Jadesköld (48:26.660)
Nej, jo, det tror jag. Du har kanske inte lärt dig så mycket. Det här var ju känt för dig, men för mig var det,

Mattias Jadesköld (48:31.420)
äh, värdefull information och kanske för några lyssnare. Vem vet?

Erik Zalitis (48:34.500)
Ja, ja, jag hoppas det. Nej, men skämt åsido, man lär sig alltid någonting. Men jag– vad jag menar är, ja, det är, det är en intressant och underskattad attack.

Mattias Jadesköld (48:43.420)
Ja.

Erik Zalitis (48:44.280)
Ja, det här har väl varit vårt avsnitt. 54 minuter klockar den in på.

Erik Zalitis (48:50.140)
Fast jag tror i verkligheten är det mindre för att, ja, det är när vi spelar in.

Mattias Jadesköld (48:54.560)
Ja. Hej då, Erik. Ha det bra! [outromusik]

(Denna transkription är automatiskt genererad och kan innehålla felhörningar)

Länkar – Forced browsing

Felaktigheter

Inget att rapportera denna gång. Kommentera gärna om ni inte håller med om hittar fel i något vi sagt.


Reader's opinions

Lämna ett svar

Denna webbplats använder Akismet för att minska skräppost. Lär dig om hur din kommentarsdata bearbetas.



[There are no radio stations in the database]