Web Security

Assignment 1 - deadline vrijdag 21 april, 23:59

Doel van de eerste opdracht is om HTTP verkeer te bekijken en mogelijk wijzigen met een proxy aan de hand van de OWASP WebGoat, een bewust onveilige website. Je draait lokaal je eigen kopie van de WebGoat website. Voor latere opdrachten zullen we een centrale website gebruiken om op in te breken.

Voor deze opdracht moet je dus WebGoat installeren, en WebScarab als proxy of een andere tool gebruiken om het HTTP verkeer te sniffen en zonodig aan te passen. (Uitleg over Webgoat en WebScarab installeren en opstarten op de practicumpagina.)

  1. Doe de onderstaande lessons uit de OWASP WebGoat.

    1. How to work with WebGoat

    2. General: HTTP Basics
      Bij deze opdracht gaan enkel om te kijken hoe sniffen van HTTP verkeer werkt: je moet wat je hebt ingevoerd op de webpagina en het bbh. antwoord van de server in het HTTP verkeer in je proxy kunnen vinden. Net als bij de eerste opdracht hoeft verder niks te doen.

    3. Code Quality: Discover clues in the HTML.

      Hint: er zijn meerdere manieren om in Firefox de HTML source van een pagina te bekijken:

      • Met Rechtermuis -> View Page Source
      • Door een stuk tekst vd webpagina te selecteren en dan Rechtermuis -> View Selection Source
      • Met Rechtermuis -> Inspect Element waarna je in de onderste window de HTML code beetje bij beetje kunt openklappen
      De laatste 2 manieren zijn hier handiger, omdat je dan kunt inzoomen op het relevante deel van de HTML code, in dit geval HTML code van het Sign In-form.

    4. Insecure Storage: Encoding Basics

      Een vraag bij deze opdracht: hoe heet de encoding die gebruikt wordt voor het string veld (dat je invult achter "Enter a string") in het HTTP request? En hoe heet de encoding die gebruikt voor het (optional) password? (Hint: kijk met je proxy hoe karakters die je als invoer opgeeft gecodeerd worden in het HTTP request.)

    5. Parameter Tampering: Bypass HTML Field Restrictions

      Hint: Als je niet het vinkje krijgt ondanks dat je vijf velden hebt aangepast, lees dan de vraag goed en zie dat je zes velden moet aanpassen.

    6. Parameter Tampering: Exploit Hidden Fields

  2. Beantwoord de volgende vragen, en lever dit in via Blackboard:

    1. Bekijk voor deze opdracht in de proxy ook opdracht 4 hierboven, hoe heet de encoding die gebruikt wordt voor het string veld (dat je invult achter "Enter a string") in het HTTP request? En hoe heet de encoding die gebruikt voor het (optional) password? (Hint: kijk met je proxy hoe karakters die je als invoer opgeeft gecodeerd worden in het HTTP request.)

    2. Bekijk het HTTP verkeer dat gegenereerd wordt door de GET en POST acties op ../demo/demo_get_post.html. Stel een aanvaller kan het netwerkverkeer afluisteren (dwz. een een Man-in-the-Middle aanvaller zoals op slide 10 van het afgelopen college).

      Biedt een GET betere bescherming dan een POST, of andersom, of maakt dat niet uit? En biedt een hidden veld een betere bescherming dan een niet-hidden veld, of andersom, of maakt dat niet uit? Motiveer je antwoorden.

    Je kunt samenwerken in paren, maar lever dan wel allebei de antwoorden in via BB zodat het makkelijker is voor ons om te administeren.