DatamaskinerProgrammering

Hva er injeksjon av SQL?

Antallet sider på Internett er i stadig vekst. Tatt for utvikling av alle som kan. Og uerfarne Webutviklere bruker ofte usikre og gammel kode. Og det skaper en masse smutthull for kriminelle og hackere. Enn de er. En av de mest klassiske sårbarheter - SQL-injeksjon.

En bit av teori

Mange vet at de fleste nettsteder og tjenester på nettverket bruker SQL database lagring. Dette er et strukturert spørrespråk som lar deg kontrollere og administrere lagring av data. Det finnes mange forskjellige versjoner av database management system database - Oracle, MySQL, Postgre. Uavhengig av navn og type, de bruker de samme spørringen data. Det er her ligger den potensielle sårbarheten. Dersom utbygger ikke klarte å håndtere korrekt og sikkert be om, kan en angriper utnytte dette og bruke spesielle taktikker for å få tilgang til databasen, og deretter - og til alle byggeledelse.

For å unngå slike situasjoner, må du riktig optimalisere koden og å følge nøye med på en måte som en forespørsel blir behandlet.

Sjekk for SQL-injeksjon

For å bestemme tilstedeværelsen av et sikkerhetsproblem i nettverket har en vekt av ferdige automatiserte programvaresystemer. Men det er mulig å utføre en enkel sjekk manuelt. For å gjøre dette, kan du gå til en av teststeder og i adresselinjen for å prøve å føre en databasefeil. For eksempel kan et skript på nettstedet ikke behandle forespørselen og ikke trimme dem.

For eksempel er det nekiy_sayt / index.php? Id = 25

Den enkleste måten - å sette 25 etter sitat og sende forespørselen. Hvis det oppstod ingen feil, enten på stedet og filter alle forespørsler blir håndtert på riktig måte, eller er deaktivert i innstillingene for sin produksjon. Hvis en side lastes på nytt med problemene, så sårbarheten til SQL-injeksjon.

Etter at hun fant ut, kan du prøve å bli kvitt det.

For å gjennomføre dette sikkerhetsproblemet trenger å vite litt om SQL-spørringer lag. En av dem - UNION. Det bringer sammen flere søkeresultatene til én. Så vi kan beregne antall felt i tabellen. Eksempel første spørringen er:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1.

I de fleste tilfeller bør denne posten generere en feil. Dette betyr at antall felt er ikke lik 1. Dermed velger de alternativene av en eller høyere, er det mulig å etablere sin eksakte tall:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

Det vil si, når feilen vil ikke lenger vises, betyr det at antall felt for å gjette.

Det er også en alternativ løsning på dette problemet. For eksempel når et stort antall felt - 30, 60 eller 100. Denne kommandoen GROUP BY. Det grupper resultatene av en spørring på noe grunnlag, for eksempel id:

  • nekiy_sayt / index.php? id = 25 GROUP BY 5.

Hvis ikke er mottatt feilen, er feltene mer enn 5. Dermed erstatte alternativer fra en ganske bredt spekter, er det mulig å beregne hvor mange av dem faktisk.

Dette eksemplet SQL-injeksjon - for nybegynnere som ønsker å prøve seg i testing av sitt nettsted. Det er viktig å huske at for uautorisert tilgang til en annen tilgjengelig artikkel i straffeloven.

Hovedtypene av injeksjons

Implementere problemet ved SQL-injeksjon i flere utførelsesformer. Neste er de mest populære metodene:

  • UNION søket SQL -injeksjon. Et enkelt eksempel på denne type er allerede blitt undersøkt ovenfor. Det er realisert på grunn av en feil i kontroll av innkommende data, som ikke er filtrert.

  • Error-baserte SQL-injeksjon. Som navnet tilsier, er denne type bruker også en feil, sender uttrykk sammensatt syntaktisk feil. Deretter er det avskjæring av svar overskrifter, analyse som kan utføres senere SQL-injeksjon.

  • Stablet spør SQL -injeksjon. Dette sikkerhets bestemmes ved å utføre påfølgende anmodninger. Den er særpreget ved tilsetningen ved slutten av tegnet ";". Denne tilnærmingen er ofte implementert for å få tilgang til gjennomføring av lese og skrive data eller operativsystemfunksjoner, hvis rettigheter tillater det.

Programvare for å søke SQL-sårbarheter

Er det for SQL-injeksjon, programmet vanligvis har to komponenter - et nettsted søke etter mulige sårbarheter, og bruke dem til å få tilgang til data. Det er noen verktøy for nesten alle kjente plattformer. Funksjonaliteten i stor grad forenkler sjekke nettsiden for å knekke SQL-injeksjon.

Sqlmap

Svært kraftig skanner som fungerer med de fleste databaser. Den støtter forskjellige metoder for gjennomføring av SQL-injeksjon. Det har evnen til å automatisk gjenkjenne type passord hash cracking og ordbok. Presentere og funksjonelle opplasting og nedlasting fra en server.

Installasjon på Linux er utført ved hjelp av kommandoer:

  • git klone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • ./sqlmap.py --wizard.

For Windows er tilgjengelig som et alternativ med kommandolinjen og grafisk brukergrensesnitt.

jSQL Injection

jSQL Injeksjon - en plattformuavhengig verktøy for å teste anvendelsen av SQL sårbarheter. Skrevet i Java, slik at systemet må være installert JRE. Stand til å håndtere GET forespørsler, POST, header, cookie. Den har en praktisk grafisk grensesnitt.

Installasjonen av denne programvarepakken er som følger:

wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | grep-E -o '/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} JAR '| hode-n 1 '

Lansering er ved hjelp av kommandoen java-jar ./jsql-injection-v*.jar

For å starte testområdet på SQL-sårbarhet, må du taste inn adressen i det øverste feltet. De er separate for GET og POST. Med et positivt resultat, vil listen over tilgjengelige tabeller vises i det venstre vinduet. Du kan se dem og lære noen konfidensiell informasjon.

Kategorien «Admin side» brukes til å finne de administrative paneler. På den ved hjelp av spesielle maler søker automatisk i systemet registrerer privilegerte brukere. Fra dem kan du få bare en hash av passordet. Men han har i verktøykassen av programmet.

Etter å ha funnet alle sårbarheter og injeksjon nødvendige undersøkelser, vil verktøyet tillate tjeneren å fylle i filen eller omvendt, laste det ned derfra.

SQLI Dumper v.7

Dette programmet - enkel å bruke verktøy for å finne og implementere SQL sårbarheter. Den produserer FN er basert på den såkalte Dorcas. Sin liste kan bli funnet på Internett. Dorca for SQL-injeksjon - disse er spesielle maler av søk. Med deres hjelp, kan du finne potensielt sårbare området gjennom en søkemotor.

Verktøy for trening

Itsecgames.com på stedet er det en spesiell sett med verktøy som gjør det mulig for eksempel viser hvordan du gjør SQL-injeksjon og teste den. For å dra, er det nødvendig å laste ned og installere. Arkivet inneholder et sett med filer som er strukturen i området. For å installere det må i det eksisterende systemet for sett med Apache web server, MySQL og PHP.

Pakk ut arkivet i en web server mappe, må du gå til adressen oppgitt når du installerer denne programvaren. En side med brukerregistrering. Her må du skrive inn informasjon og klikk «Opprett». Flytte brukeren til en ny skjerm, blir du bedt om å velge en av de testtilfeller. Blant dem er det både beskrevet ved injeksjon, og mange andre test elementer.

Det er verdt å vurdere et eksempel på SQL-injeksjon typen GET / Search. Her må du velge den og klikke «Hack». Før brukeren vises, og søkestrengen etterligning av en film nettsted. For å sortere filmer kan være lang. Men det er bare 10. For eksempel kan du prøve å gå inn i Iron Man. Det vil indikere filmen, så området fungerer, og tabellene den inneholder. Nå må vi sjekke om spesialtegn script filtre, spesielt tilbud. For å gjøre dette, legg til 'i adressefeltet. " Videre må dette gjøres etter filmens tittel. Nettstedet vil gi en feil Feil: Du har en feil i SQL syntax; sjekk manualen som tilsvarer din MySQL server versjon for retten syntaks å bruke nær '%' 'på linje 1, som sier at tegnene fortsatt ikke håndteres riktig. Så du kan prøve å erstatte din forespørsel. Men vi må først regne ut antall felt. Den brukes for denne ordren ved, som er innført etter sitater: http://testsites.com/sqli_1.php?title=Iron+Man 'ordre ved 2 - & action = søk.

Denne kommandoen viser bare informasjon om filmen, det er, er antall felt større enn 2. Den doble bindestrek forteller serveren at andre forespørsler må kasseres. Nå må vi sortere ut, setter økende betydning så lenge feilen ikke blir skrevet ut. Til slutt viser det seg at feltene vil være 7.

Nå er det på tide å få noe nyttig ut av basen. Vil noe endre forespørselen i adressefeltet, og bringer den til en form: http://testsites.com/sqli_1.php?title=Iron+Man 'union velge en, database (), bruker (), 4, passord, 6, 7 fra brukere - & action = søk. Som et resultat av gjennomføringen vil vise strengen med passord-hasher, som lett kan konverteres til forståelige symboler ved å bruke en av de elektroniske tjenestene. Et tryllet litt og plukket opp et feltnavn med en pålogging, kan du få tilgang til en annens oppføring, slik som admin av nettstedet.

Produktet har en vekt arter injeksjon typer, der de vil øve. Man må huske at anvendelsen av disse ferdighetene i nettverket på virkelige nettsteder kan være straffbart.

Injeksjon og PHP

Som regel PHP-kode, og er ansvarlig for de nødvendige behandling av forespørsler fra brukeren. Derfor, på dette nivået du trenger for å bygge et forsvar mot SQL-injeksjon i PHP.

Først, la oss gi noen enkle retningslinjer, på grunnlag av hvor det er nødvendig å gjøre det.

  • Data må alltid bli behandlet før de blir plassert inn i databasen. Dette kan gjøres enten ved hjelp av eksisterende uttrykk, eller ved å organisere spørringer manuelt. Også her bør ta hensyn til at de numeriske verdiene er konvertert til den typen som er nødvendig;
  • Unngås bedt om ulike kontrollstrukturer.

Nå litt om reglene for kompilering spørringer i MySQL for å beskytte mot SQL-injeksjon.

I utarbeidelsen noen uttrykk til å spørre er det viktig å skille data fra SQL søkeord.

  • SELECT * FROM tabell WHERE navn = Zerg.

I denne konfigurasjonen, kan systemet tror at Zerg - navnet på alle felt, så du må legge den i anførselstegn.

  • SELECT * FROM tabell WHERE navn = 'Zerg'.

Men det er tider når verdien i seg selv inneholder sitater.

  • SELECT * FROM tabell WHERE navn = 'Côte d'Ivoire'.

Her bare håndtere en del av Côte d, og resten kan bli oppfattet som et team, som selvfølgelig ikke. Derfor oppstår en feil. Da trenger du denne typen screening data. For å gjøre dette, bruker en omvendt skråstrek - \.

  • SELECT * FROM tabell WHERE navn = 'cat-d \' Ivoire'.

Alle de ovennevnte refererer til radene. Hvis handlingen foregår med et tall, da den ikke trenger noen sitater eller skråstreker. De bør imidlertid være nødvendig å bruke krefter føre til ønsket datatype.

Det er anbefalinger som feltnavnet må stå i backquotes. Dette symbolet er på venstre side av tastaturet, sammen med en tilde "~". Dette er for å sikre at MySQL kan nøyaktig skille navnet på feltet fra søkeordet ditt.

Dynamisk arbeid med data

Svært ofte, for å få noen data fra databasen ved hjelp av spørringer, genereres dynamisk. For eksempel:

  • SELECT * FROM tabell WHERE nummer = '$ nummer'.

Her er variabelen $ nummer sendes som fastsettelse av verdien av feltet. Hva vil skje hvis det blir 'Côte d'Ivoire'? Feil.

For å unngå dette problemet, selvfølgelig, kan du inkludere den "magiske sitater" innstillinger. Men nå dataene vil bli vist der det er nødvendig og ikke nødvendig. I tillegg, hvis koden er skrevet for hånd, kan du bruke litt mer tid til å lage motstandsdyktig mot sprekkdannelser selve systemet.

For den uavhengige tillegg av en skråstrek kan bruke mysql_real_escape_string.

$ Number = mysql_real_escape_string ($ tall);

$ År = mysql_real_escape_string ($ år);

$ Query = "INSERT INTO tabell (antall, år, klasse) VALUES ( '$ nummer', '$ årets, 11)".

Selv om koden og økt i volum, men potensielt ville det fungere mye tryggere.

plassholdere

Plassholdere - en slags markører som systemet gjenkjenner at dette er stedet du trenger for å erstatte en spesiell funksjon. For eksempel:

$ Sate = $ mysqli-> forberede ( "SELECT District fra Number WHERE navn =?");

$ Sate-> bind_param ( "s", $ nummer);

$ Sate-> utføre ();

Denne delen av koden tar en trening forespørsel mal og deretter binder variabelt antall, og utfører det. Denne tilnærmingen gjør det mulig å dele spørrebehandlingen og gjennomføringen. Dermed kan det bli frelst fra bruk av ondsinnet kode er SQL-.

Hvordan kan en angriper

Protection System - en svært viktig faktor, som ikke kan bli neglisjert. Selvfølgelig vil en enkel visittkortet være lettere å gjenopprette. Og hvis det er en stor portal, service, forum? Hva er konsekvensene hvis du ikke tenker på sikkerhet?

For det første kan hackere bryte integriteten både basen og fjerne den fullstendig. Og hvis nettstedets administrator eller hoster ikke gjøre en sikkerhetskopi, vil du ha harde tider. Fremfor alt, en inntrenger, cracking et enkelt nettsted, kan du gå til den andre postet i samme server.

Neste er tyveri av personlig informasjon om besøkende. Hvordan å bruke - alt er bare begrenset av fantasien av en hacker. Men i alle fall vil konsekvensene ikke være veldig hyggelig. Spesielt hvis inneholdt finansiell informasjon.

Dessuten kan angriperen flette databasen selv og deretter presse penger for sin retur.

Feilinformasjon brukere på vegne av nettstedet administrator, kan den personen de er ikke å være, også negative konsekvenser som mulig svindel fakta.

konklusjon

All informasjon i denne artikkelen er kun ment som informasjon. Bruk den bare trenger å teste sine egne prosjekter når det oppdager sårbarheter og løse dem.

For en mer inngående studie av teknikker for hvordan man skal gjennomføre SQL-injeksjon, er det nødvendig å starte med selve forskningsmuligheter og funksjoner i SQL språket. Som kompilert spørringer, søkeord, datatyper og bruken av det hele.

Også kan ikke gjøre uten å forstå driften av PHP og HTML-elementer funksjoner. Den primære bruken sårbare punkter for injeksjon - en adresselinje, og ulike søkefeltet. Læring PHP funksjoner, vil metoden for implementering og funksjoner finne ut hvordan å unngå feil.

Nærværet av mange ferdige programvareverktøy tillater detaljert analyse av de bygnings kjente svakheter. En av de mest populære produktene - kali linux. Dette bildet av en Linux-basert operativsystem, som inneholder et stort antall verktøy og programmer som kan utføre omfattende analyse av nettstedet styrke.

Hva du trenger å vite hvordan å hacke siden? Det er veldig enkelt - det er nødvendig å være klar over den potensielle sårbarheter av ditt prosjekt eller nettsted. Spesielt hvis det er en nettbutikk med online betaling, hvor betalingsbrukerdata kan bli svekket av en angriper.

For profesjonell studie av eksisterende informasjon sikkerhetspersonell vil kunne sjekke ut området for en rekke kriterier og dybde. Starter fra en enkel HTML-injeksjoner og social engineering og phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 no.unansea.com. Theme powered by WordPress.