- Last ned WebGoat med docker:
docker pull webgoat/webgoat
docker run -p 8080:8080 -p 9090:9090 -p 80:8888 -e TZ=Europe/Amsterdam webgoat/webgoat:latest
- Gå til
http://localhost:8080/WebGoat
- Denne oppgaven bygger på flaks, så gjør den på eget ansvar
Løsningsforslag ⚠️
- Send en request så du kan inspisere den og se verdien til
hijack_cookie
- Inkrementer med +1 på første del til du finner en gyldig sesjon
- Bruk nettverksfanen eller et verktøy for å inspisere og endre requester - Firefox har god støtte for endring
- Gjør kall med forskjellige id-er for å finne en annen profil
- Bruk
PUT
for å endre en annen profil (huskcontent-type
)
Løsningsforslag ⚠️
- Skriv inn brukernavn
tom
og passordcat
- Bruk nettverkstaben til å inspisere en request som går til
profile
- Requesten i forrige oppgave gikk til
/IDOR/profile
. Da kan vi prøve med/IDOR/profile/<userId fra forrige oppgave>
- Gjør et kall til en annen id for å finne noen andres profil: gjør en request og inspiser den i nettverkstaben. Prøv å bytt ut id-en med noen tall ved å inkrementere din egen id et par ganger
- Inspiser skjulte elementer
- Gjør et
GET
-kall mot/access-control/users
Løsningsforslag ⚠️
- Inspiser de skjulte elementene Users og Config
- Gjør et kall mot
/users
og finn hashen til admin-brukeren
- Målet er å få siden til å gjøre noe den ikke vil
- Oppgave 3-6 er bare tekst, så du kan hoppe rett til oppgave 7
Løsningsforslag ⚠️
- Skriv for eksempel inn
<script>alert()</script>
i kredittkortfeltet siden kredittkortinfoen printes på siden - Inspiser kildekoden (source) og finn
goatApp/View/GoatRouter.js
. Let etter en route for test - Målet er å trigge funksjonen via url. Gå til
http://localhost:8080/WebGoat/start.mvc#test/<script>webgoat.customjs.phoneHome()<%2Fscript>
i en annen tab og ha konsollen oppe (%2F er HTML-enkodingen av /)
- Hopp rett til oppgave 6 hvis du vet hvordan man skriver SQL
- Prøv noen vanlige SQL-injection payloads
Løsningsforslag ⚠️
- Skriv inn noe i det første feltet og 0 OR 1=1 i det siste feltet
- Skriv inn noe i det første feltet og ' OR '1' = '1 i det siste feltet
- Skriv inn noe i det første feltet og '; UPDATE employees SET salary=99999 WHERE first_name='John i det siste feltet
- %'; DROP TABLE access_log;--