Sequel fish (h4)

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

Neljännen 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. Cheatsheetistä voit poimia muutaman itselle relevantin kohdan.)
  • a) Kalassa. Laadi keihäskalasteluviesti (spear phising) kuvitteelliselle yritykselle. Tavoitteena on saada kohde avaamaan liitteenä oleva Excel-dokumentti ja laittamaan makrot päälle. Käytä ainakin kahta Cialdinin periaatetta. Selitä, miten näitä periaatteita on sovellettu viestiisi. Keksi skennario ja kohde itse. Käytä työssä vain kuvitteellisia yrityksiä ja henkilöitä. Viestiä ei lähetetä mihinkään, se tulee vain raporttiin. Liitteenä olevaa Excel-dokumenttia ei tarvitse tehdä, mutta jos siinä on jotain nokkelaa, voit kuvailla, mitä se olisi.
  • PortSwigger labs
    • b) SQL injection vulnerability allowing login bypass.
    • c) SQL injection UNION attack, determining the number of columns returned by the query.
    • d) SQL injection UNION attack, finding a column containing text.
    • e) SQL injection UNION attack, retrieving data from other tables.
    • f) SQL injection UNION attack, retrieving multiple values in a single column.
    • g) SQL injection attack, querying the database type and version on Oracle.
    • h) Vapaaehtoinen, vaikea: Mystery labs challenge. Tason voit itse valita. Monet harjoitukset sisältävät kohtia, joita ei ole erikseen opetettu kurssilla.
  • i) Vapaaehtoinen, vaikea: Korkkaa HTB:n maalikone, retired tai kilpakone.

(Karvinen 2023)

x) Tiivistelmä

Cialdinin suostuttelun periaatteet

Robert Cialdini on psykologian ja markkinoinnin professori, joka on kehittänyt kuusi vaikuttamisen tai suostuttelun periaatetta. Vaikka periaatteet kuvaavat markkinoinnin ja myynnin ammattilaisten yleisiä vaikuttamistekniikoita, niitä voi soveltaa myös monilla muilla aloilla.

Cialdinin suostuttelun periaatteet:

  1. Vastavuoroisuus (reciprocity)
    • Kun tekee toiselle jotain mukavaa, tämä todennäköisemmin tekee vastavuoroisesti jotain positiivista.
  2. Sitoutuminen ja johdonmukaisuus (commitment and consistency)
    • Ihmisten toiminta perustuu usein pitkäaikaisiin tottumuksiin, ja toisaalta moni täyttää jo kertaalleen tekemänsä sitoumukset. Kun henkilön on kerran saanut sitoutumaan esimerkiksi esittelypuheluun tai potentiaalisen asiakkaan on saanut tutkimaan yrityksen verkkosivuja, häntä on entistä helpompaa johdatella eteenpäin ottamaan seuraava askel myyntitunnellissa.
  3. Sosiaalinen paine ja myötäily (social proof)
    • Sosiaalinen paine ja muiden ihmisten käyttäytyminen vaikuttavat kuluttajien toimintaan ja voivat saada heidät myötäilemään muita ihmisiä. Tämän periaatteen pohjalta se, että esimerkiksi julkisuuden henkilö suosii tietyn brändin tuotteita, voi lisätä kyseisen brändin tuotteiden myyntiä julkisuuden henkilön seuraajien keskuudessa.
  4. Auktoriteetti (authority)
    • Auktoriteettiperiaatteen nojalla kuluttajat voivat esimerkiksi olla halukkaampia ostamaan tietyn yrityksen tuotteita ja palveluita, kun he luottavat yritykseen alansa asiantuntijana.
  5. Miellyttäminen ja tykkääminen (liking)
    • Yhtäältä miellyttämiseen ja toisaalta tykkäämiseen liittyvä periaate viittaa esimerkiksi siihen, että se, miten kuluttajat näkevät yrityksen ja minkälainen maine yrityksellä on kuluttajien silmissä, voi vaikuttaa yrityksen myyntiin. Jos yrityksen brändi ja toiminta heijastelevat sellaisia arvoja, jotka resonoivat asiakaskunnassa, tämä saa asiakkaat sitoutumaan entistä uskollisemmin yritykseen.
  6. Niukkuus (scarcity)
    • Niukkuuden periaate hyödyntää tuotteen tai palvelun rajallista tarjontaa ja kannustaa siten potentiaalisia asiakkaita ostamaan vielä, kun tuotetta tai palvelua on saatavana. Pelko, että jäisikin ilman ja menettäisi tilaisuuden, saa kuluttajan toimimaan.

(Indeed Editorial Team 2022)

PortSwigger: SQL-injektion UNION-hyökkäykset

Kun sovellus on altis SQL-injektiolle ja tietokantakyselyn tulokset palautetaan sovelluksen vastauksina, voidaan UNION-operaattoria käyttää tietojen hakemiseen muista tietokannan tauluista. Tästä on kyse SQL-injektion UNION-hyökkäyksessä.

UNION-operaattorin avulla voidaan suorittaa yksi tai useampip ylimääräinen SELECT-kysely ja liittää vastaukset alkuperäiseen SQL-kyselyyn. Esimerkki tällaisesta tietokantakyselystä on seuraava:

SELECT a, b FROM table1
UNION
SELECT c, d FROM table2

Jotta SQL-kysely UNION-operaattorilla toimisi, täytyy kahden vaatimuksen täyttyä: yksittäisten kyselyiden on palautettava sama määrä sarakkeita, ja lisäksi kunkin sarakkeen tietotyyppien täytyy olla yhteensopivia yksittäisten kyselyiden välillä.

(PortSwigger s.a a)

PortSwigger: SQL-injektion cheat sheet

SQL-injektion cheat sheet on PortSwiggerin kokoama lista hyödyllisistä esimerkkisyntakseista, joiden avulla voi suorittaa erilaisia tehtäviä, joita tulee usein vastaan SQL-injektiohyökkäyksiä tehdessä. Tässä joitain esimerkkejä PortSwiggerin listalta:

  • Merkkijonojen ketjutus (esim. MySQL: ’a’ ’b’)
  • Alimerkkijonot (esim. MySQL: SUBSTRING(’abc’, 1, 2) → tästä palautuu merkkijono ab)
  • Kommentit, joiden avulla kyselyn voi katkaista yllättäen ja poistaa tekstisyötettä seuraavan alkuperäisen SQL-kyselyn osan (esim. MySQL: #comment, — comment, /*comment*/)
  • Tietokannan tyyppi ja versio ovat hyödyllisiä tietoja, kun muotoillaan monimutkaisempia hyökkäyksiä (esim. MySQL: SELECT @@version)
  • Tietokannan sisältö
  • Ehdolliset virheet: Yksittäistä ehtoa testaamalla voi laukaista tietokantavirheen, jos ehto on tosi.
  • Aikaviiveet, joita voi aiheuttaa tietokannassa, kun kyselyä käsitellään.

(PortSwigger s.a b)

a) Keihäskalasteluviesti kuvitteelliselle yritykselle

Tehtävänä on laatia vähintään kahta Cialdinin periaatetta hyödyntävä keihäskalasteluviesti kuvitteelliselle yritykselle siten, että kohde avaisi viestin liitteenä oleva Excel-tiedoston ja laittaisi makrot päälle.

Kuvitteellisessa yrityksessä Neuwokkain Oy Ab kevät on kiireistä aikaa. Neuwokkaimmat asiantuntijat odottavat jo lähestyvää kesälomakautta päästäkseen hetkeksi hengähtämään hektisen työn tiimellyksessä. Kuten aiempinakin vuosina, kesälomista sovitaan osastoittain siten, että jokaisella osastolla täytyy ainakin yhden henkilön päivystää myös loma-aikaan ja pitää pyörät edes hitaasti pyörimässä.

Kesken kiivainta työviikkoa Neuvokkain Oy Ab:n talousosaston asiantuntijoiden sähköpostiin kilahtaa pitkään ja hartaasti odotettu viesti:

”Hei!

Kesälomakausi lähestyy. Käy merkitsemässä kesälomatoive-exceliin, mihin aikaan haluaisit olla kesälomalla. Excel löytyy täältä: https://erp.neuwokkain.fi/kesalomakalenteri.xlsm.

Kesälomatoiveen täytyy sisältää ainakin yksi 20 päivän yhtämittainen jakso, ja kesälomat tulee pitää lomakauden aikana eli 1.6. – 30.9.2023.

Tuttuun tapaan nopeat syövät hitaat. Joka tapauksessa kesälomatoiveet on merkittävä exceliin 15.5.2023 mennessä.

Terv. Aina Neuwokas, talouspäällikkö”

Neuwokkain talousosastolainen klikkaa kiireesti kesälomatoive-excelin auki, sillä hän tietää heinäkuun olevan halutuinta loma-aikaa ja haluaisi itsekin olla koko heinäkuun lomailemassa. Excel aukeaa selaimeen, ja neuwokkain talousosastolainen huomaa ilokseen vasta yhden kollegan ehtineen toivoa kesälomaansa juuri heinäkuulle – siispä hänelläkin on vielä mahdollisuus päästä mökkilaiturille nauttimaan heinäkuisesta auringosta. Jotta excelin soluja pääsee muokkaamaan, neuwokkain talousosastolainen klikkaa Muokkaa-painiketta, sallii samalla pahaa aavistamatta excelin pyörittää makroja, merkitsee exceliin oman lomansa heinäkuulle, tallentaa tiedoston ja sulkee selaimen tyytyväisenä.

Neuwokkain Oy Ab:n talousosaston henkilöstölle lähetetyssä keihäskalasteluviestissä hyödynnetään useaa Cialdinin suostuttelun periaatetta. Viestissä hyödynnetään auktoriteettiperiaatetta, sillä viesti näyttää tulevan talousosaston päälliköltä, joka on useimpien vastaanottajien lähiesihenkilö. Kesälomatoiveiden huomioimisessa vedotaan niukkuuteen: mitä nopeammin merkitsee lomatoiveensa, sitä suuremmalla todennäköisyydellä se voi toteutua – kiire on etenkin, jos haluaisi lomailla samaan aikaan kuin tiettävästi suurin osa työkavereista. Joka tapauksessa lomamerkinnät tulee tehdä parissa viikossa, joten asiaa ei sovi hitaampienkaan lykätä liian pitkään. Lisäksi viestin voisi nähdä vetoavan myös sitoutumisen ja johdonmukaisuuden periaatteeseen, sillä kesälomatoiveiden merkitseminen exceliin tietyllä tavalla on jokavuotinen, tuttu tapa sopia loma-ajoista monilla työpaikoilla ja viesti ajoittuu juuri siihen aikaan kevättä, kun työpaikoilla varmistellaan kesälomia.

Jotta keihäskalasteluviesti olisi uskottava, exceliä ei ole suinkaan laitettu sähköpostin liitteeksi, sillä tällaisista, makroja käyttävistä liitetiedostoista varoitellaan tänä päivänä aika ajoin. Lisäksi excel, joka näyttäisi url-osoitteen perusteella sijaitsevan Neuwokkain Oy Ab:n toiminnanohjausjärjestelmän käyttämällä verkkopalvelimella, herättänee vähemmän epäilyksiä kuin excel-tiedosto sähköpostin liitteenä – etenkin, kun liitetiedosto pitäisi lähettää vielä takaisin Aina Neuwokkaalle, jotta tämä saa talousosastolaisten lomatoiveet tietoonsa. Samalla on vaarana, että keihäskalasteluviestiyritys paljastuu, kun käy ilmi, ettei viestiä olekaan kirjoittanut allekirjoituksesta huolimatta Aina Neuwokas vaan tuntematon taho.

b) PortSwigger Lab: SQL-injektion haavoittuvuus, joka sallii ohittaa kirjautumisen

PortSwiggerin laboratoriotehtävä sisältää SQL-injektion haavoittuvuuden kirjautumistoiminnossa. Tehtävänä on ratkaista laboratoriotehtävä suorittamalla SQL-injektiohyökkäys, jossa kirjaudutaan sovellukseen järjestelmänvalvojana (administrator).

Aloitin tehtävän klikkaamalla Access the lab -painiketta, jolloin selaimeen aukesi verkkokaupan etusivu. Arvelin, että kirjautumiseen liittyvä hyökkäys kannattaisi aloittaa kirjautumissivulta, joten siirryin oikean yläkulman ”My account” -linkistä kirjautumissivulle.

Tehtävänannon mukaisesti yritin kirjautua ensin käyttäjänimellä administrator ja jätin salasanakentän tyhjäksi, jolloin sain ilmoituksen, että salasanakin täytyy kirjoittaa. PortSwigger vinkkasi syöttämään käyttäjätunnukseksi administrator’–, jolloin käyttäjätunnuksen lopussa olevat viivat muuttaisivat niiden jälkeen olevan asian kommentiksi ja se ikään kuin ohitettaisiin merkityksettömänä. Tein työtä käskettyä, mutta edelleen sain ilmoituksen, että salasanakenttä täytyy täyttää myös – kommenttiviivoista huolimatta. Niinpä kokeilin ja kirjoitin salasanaksi abc: jospa kommentoinnin myötä salasanan sisältö olisi merkityksetön, kunhan kenttään on kirjoitettu edes jotain:

Näin se olikin ja laboratoriotehtävä ratkesi.

c) PortSwigger Lab: SQL-injektion UNION-hyökkäys, joka määrittää kyselyn palauttamien sarakkeiden määrän

PortSwiggerin laboratoriotehtävä sisältää SQL-injektiohaavoittuvuuden tuotekategorian suodattimessa. Kyselyn tulokset palautetaan sovelluksen vastauksessa, joten on tarkoitus harjoitella UNION-hyökkäystä tietojen hakemiseen muista tauluista. Tehtävänannon mukaan hyökkäyksessä määritellään kyselyn palauttamien sarakkeiden lukumäärä SQL-injektion UNION-hyökkäyksen avulla siten, että kysely palauttaa ylimääräisen nolla-arvoja sisältävän rivin.

Aloitin laboratoriotehtävän klikkaamalla jälleen ”Access the lab” -painiketta, jolloin ikkunaan aukesi verkkokaupan etusivu. Tehtävä liittyi tuotekategorian suodattimeen, joten päätin suodattaa näkyviin vain lemmikeille suunnatut tuotteet:

Tuotekategoriasuodattimen käyttö näkyy myös selaimen osoiterivillä, jossa filter viittaa suodattimeen ja kategorialle (category) asetetaan haluttu tuotekategoria eli tässä tapauksessa lemmikit (pets):

https://0a750024040613348251acb900b7001a.web-security-academy.net/filter?category=Pets

Arvelin, että tuotekategorian suodatusta voisi muokata selaimen osoiterivillä UNION-operaattoria käyttäen. PortSwigger vinkkasi käyttämään kategoriana arvoa ’+UNION+SELECT+NULL–, jolloin selaimen osoiterivillä luki:

https://0a750024040613348251acb900b7001a.web-security-academy.net/filter?category='+UNION+SELECT+NULL--

Painoin enteriä, ja tämän seurauksena sain virheilmoituksen ”Internal Server Error”.

Jotain meni selvästikin pieleen. Kenties kyselyn palauttamien sarakkeiden lukumäärä ei täsmännyt. Jatkoin PortSwiggerin vinkkien mukaan nollien (null) lisäämistä selaimen osoiterivillä olevaan kyselyyn:

https://0a750024040613348251acb900b7001a.web-security-academy.net/filter?category='+UNION+SELECT+NULL,NULL--

Edelleen enterin painaminen tuotti saman virheilmoituksen kuin aiemmin. Niinpä jatkoin nollien lisäämistä, ja kolmannella nollalla kyselyn palauttamien sarakkeiden lukumäärä osoittautui yllättäen oikeaksi eikä virheilmoitusta enää kuulunut:

https://0a750024040613348251acb900b7001a.web-security-academy.net/filter?category='+UNION+SELECT+NULL,NULL,NULL--

Tämäkin laboratoriotehtävä ratkesi, vaikka tarvitsinkin PortSwiggerin vinkkejä ennen kuin sain juonesta kiinni, miten tällainen hyökkäys oikein toimii.

d) SQL-injektion UNION-hyökkäys, jossa yritetään löytää tekstiä sisältävä sarake

PortSwiggerin laboratoriotehtävässä tulee tehdä SQL-injektion UNION-hyökkäys ja yrittää löytää tekstiä sisältävä sarake. Edelleen haavoittuvuuden kerrotaan olevan tuotekategoriasuodattimessa.

Tehtävänannon mukaan hyökkäys tulee aloittaa selvittämällä SQL-injektion UNION-hyökkäyksellä kyselyn palauttaman vastauksen sarakkeiden lukumäärä. Näin tehtiin jo edellisessä tehtävässä, joten selvitin vastaavalla tavalla sarakkeiden määrän:

https://0a9c00c2045cb4e781443e3a003a009f.web-security-academy.net/filter?category='+UNION+SELECT+NULL,NULL,NULL--

Kolmella nollalla virheilmoitus ”Internal Server Error” vaihtui takaisin verkkokaupan sivuksi, joten sarakkeita oli tälläkin kertaa 3 kpl.

Tehtävänannon mukaan seuraavaksi täytyi tunnistaa sarake, joka olisi yhteensopiva merkkijonotietojen kanssa. Laboratoriotehtävä tarjosi satunnaisen arvon, joka tuli saada näkyviin SQL-kyselyn avulla. Ilmeisesti tämä satunnainen arvo oli oranssin ”Back to lab home” -painikkeen alapuolella mainittu merkkijono:

Make the database retrieve the string: ’OWL17u’

Tehtävänanto ohjeisti suorittamaan SQL-injektion UNION-hyökkäyksen siten, että kysely palauttaisi lisärivin, joka sisältäisi annetun arvon. Tällä tekniikalla selvitettäisiin, mitkä sarakkeet olisivat yhteensopivia merkkijonotietojen kanssa.

Aloin käydä järjestelmällisesti vaihtoehtoja läpi ja sijoitin arvon ’OWL17u’ yllä mainittuun, kolme nollaa sisältävään osoitteeseen nollan paikalle:

https://0a9c00c2045cb4e781443e3a003a009f.web-security-academy.net/filter?category='+UNION+SELECT+'OWL17u',NULL,NULL--

Tämä yritys päättyi taas virheilmoitukseen ”Internal Server Error”, joten merkkijonoja ei ollut ainakaan ensimmäisessä sarakkeessa.

https://0a9c00c2045cb4e781443e3a003a009f.web-security-academy.net/filter?category='+UNION+SELECT+NULL,'OWL17u',NULL--

Nyt verkkokaupan sivu tuli taas näkyviin ja UNION-hyökkäys meni läpi palauttaen tekstin ”OWL17u”. Siispä merkkijonoja sisältävä sarake oli keskimmäinen kolmesta sarakkeesta.

e) SQL-injektion UNION-hyökkäys, jolla haetaan tietoja muista tauluista

Aiempien PortSwiggerin laboratoriotehtävien tapaan tässäkin tehtävässä tuotekategoriasuodatin sisältä SQL-injektiohaavoittuvuuden. Tehtävänä on suorittaa SQL-injektion UNION-hyökkäys, jolla haetaan tietoja muista tauluista. Tehtävänannossa kerrotaan tietokannan sisältävän taulun nimeltä users, jossa on sarakkeet username ja password. Tehtävän ratkaisemiseksi on haettava SQL-kyselyllä sekä kaikki käyttäjätunnukset salasanoineen että kirjauduttava käyttäjätunnuksella administrator verkkokauppaan.

Avasin verkkokaupan etusivulla tuotekategorian, jolloin sain näkyviin tuotekategoriasuodattimen selaimen osoiteriville. PortSwiggerin vinkin mukaan korvasin tuotekategorian nimen suodattimessa SQL-kyselyllä, jossa pyydetään tuomaan käyttäjätunnukset ja salasanat users-taulusta:

'UNION SELECT username, password FROM users--

https://0a04007b047f4bda8155f4ef00c300be.web-security-academy.net/filter?category='+UNION+SELECT+username,+password+FROM+users--

Tällä kyselyllä sivulle tulostui käyttäjätunnuksia ja niiden salasanoja. Siirryin ”My account” -sivulle ja kokeilin kirjautua administratorin tunnuksilla verkkokauppaan:

käyttäjätunnus: administrator
salasana: n7ri9nrycwovw89c6z3z

Tunnukset toimivat ja sain ilmoituksen, että olen nyt kirjautunut tilille käyttäjätunnuksella administrator. Laboratoriotehtävä oli siis suoritettu.

f) SQL-injektion UNION-hyökkäys, joka hakee useita arvoja yhdestä sarakkeesta

Aiempien PortSwiggerin tehtävien tapaan verkkokaupan tuotekategoriasuodatin sisälsi jälleen SQL-injektion haavoittuvuuden. Tehtävänä oli suorittaa SQL-injektion UNION-hyökkäys, joka hakee useita arvoja yhdestä sarakkeesta, ja nämä arvot sijaitsevat toisessa taulussa.

Tehtävänannon mukaan tietokanta sisältää taulun users, jossa on sarakkeet username ja password. Tehtävän ratkaisemiseksi täytyy todentaa tunnusten oikeellisuus ja kirjautua käyttäjätunnuksella administrator verkkokauppaan.

PortSwiggerin vinkin mukaan kokeilin, mitä tapahtuu, jos laitan tuotekategoriasuodattimeen seuraavan SQL-kyselyn:

'UNION SELECT NULL,'abc'--

https://0a2f0034034ed69e8087678d00ed0025.web-security-academy.net/filter?category='+UNION+SELECT+NULL,'abc'--

Ilmeisesti sarakkeiden lukumäärä oli nyt oikea, sillä jo tutuksi tulleen virheilmoituksen (Internal Server Error) sijaan sivulle tulostui SQL-kyselyssä mainittu teksti abc:

Tämän perusteella SQL-kyselyyn pitänee syöttää ’abc’-tekstin tilalle kysely käyttäjätunnuksista ja salasanoista siten, että kysely on kutakuinkin muotoa:

UNION SELECT NULL, username, password FROM users

Tosin yllä username ja password pitäisi saada jotenkin yhdistettyä ilman pilkkua, jotta niitä käsiteltäisiin ikään kuin samassa sarakkeessa olevina tietoina. PortSwigger vinkkaa tekemään tämän seuraavasti:

'+UNION+SELECT+NULL,username||'~'||password+FROM+users--

Syötin tämän kokeeksi selaimen osoiterivin tuotekategoriasuodattimeen, jolloin sivulle tulostui käyttäjätunnuksia ja salasanoja erotettuna ~-merkillä:

https://0a2f0034034ed69e8087678d00ed0025.web-security-academy.net/filter?category=’+UNION+SELECT+NULL,username||’~’||password+FROM+users–

Lopuksi yritin kirjautua My account -sivulla käyttäen jälleen administratorin tunnuksia.

käyttäjätunnus: administrator

salasana: ditdw70tl6rpggk0cnbl

Käyttäjätunnus ja salasana toimivat ja sain jälleen ilmoituksen onnistuneesta kirjautumisesta käyttäjätunnuksella administrator. Näin laboratoriotehtävä oli suoritettu.

g) SQL-injektion UNION-hyökkäys, jolla selvitetään tietokannan tyyppi ja versio Oraclessa

Viimeisessä PortSwiggerin laboratoriotehtävässä tuli selvittää verkkokaupan käyttämän tietokannan tyyppi ja versio Oraclessa hyödyntäen SQL-injektion UNION-hyökkäystä, kun jälleen tiedettiin tuotekategoriasuodattimen sisältävän SQL-injektiohaavoittuvuuden.

Käytin apuna PortSwiggerin cheat sheet -listaa, jossa muistin olevan esimerkin, miten Oracle-tietokannan versio selvitetään. Cheat sheet -listan pohjalta kokeilin lisätä selaimen osoiteriville tuotekategoriasuodattimen parametriksi seuraavan SQL-kyselyn:

' UNION SELECT banner FROM v$version

https://0a960029030bde888060b750008200db.web-security-academy.net/filter?category='+UNION+SELECT+banner+FROM+v$version

Valitettavasti tämä kysely tuotti vain virheilmoituksen ”Internal Server Error”.

PortSwigger vinkkasi Oraclen taulusta nimeltä dual, jota voi hyödyntää tehtävässä. Niinpä muokkasin SQL-kyselyäni ja vaihdoin kyselyn kohdetaulun nimeksi dual:

https://0a960029030bde888060b750008200db.web-security-academy.net/filter?category=’+UNION+SELECT+banner+FROM+dual

Edelleen sain vain virheilmoituksen ”Internal Server Error”.

PortSwigger vinkkasi edelleen käyttämään kahta saraketta ja syöttämään tuotekategoriasuodattimeen seuraavan SQL-kyselyn:

'+UNION+SELECT+'abc','def'+FROM+dual--

Sivulle tulostuneiden, SQL-kyselyn sisältämien tekstien perusteella kyselyn muoto oli nyt oikea eli sarakkeita on kaksi, mutta kyselyn sisältö vaatisi vielä hiomista:

ProtSwigger cheat sheet valotti Oraclen tietokannan versiotietoja etsiessä hyvän SQL-kyselyn olevan muotoa

SELECT banner FROM v$version

joten muokkasin jälleen selaimen osoiterivillä olevaa SQL-kyselyäni:

' UNION SELECT BANNER, NULL FROM v$version--
https://0a960029030bde888060b750008200db.web-security-academy.net/filter?category='+UNION+SELECT+BANNER,+NULL+FROM+v$version----

Näköjään ensimmäinen yritykseni olisi sittenkin toiminut, jos vain olisin ymmärtänyt laittaa kyselyn loppuun kaksi viivaa ja välilyönnin kommentoimaan kyselyn jälkeen tulevat asiat pois. Itse asiassa kommenttiviivoja tuli SQL-kyselyyni liiankin kanssa, sillä kaksi olisi riittänyt mutta näemmä neljäkin tuotti toivotun tuloksen. Koska viivoja oli vähintään kaksi, viivat kuitenkin toimivat kommentointina.

Viimeisin SQL-kyselyni tulosti sivulle tietoja Oraclen tietokannasta:

Oracle Database 11g Express Edition Release 11.2.0.2.0 – 64bit Production
PL/SQL Release 11.2.0.2.0 – Production

Näin tämäkin laboratoriotehtävä oli onnistuneesti suoritettu.

Lähteet

Indeed Editorial Team 1.10.2022. Cialdini’s 6 Principles: Definition, Benefits and Tips. Luettavissa: https://www.indeed.com/career-advice/career-development/cialdini-principles. Luettu: 6.5.2023.

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

PortSwigger s.a a. SQL injection UNION attacks. Luettavissa: https://portswigger.net/web-security/sql-injection/union-attacks. Luettu: 6.5.2023.

PortSwigger s.a b. SQL injection cheat sheet. Luettavissa: https://portswigger.net/web-security/sql-injection/cheat-sheet. Luettu: 6.5.2023.

Artikkelin osiot d-g on täydennetty 8.5.2023.

Kommentoi

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