Teknologian jakaminen

Toissijainen sql-injektio

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

toissijainen injektio

Toissijaiset lisäyshaavoittuvuudet ovat tietoturva-aukkojen muoto, joka on laajalle levinnyt verkkosovelluksissa. Ensisijaiseen injektiohaavoittuvuuteen verrattuna toissijainen injektiohaavoittuvuus on vaikeampi havaita, mutta sillä on sama hyökkäysvoima kuin ensisijaisella injektiohaavoittuvuudella.

Hakkerit rakentavat dataa lähettämällä HTTP-tietopakettipyyntöjä palvelimelle käsiteltäväksi selaimessa tai muussa ohjelmistossa. Lähetetty datapakettipyyntö voi sisältää hakkerin muodostamia SQL-lauseita tai komentoja.
Palvelinpuolen sovellus tallentaa hakkerin toimittamat tiedot, yleensä tietokantaan. Tallennettujen tietotietojen päätehtävä on tarjota sovellukselle alkuperäistä syöttötietoa muiden toimintojen suorittamista ja asiakkaan pyyntöihin vastaamista varten.
Hakkeri lähettää palvelimelle toisen pyyntödataviestin, joka on eri kuin ensimmäinen.
Kun palvelin on vastaanottanut hakkerin lähettämän toisen pyyntötiedon, palvelin kysyy pyynnön käsittelemiseksi tietokantaan jo tallennetut tiedot ja käsittelee ne aiheuttaen hakkerin ensimmäisessä pyynnössä muodostaman SQL-lauseen tai komennon. olla palvelussa, joka suoritetaan pääteympäristössä.
Palvelin palauttaa suoritustulostiedot Hakkerit voivat käyttää palautettuja tulostietoja määrittääkseen, onko toissijaista lisäyshaavoittuvuutta hyödynnetty.

Yhteenvetona voidaan todeta, että toissijainen lisäys johtuu siitä, että tietoja ei ole suodatettu tietokantaan tallennettaessa. Ensin muodostetaan erikoismerkkipyyntö tallennettavaksi tietokantaan ja sitten kun toinen pyyntö lähetetään, merkit, jotka tallennetaan. toimitettiin tietokantaan ensimmäistä kertaa, jolloin muodostuu uusi suoritettava sql-lause.Otetaan esimerkkinä sqli-labs level 24

sqli-labs less-24

1. Napsauta alla rekisteröidäksesi käyttäjä


Täällä rekisteröity käyttäjätunnus on admin'#

         

Tässä vaiheessa tarkistamme tietokannan, rekisteröityneet käyttäjät on tallennettu ja adminin salasana on DDD

2. Kirjaudu sisään rekisteröidyllä tilillä ja vaihda salasanaksi ccccc

Tällä hetkellä se pyytää, että salasana on vaihdettu onnistuneesti.

Tällä hetkellä havaitsimme, että järjestelmänvalvojan salasanaksi on vaihdettu ccccc, mutta rekisteröityneen käyttäjän admin'# salasanaa ei muutettu.

Haavoittuvuuden syy

1. Erikoismerkit, kuten ' ja #, ovat sallittuja käyttäjän rekisteröinnin aikana.

2. Salasanan vaihtosivun lähdekoodissa havaitaan, että siinä on ilmeinen lisäyshaavoittuvuus.

$sql = "PÄIVITYS käyttäjät SET PASSWORD='$pass' missä käyttäjätunnus='$käyttäjänimi' ja salasana='$curr_pass' ";

Kun kirjaudumme sisään tilin admin'# tilille ja vaihdamme salasanan, sql-lauseesta tulee seuraava: #Kommentoi seuraava koodi, jolloin käyttäjän adminin salasanaksi vaihtuu ccccc

$sql = "PÄIVITYS käyttäjät SET PASSWORD='$pass' missä username='admin'#' and password='$curr_pass' ";

Alkuperäinen linkki: https://blog.csdn.net/qq_44159028/article/details/114325805