Täysin laillinen sertifikaatti (h2)

Tämä blogipostaus on osa Haaga-Helian Tunkeutumistestaus-kurssia, jonka Tero Karvinen pitää keväällä 2023.

Toisen kurssiviikon tehtävät:

  • ”x) Lue ja tiivistä. (Tässä x-alakohdassa ei tarvitse tehdä testejä tietokoneella, vain lukeminen tai kuunteleminen ja tiivistelmä riittää. Tiivistämiseen riittää muutama ranskalainen viiva.)
  • a) ZAP! Asenna ZAP välimiesproxy ja näytä, että pystyt sieppaamaan liikennettä selaimesta.
  • b) Totally Legit Sertificate. Asenna ZAP:n generoima CA-sertifikaatti selaimeen ja osoita testillä, että pystyt sieppaamaan HTTPS-salakirjoitettua liikennettä.
  • c) Intercept. Pysäytä hakupyyntö, muokkaa sitä ja päästä se palvelimelle.
  • d) Vuohi. Asenna WebGoat ja kokeile, että pääset kirjautumaan sisään.
  • e) Vauvavuohi. Ratkaise WebGoatista tehtävät ”HTTP Basics” ja ”Developer tools”. Katso vinkit alta.
  • f) SELECT * FROM student. Ratkaise SQLZoo:sta: 0 SELECT basics, 2 SELECT from World kohdat 1-5.
  • g) Ratkaise WebGoatista*:
    • A1 Injection (intro)
    • A2 Broken authentication:
      • Authentication bypasses: 2 2FA Password Reset
    • A3 Sensitive data exposure
      • Insecure Login: 2 Let’s try
    • A7 Cross Site Scripting (XSS): Cross site scripting
      • 2 What is XSS?
      • 7 Try It! Reflected XSS
    • A8:2013 Request Forgeries:
      • Cross-Site Request Forgeries
      • 3 ”Basic Get CSRF Exercise”
      • 4 ”Post a review on someone else’s behalf”.
  • h) Vapaaehtoinen bonus: ratkaise Vulhubista valitsemasi kone.
    * Oletko jo ratkonut Webgoatin? Voit korkata sen tilalta koneen tai pari HackTheBox.eu:sta tai Vulnhubista.”

(Karvinen 2023)

x) Tiivistelmä

PortSwigger: SQL-injektio (SQLi)

SQL-injektio on verkkotietoturvahaavoittuvuus, jonka avulla hyökkääjä voi puuttua kyselyihin, joita sovellus tekee omaan tietokantaansa. Näin hyökkääjä voi päästä tarkastelemaan sellaisia tietoja, joita normaalisti ei pystyisi hakemaan tietokannasta, esim. käyttäjätunnuksia tai muita käyttäjiin liittyviä tietoja. Monissa tapauksissa hyökkääjä voi päästä muokkaamaan tai poistamaan tietokannan tietoja siten, että tästä aiheutuu pysyviä muutoksia sovelluksen sisältöön tai toimintaan. Joissain tapauksissa SQL-injektiota voidaan käyttää myös taustalla olevan palvelimen tai muun infrastruktuurin vaarantamiseen tai palvelunestohyökkäyksen suorittamiseen. (PortSwigger 2023a)

PortSwigger: Cross-site scripting (XSS)

Cross-site scripting tarkoittaa sivustojen välistä komentosarjaa. Se on SQL-injektion tapaan verkkotietoturvahaavoittuvuus, jonka avulla hyökkääjä voi vaarantaa käyttäjien vuorovaikutuksen haavoittuvien sovellusten kanssa. Cross-site scriptingin avulla hyökkääjä voi kiertää saman alkuperäpolitiikan (same origin policy), joka on suunniteltu erottamaan eri verkkosivustot toisistaan. Tällöin haavoittuva verkkosivusto toimii siten, että se palauttaa käyttäjälle haitallisen JavaScript-koodin. Kun haitallinen koodi sitten suoritetaan uhrin selaimessa, hyökääjä voi vaarantaa käyttäjän vuorovaikutuksen sovelluksen kanssa.

Sivustojen välisten komentosarjojen haavoittuvuuksien ansiosta hyökkääjän on yleensä mahdollista naamioitua uhrikäyttäjäksi, suorittaa mitä tahansa käyttäjän suorittamia toimintoja ja päästä lopulta käsiksi mihin tahansa käyttäjän tietoihin. Jos uhrikäyttäjällä on lisäksi peruskäyttäjää laajemmat käyttöoikeudet, hyökkääjä saattaa saada jopa täyden hallinnan sovelluksen kaikkiin toimintoihin ja tietoihin. (PortSwigger 2023b)

a) ZAP-välimiesproxyn asentaminen ja liikenteen sieppaaminen selaimessa

Tehtävänä oli asentaa ZAP-välimiesproxy ja osoittaa, että liikenteen sieppaaminen selaimesta onnistuu tällä työkalulla.

Käynnistin ja kirjauduin Kali-virtuaalikoneelle VirtualBoxissa. Edellisen harjoituksen jäljiltä Kali oli irti Internetistä, joten kytkin sen Internettiin ja siirryin lataamaan OWASP Zed Attack Proxyn eli ZAP-välimiesproxyn osoitteesta zaproxy.org ”Download Now” -painikkeen takaa. Koska tarkoitukseni oli asentaa ZAP Kali-virtuaalikoneelle, valitsin ladattavaksi Linux Installerin. Odotin tämän hoitavan asennuksen ohjatusti Linuxissa, mutta jostain syystä tiedostoa klikkaamalla ei tapahtunut yhtään mitään, enkä tiennyt, missä oli vika. Niinpä päätin kokeilla Linux Package -vaihtoehtoa kurssikaverin onnistuneen asennuksen innostamana.

”ZAP_2.12.0_Linux.tar.gz” -tiedoston lataus kesti pari minuuttia. Latauksen valmistuttua avasin Downloads-kansion ja purin pakatun tiedoston samaiseen Downloads-kansioon klikkaamalla gz-tiedostoa hiiren oikealla painikkeella ja valitsemalla ”Extract Here” (Rissanen 2023).

Kytkin varmuuden vuoksi Kali-virtuaalikoneen taas irti Internetistä ja testasin vielä, että google.fi -osoite ei tosiaan enää lataudu näkyviin – ei latautunut. Tämän jälkeen avasin terminaalin ja etsin tieni Downloads-kansioon ja README-tiedostoon lukemaan asennusohjeita:

$ ls
$ cd Downloads
$ ls
$ ZAP_2.12.0
$ ls
$ cd README

Sain todeta jälleen Linuxin käyttötaitojeni olevan hieman ruosteessa vuoden tauon jälkeen, sillä README-tiedosto ei suinkaan auennut cd-komennolla, koska kyseessä oli tiedosto eikä kansio. Niinpä kävin kertaamassa vuodentakaisia muistiinpanojani hyödyllisistä komennoista, ja cat-komento olikin vastaus pähkäilyyni, miten pääsen lukemaan tiedostoa:

$ sudo cat README

README-tiedoston ohjeiden mukaan Linuxissa ZAP asennetaan ajamalla ”zap.sh” -tiedosto. sh-tiedostomuoto viittaa bash-komennolla ajettavaan tiedostoon. Niinpä laitoin ZAP:n asentumaan terminaalissa komennolla

$ bash zap.sh

(Rissanen 2023).

ZAP asentui iloisesti ja hetken päästä kyseli, haluanko tallentaa tiedot kaikista sessioista vai saako tiedot hävittää aina, kun lopetan ZAP-session. Opettaja mainitsi viime luennolla, että session tiedostoja voi olla hyödyllistä päästä tutkimaan jälkikäteen ja että hän usein oikein tallentamalla tallentaa tiedot tekstitiedostoon. Niinpä annoin ZAP-ohjelmalle luvan tallentaa automaattisesti aikaleimalla kunkin session tiedot (→ ”Yes, I want to persist this session with name based on the current timestamp”) virtuaalikoneen kovalevylle, jolloin minun ei tarvitsisi muistaa erikseen tallennella tietoja myöhemmin, ja klikkasin ”Start”.

Tämän jälkeen ZAP oli valmiina tositoimiin:

Jotta pystyisin seuraamaan mitään verkkoliikennettä, kytkin tässä kohtaa Kalin taas takaisin verkkoon, sillä tätä tehtävää ei voisi suorittaa loppuun ilman Internet-yhteyttä. Tämän jälkeen kytkin ZAP-ohjelmassa verkkoliikenteen seurannan päälle: Manual Explore (salaman kuvake vihreän ympyrän päällä) → URL to explore (seurattava url-osoite) → Launch Browser (käynnistä selain).

Valitsin seurattavaksi kohteeksi OWASPin Mutillidae II -harjoitusympäristön osoitteessa http://128.198.49.198:8102/mutillidae/. ”Launch Browser” -painiketta klikattuani Firefox-selain käynnistyi valintani mukaisesti ja avasi Mutillidae II:n etusivun. Siirryin etusivulta OWASP Top Ten -projektin sivuille, ja samaan aikaan ZAPin syötteessä näkyi myös koodi 301, syynä ”Moved Permanently” ja URL-sarakkeessa osoite, joka selvästi viittasi Top Ten -projektin sivuun. GET-metodi puolestaan viittasi siihen, että selain oli vain ladannut palvelimelta tietoa näkyville (POST-metodilla tieto kulkisi toiseen suuntaan, kun lähetettäisiin palvelimelle tietoa).

Tutkiessani ZAPin keräämiä tietoja osui silmääni omituinen aikaleima: Näemmä Kali ja minä emme myöntäneet olevamme samalla aikavyöhykkeellä, sillä ZAP ja myös itse Kali näyttivät kellonajan aivan päin honkia. Jos siis haluaisin jatkossa löytää ZAP-sessioiden tallenteita aikaleiman perusteella, se ei tulisi olemaan helppoa. Niinpä Kalin kellonaika täytyy saada Suomen kesäaikaan jollain keinolla ennen seuraavia ZAP-harjoituksia.

b) Totally Legit Sertificate. CA-sertifikaatin asentaminen selaimeen ja https-salakirjoitetun liikenteen sieppaaminen

Tehtävänä oli asentaa ZAP:n generoima CA-sertifikaatti selaimeen ja osoittaa testillä, että pystyy sieppaamaan HTTPS-salakirjoitettua liikennettä.

Käynnistin ZAP-ohjelman kansiossa, jonne olin sen aiemmin ladannut:

$ cd ./Downloads/ZAP_2.12.0/
$ bash zap.sh

ZAPin ehdottaessa session tallentamista valitsin, että haluan session tallennettavaksi aikaleimalla nimettyyn tiedostoon.

Tein ZAPissa CA-sertifikaatin ja tallensin sen kali-hakemistoon:

Tools → Options → Network → Server Certificates → Generate → Save → Save → OK

Käynnistin Firefox-selaimen ja lisäsin selaimen asetusten kautta OWASP ZAP -serifikaatin selaimen käyttämiin sertifikaatteihin:

Settings → Privacy & Security → Certificates → View Certificates… → Import → valitsin kali-hakemistosta sertifikaatti-tiedoston owasp_zap_root_ca.cer → Open → valitsin ”Trust this CA to identify websites.” → OK → OK

Tarkistin vielä ”View Certificates…” -painikkeen takaa, että sertifikaatin tuonti oli onnistunut. Sertifikaattilistasta löytyi O-kirjaimen kohdalta OWASP ZAP, kuten pitikin:

Avasin ZAPin sivun selaimessa osoitteessa https://localhost:8080/, josta löytyi lisätietoa proxyn (välimiespalvelimen) konfiguroinnista. ZAP suosittelee vahvasti selaimen konfigurointia ZAP-ohjelman kautta, jolloin asetukset menevät automaattisesti oikein.

Avasin tehtävän a-kohdan mukaisesti ZAPissa Manual Exploren, syötin Googlen osoitteen https://google.fi ja klikkasin ”Launch Browser”. (Rissanen 2023)

Jostain syystä ZAP avasi selaimeksi Firefoxin incognito-tilassa, jossa OWAS ZAP -sertifikaatti ei ollutkaan tuotuna. Toin incognito-tilaiseen Firefox-selaimen asetuksiin uudestaan OWASP ZAP -sertifikaatin ja päivitin ZAPin avaaman ikkunan. Nyt selainrivin alussa näkyneet valitukset turvattomasta yhteydestä katosivat ja selain tunnisti OWASP ZAP -sertifikaatin:

Olin kirjoittanut Googlessa hakusanaksi Kali Linux. Löysin ZAPista tähän hakuun liittyviä pyyntöjä https://google.fi -hakemiston alta:

Näin ollen sertifikaatin asennus selaimeen oli onnistunut, vaikka sen joutuikin asentamaan Firefoxin eri selainversioihin erikseen, ja myös https-salakirjoitetun liikenteen sieppaaminen ZAP-ohjelmaan näytti onnistuneen.

c) Intercept. Hakupyynnön pysäyttäminen, muokkaus ja päästäminen palvelimelle

Tulossa.

d) WebGoatin asennus

Ennen WebGoatin asentamista asensin Kali-virtuaalikoneelle Javan ja muutaman työkalun:

$ sudo apt-get update
$ sudo apt-get -y install openjdk-11-jre ufw wget bash-completion

Otin myös palomuurin käyttöön:

$ sudo ufw enable

Latasin Tero Karvisen verkkosivuilta WebGoatin asennustiedoston:

$ wget https://terokarvinen.com/2020/install-webgoat-web-pentest-practice-target/webgoat-server-8.0.0.M26.jar

Asensin WebGoatin ajamalla Java-pohjaisen asennustiedoston:

$ java -jar webgoat-server-8.0.0.M26.jar

Karvisen verkkosivuilla mainitaan WebGoatin version toimivan Java 11:llä, joka on helppo asentaa Debianiin. Toisaalta Kali on Debian-pohjainen distro, joten oletettavasti samainen versio toimii kätevästi myös Kalin kanssa.

Kun terminaali rauhoittui eikä käynyt enää enempää koodia läpi, tulin siihen tulokseen, että WebGoat oli ilmeisesti nyt käynnissä. Avasin Firefox-selaimella osoitteen

http://localhost:8080/WebGoat/,

jolloin pääsin WebGoatin etusivulle:

Rekisteröidyin uudeksi käyttäjäksi linkin ”Register new user” kautta: Syötin käyttäjätunnuksen, salasanan, salasanan uudestaan, hyväksyin säännöt ja viimeistelin rekisteröitymisen ”Sign up” -painikkeella. Tosin käyttäjätunnuksen ja salasanan keksiminen ei ollutkaan niin yksioikoista kuin luulin, sillä ensin käyttäjätunnukseni oli liian lyhyt ja sisälsi ison alkukirjaimen ja salasanani oli puolestaan liian pitkä. WebGoatin antamien lisäohjeiden myötä onnistuin keksimään tunnukset, jotka täyttivät vaatimukset.

Kun olin onnistuneesti vienyt rekisteröitymisen loppuun, minut kirjattiin automaattisesti sisään WebGoatin harjoitusalustalle:

(Karvinen 2020)

Kun myöhemmin lopetin WebGoatin, suljin Firefox-selaimen ja terminaalissa näppäinyhdistelmällä Ctrl + C lopetin myös WebGoatin ajamisen.

e) WebGoat: ”HTTP Basics” ja ”Developer Tools”

Tehtävät ”HTTP Basics” ja ”Developer Tools” löytyivät WebGoatissa General-osion alta.

”HTTP Basics” -osa esitteli perusasioita selaimen ja sovelluksen välisestä tiedonsiirrosta sekä pyynnön ja vastauksen sieppaamisesta HTTP-välityspalvelimen avulla. Ensin client lähettää palvelimelle pyynnön (request) ja sen jälkeen palvelin lähettää pyyntöön vastauksen (response), ja tämä HTTP-tapahtuma koostuu kolmesta osasta: pyyntö- tai vastausrivi, otsikko-osio ja kokonaisuuden runko (WebGoat).

”HTTP Basics” -tehtävän 1. osasta selvisi lukemalla teorian läpi, mutta 2. osassa oli ensimmäinen varsinainen tehtävä. Siinä tuli kirjoittaa nimensä kenttään ”Enter Your Name” ja sitten klikata ”Go!”-painiketta. Palvelin palautti nimeni takaperin kirjoitettuna:

”HTTP Basics” -tehtävän osiossa 3 kysyttiin 2. osion tehtävän komennon tyyppiä, joka oli POST, sillä käyttäjä lähetti palvelimelle tietoa. Lisäksi tuli selvittää taikanumero, jota lähdin etsimään sivun lähdekoodista: Avasin selaimen Developer Tools -ikkunan F12-näppäimellä ja kirjoitin hakukenttään ”magic”, jolloin haku ehdotti minulle hakusanaksi ”#magic_num” – kuulosti lupaavalta! Tällä hakusanalla lähdekoodista löytyi rivi, jonka nimi oli magic_num eli kaipaamani taikanumero, tietotyyppi piilotettu ja rivin lopussa ystävällisesti kerrottu taikanumeron arvoksi 80.

Tarkistin vastaukseni ”Go!”-painikkeella, ja tietopari POST ja 80 osoittautuivat oikeiksi:

Ratkaistuani ”HTTP Basics” -tehtävän siirryin General-osion alla ”Developer Tools” -tehtävään. Osiossa 1 esiteltiin Chrome-selaimen Developer Tools -ikkunaa, jota kylläkin hyödynsin jo edellisen tehtävän lopussa Firefox-selaimella. Sama ikkuna näytti aukeavan Firefoxissakin riippumatta siitä, käytinkö F12:hta vai näppäinyhdistelmää Ctrl + Shift + I, joten samaan lopputulokseen pääsisi ainakin neljällä eri tavalla:

Tehtävän osiossa 2 esiteltiin kehittäjän työkalujen Elements-välilehteä, jossa pääsee tutkimaan html-koodia ja myös css-tyylimuotoiluja. Osiossa 3 tutustuttiin Console-välilehteen, josta näkee tutkittavan sivun lataaman JavaScript-muotoisen koodin. Konsolin voi tyhjentää näppäinyhdistelmällä Ctrl + L, ja tilalle voi kirjoittaa omia komentoja, esimerkiksi tulostaa teksti ”Hello World!” komennolla

console.log(”Hello World!”);

tai pyytää konsolia laskemaan laskuja:

Osion 4 tehtävässä tuli käyttää kehittäjän työkalujen konsolia ja kutsua JavaScript-funktiota webgoat.customjs.phoneHome(). Tyhjensin konsolin roskakorin kuvaketta klikkaamalla, sillä aiemmin kerrottu Chromen näppäinyhdistelmä Ctrl + L ei selvästikään tyhjentänyt konsolia Firefoxissa. Tämän jälkeen kirjoitin konsoliin pyydetyn komennon ja painoin Enteriä:

Sain vastaukseksi pyyntööni WebGoatin ohjeita muistuttavan rimpsun, jonka lopussa oli mainittu myös kaipaamani puhelinnumero. Syötin pelkän numero-osan puhelinnumerosta tehtäväkenttään ja klikkasin ”Submit”-painiketta, mutta sainkin yllättäen ilmoituksen, että pieleen meni. Lisäsin puhelinnumeron eteen viivan, kuten funktion antamassa vastauksessa: ”– Response is -520524533”}. Tällä korjauksella tehtävä ratkesi:

”Developer Tools” -tehtävän osiossa 5 esiteltiin kehittäjän työkalujen Sources-välilehteä, jonka kautta voi tutkia sivun tiedostojärjestelmää sekä sivun rakentamisessa käytettyjä html-, css- ja JavaScript-tiedostoja. Network-välilehdessä puolestaan voi tutkia verkkosivun tekemiä HTTP-pyyntöjä ja sen saamia vastauksia.

Seuraava ja samalla viimeinen ratkaistava tehtävä löytyi osiosta 6, jossa tuli löytää Network-välilehden avulla tietty HTTP-pyyntö ja lukea siitä satunnaisluku. Klikkasin ohjeiden mukaan ”Go!”-painiketta, joka näytti lähettävän POST-muotoisen HTTP-pyynnön. Klikkasin Network-välilehdessä POST-pyynnön riviä ja avasin oikeasta reunasta Request-välilehden, jolloin sain esiin POST-metodin lähettämän datan. Data piti sisällään juurikin tehtävään kaipaamani tiedon ”networkNum”, jonka perästä kopioin WebGoatin tehtäväkenttään koko lainausmerkkien välissä olevan desimaaliluvun. Tarkistin ratkaisuni check-painikkeella ja sain ilmoituksen, että tehtävä oli tosiaan ratkennut:

f) SQLZoo: 0 SELECT basics, 2 SELECT from World, kohdat 1-5

Tulossa.

g) Tunkeutumistestauksen harjoittelua WebGoatissa

A1 SQL-injektio (intro)

WebGoatin A1-osuudessa esiteltiin osioissa 1 ja 6-8, mitä SQL-injektiot ovat ja miten niitä voi käyttää.

Osiossa 2 oli tehtävänä selvittää, millä osastolla Bob Franco työskentelee. Niinpä muodostin tästä SQL-kyselyn:

SELECT department
FROM Employees
WHERE first_name = ’Bob’ AND last_name = ’Franco’;

Sain SQL-kyselyyn vastauksena Bob Francon työskentelevän Marketing-osastolla, joka oli 2. osion ratkaisu:

3. osiossa tehtävänä oli muuttaa Tobi Barnettin uudeksi osastoksi ”Sales”. Muodostin tästä SQL-kyselyn:

UPDATE Employees
SET department = ’Sales’
WHERE first_name = ’Tobi’ AND last_name = ’Barnett’;

Tällä SQL-kyselyllä Tobi Barnett vaihtoi onnistuneesti tietokannassa myyntiosastolle:

4. osiossa tuli muokata mallina olevaa SQL-kyselyä ja lisätä 20-merkkinen, tekstimuotoinen (varchar(20)) sarake nimeltä ”phone” employees-tauluun. Tein tämän seuraavalla SQL-kyselyllä:

CREATE TABLE employees(
userid varchar(6) not null primary key,
first_name varchar(20),
last_name varchar(20),
department varchar(20),
salary varchar(10),
auth_tan varchar(6),
phone varchar(20)
);

Osio 4 ei kuitenkaan ratkennut edellä mainitulla SQL-kyselyllä, sillä olin ymmärtänyt sikäli väärin, että koko taulua ei ollutkaan tarkoitus luoda alusta lähtien vaan pelkästään lisätä pyydetty uusi sarake. Niinpä yritin uudestaan:

ALTER TABLE employees
ADD phone varchar(20);

Uusi yritys tuotti tulosta ja 4. osio meni läpi:

A1-osuuden 5. osiossa oli tehtävänä myöntää käyttäjäryhmälle ”UnauthorizedUser” oikeus muuttaa tietokannan tauluja. Yritin oikeuksien myöntämistä seuraavalla SQL-kyselyllä:

GRANT ALTER TABLE
TO UnauthorizedUser;

Pyydettyjen oikeuksien myöntäminen onnistui:

Osiossa 9 oli tehtävänä hakea kaikkien käyttäjien tiedot tekstimuotoisen SQL-injektion avulla. Dynaaminen kysely muodostetaan ketjuttamalla merkkijonoja, ja tämä tekee kyselyn alttiiksi tekstimuotoiselle SQL-injektiolle (WebGoat). Jotta SQL-injektio toimisi, WHERE-lausekkeeseen pitäisi saada ehto muodostettua siten, että se olisi aina voimassa. Niinpä

… WHERE first_name = ’John’ AND last_name = ” → false, sillä luultavasti jokaisella käyttäjällä on jonkinlainen sukunimi mainittu

… WHERE ’1’ = ’1’ → true, sillä 1 on tosiaan 1 ja aina voimassa

Niinpä SQL-kyselyllä

SELECT *
FROM user_data
WHERE first_name = ’John’ AND last_name = ” or ’1’ = ’1’;

tulostuivat kaikki käyttäjätiedot:

10. osiossa olikin sitten tehtävän aiheena numeerisen SQL-injektion harjoittelu, jossa kahta kenttää käyttäen piti hakea taas kaikkien käyttäjien tiedot. Kokeilin ensimmäiseksi pelata ykkösillä arvaamalla jonkin Login_Count-kentän arvon olevan 1 ja User_Id-kentän olevan aina oikein arvolla true:

Arvoa 1 ei kuitenkaan löytynyt taulusta. Kokeilin Login_Count-kenttään myös vaihtoehtoja ’1 = 1’, joka olisi aina true, sekä *, mutta näitä ei tietenkään kelpuutettu numeroiksi:

Pyysin WebGoatilta vihjettä, ja vihjeen mukaisesti kokeilin Login_Count-kenttään arvoa 0. Tämä oli ratkaiseva tekijä, jolla numeerinen SQL-injektio onnistui:

11. osiossa oli tehtävänä hakea kaikkien työntekijöiden tiedot employees-taulusta, jotta voisi vertailla eri työntekijöiden palkkoja. Aloitin katsomalla ensin annetun työntekijän, John Smithin, tiedot:

Yritin jälleen saada sekä Empoyee Name – että Authentication TAN -kenttiin muodostumaan true erilaisilla tavoilla, kuten Smith ja 1″ = ”1, mutta yritykseni eivät tuottaneet tulosta. WebGoat antoi vihjeeksi hyödyntää AND- ja OR-operaattoreita SQL-injektiossa.

Uudessa yrityksessä Smith tuntui olevan edelleen hyvä idea, sillä WHERE-lauseen nimikyselyosuudesta piti saada true. Todennusnumero-osuus ei ollut vielä oikein ja tulos muuta kuin true, mikä tarkoitti sitä, että olin mennyt sekaisin lainausmerkkien kanssa:

Smith
’ OR ’”1″ = ”1

Katsoin lisää vihjeitä WebGoatista, ja lopulta löysin oikean ratkaisun:

Osiot 12 ja 13 seuraavaksi.

Lähteet

Karvinen, T. 2020. Install Webgoat 8 – Learn Web Pentesting. Luettu: 17.4.2023. Luettavissa: https://terokarvinen.com/2020/install-webgoat-web-pentest-practice-target/.

Karvinen, T. 2023. Penetration testing course 2023. Luettu: 1. – 2.4.2023. Luettavissa: https://terokarvinen.com/2023/tunkeutumistestaus-2023-kevat/.

PortSwigger 2023a. SQL injection. Luettu: 17.4.2023. Luettavissa: https://portswigger.net/web-security/sql-injection.

PortSwigger 2023b. Cross-site scripting. Luettu: 17.4.2023. Luettavissa: https://portswigger.net/web-security/cross-site-scripting.

Rissanen, J. 2023. h2-Totally-Legit-Certificate. Luettu: 16.4.2023. Luettavissa: https://github.com/JRissanen/h2-Totally-Legit-Certificate.

Artikkelin osiot x ja d on täydennetty 17.4.2023, e ja g täydennetty 19.4.2023 sekä osio b täydennetty 16.5.2023.

Kommentoi

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *