KB » Computer » Webgoat

Webgoat

    Tweeten

Webgoat setup

Ga naar de github site voor WebGoat, en download webgoat-server-version.jar

Doe dan in Kali: java -jar webgoat-server-version.jar --server.port=9090

Toen ik Webgoat versie 8.2.2 probeerde kreeg ik deze melding: Exception in thread "main" java.lang.UnsupportedClassVersionError: org/owasp/webgoat/StartWebGoat has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 55.0
Kennelijk is mijn versie van Java Runtime niet up-to-date. Als ik versie 8.1.0 probeer gaat het wel goed.

Tik in de browser: http://localhost:9090/WebGoat. Je kan dan zelf een user en password kiezen.


A1 - Injection

  1. Injection (Intro)
  2. Injection (Advanced)
  3. Injection (Mitigation)
  4. Path Traversal

Injection (Intro)

Gebaseerd op Webgoat 8.1.0.

Ex. 2

select department from employees where first_name = 'Bob' and last_name = ' Franco'

Ex. 3

update employees set department = 'Sales' where first_name = 'Tobi' and last_name = 'Barnett';

Ex. 4

alter table employees add column "phone" varchar(20);

grant alter table to UnauthorizedUser;

Ex. 9

Lijkt op ex. 7 in cursus van Jesse Kuros.

Kies in 1e veld Smith', in 2e veld or en in 3e veld '1'='1

Opdracht 10

Lijkt op ex. 8 in cursus van Jesse Kuros.

Query is "SELECT * FROM user_data WHERE login_count = " + Login_Count + " AND userid = " + User_ID;

Vul in het 1e veld een willekeurig getal in (5 werkt in elk geval), en in het 2e bv. 12345 or 1=1

Ex. 11

Ex. 12

Ex. 13

Injection (Advanced)

Ex. 3

Je hebt 2 tabellen:

CREATE TABLE user_data (userid int not null, first_name varchar(20), last_name varchar(20), cc_number varchar(30), cc_type varchar(10), cookie varchar(20), login_count int);

en

CREATE TABLE user_system_data (userid int not null primary key, user_name varchar(12), password varchar(10), cookie varchar(30));

Je moet alle gegevens uit de 2e tabel halen, en Dave's password achterhalen. Moeilijk volgens Kuros.

Ex. 5

Ook ex. 5 bij Kuros.

Klik op REGISTER. Zorg ervoor dat in Burp intercept aan staat. Zet wat willekeurig strings in het formulier.

Na onderschepping selecteer je alle tekst in het Raw tabblad, en na rechtsklikken selecteer Copy to file. Het ziet er bv. zo uit:

PUT /WebGoat/SqlInjectionAdvanced/challenge HTTP/1.1 Host: localhost:9090 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://localhost:9090/WebGoat/start.mvc Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest Content-Length: 84 Connection: close Cookie: JSESSIONID=SCwwi7oh6ReJnzk6Wd1Xhas3Qrxdy38X10ftU8XB username_reg=test4&email_reg=t%40t.com&password_reg=test4&confirm_password_reg=test4

In de raw data zie je onderaan: username_reg=test4. Vervolgens drop je het packet, en zet je intercept uit.

Ga nu naar Kali, en tik: sqlmap -r saved_file -p username_reg --dump

Vragen:
How do you want to proceed (antwoord: Continue)
Is it recommended to perform only basic UNION tests... (antwoord: Yes)

Er komen 2 payloads uit, en hij gebruikt de 'time-based blind'. Kopiëer de hele tekst achter payload, en zet intercept weer aan. Ga weer naar de registratiepagina, en voer dezelfde gegevens in als eerder. Vervang nu de laatste regel in de raw data door de payload. Klik rechts, en klik op Send to Repeater. Dan drop packet en intercept uit.

Klik op tabblad Repeater, en dan op Go. In de response zie je nu "lessonCompleted" : true

Injection (Mitigation)

Path Traversal


A2 - Broken Authentication

  1. Authentication Bypasses
  2. JWT Tokens
  3. Password Reset
  4. Secure Passwords

A3 - Sensitive Data Exposure

  1. Insecure Login

A4 - XML External Entities (XXE)

  1. XXE

A5 - Broken Access Control

  1. Insecure Direct Object References
  2. Missing Function Level Access Control

A7 - Cross-Site Scripting (XSS)

  1. Cross-Site Scripting

XSS

Ex. 2

Zie Kuros

Open 2 tabbladen met dezelfde URL, en voer dan in de adresbalk dit in: javascript:alert(document.cookie);
Bij mij lukt dit niet. Ik kan wel gaan naar de menu's Tools - Web Developer - Web Console, en daar het commando (zonder 'javascript:') in te tikken. De cookies zijn hetzelfde.

Ex. 7

Zie Kuros.

Je gaat eerst in alle 6 velden 1 voor 1 het alert commando invoeren. Het veld met credit card nummer blijkt vulnerable.

Open Burp, met intercepting aan. Je laat het Javascript in het credit card veld staan, selecteert de 1e regel uit het raw packet, en rechtsklikt op Copy URL. Zet intercepting uit.

Open een nieuw tabblad in de browser, en plak de URL erin. Het ziet er nu iets anders uit, maar dit is hoe een reflected XSS werkt.

Ex. 10

Zie Kuros.

Vul eerst start.mvc#test in. Je krijgt als antwoord: Check the GoatRouter.js file
Als je een '/' toevoegt achter 'test' gaat het wel goed.

Ex. 11

Zie Kuros.

Je probeert dit in de URL te zetten: http://localhost:9090/WebGoat/start.mvc#test/<script>alert('DOM XSS works') <%2Fscript>, en het werkt.

Open een nieuw tabblad, zet intercepting aan in Burp, en voer de volgende URL in: http://localhost:8080/WebGoat/start.mvc#test/<script>webgoat.customjs.phoneHome(); <%2Fscript>

Je moet in Burp een aantal keren op Forward klikken. Je gaat naar HTTP History, en kijkt naar het POST request. In de laatste regel van het tabblad zie je phoneHome Response is 2034624015. Dat getal vul je in.

Ex. 13

Zie Kuros.

Zit niet in mijn WebGoat.


A8 - Insecure Deserialization

  1. Insecure Deserialization

A9 - Vulnerable Components

  1. Vulnerable Components

A8:2013 - Request Forgeries

  1. Cross-Site Request Forgeries
  2. Server-Side Request Forgery

Client Side

  1. Bypass Front-End Restrictions
  2. Client Side Filtering
  3. HTML Tampering

Challenges

  1. Admin Lost Password
  2. Without Password
  3. Admin Password Reset
  4. Without Account


    Tweeten

© Henk Dalmolen
Reageer via E-mail (dalmolen@xs4all.nl)

Deze pagina is voor het laatst gewijzigd op: 12-02-23 18:00:54