ComputereProgrammering

Hvad er injektion af SQL?

Antallet af sider på internettet vokser støt. Taget for udviklingen af alle dem, der kan. Og uerfarne webudviklere bruger ofte usikre og gamle kode. Og det skaber en masse smuthuller for kriminelle og hackere. End de er. En af de mest klassiske sårbarheder - SQL-injektion.

Lidt af teori

Mange mennesker ved, at de fleste websteder og tjenester på netværket bruger SQL database opbevaring. Dette er en struktureret forespørgsel sprog , der gør det muligt at kontrollere og styre lagring af data. Der er mange forskellige versioner af database management system database - Oracle, MySQL, PostGre. Uanset navn og type, de bruger de samme forespørgslen data. Det er her, ligger den potentielle sårbarhed. Hvis udvikleren undladt at håndtere korrekt og sikkert beder om, kan en hacker udnytte dette og bruge specielle taktik for at få adgang til databasen, og derefter - og til alle site management.

For at undgå sådanne situationer, skal du ordentligt optimere koden og nøje overvåge på en måde, hvorpå en anmodning bliver behandlet.

Check for SQL-injektion

For at fastslå tilstedeværelsen af en sårbarhed i netværket har en vægt på færdige automatiserede software systemer. Men det er muligt at foretage en simpel kontrol manuelt. For at gøre dette, gå til en af de test sites og i adresselinjen for at forsøge at få en database fejl. For eksempel kan et script på sitet ikke håndtere anmodningen og ikke trimme dem.

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

Den nemmeste måde - at sætte 25 efter citatet og sende anmodningen. Hvis der opstod ingen fejl, enten på stedet, og filteret alle anmodninger håndteres korrekt, eller er deaktiveret i indstillingerne for deres produktion. Hvis en side genindlæses med problemerne, så sårbarheden over for SQL-injektion er.

Efter hun fandt ud af, kan du prøve at slippe af med det.

For at gennemføre denne sårbarhed behov for at vide lidt om SQL-forespørgsler hold. En af dem - UNION. Den omfatter flere forespørgsel resultater i én. Så vi kan beregne antallet af felter i tabellen. EKSEMPEL første forespørgsel er:

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

I de fleste tilfælde bør denne rekord generere en fejl. Det betyder, at antallet af felter er ikke lig med 1. Således vælger de muligheder for 1 eller større, er det muligt at etablere deres nøjagtige antal:

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

Det vil sige, når fejlen ikke længere vil blive vist, det betyder, at antallet af felter for at gætte.

Der er også en alternativ løsning på dette problem. For eksempel, når en lang række områder - 30, 60 eller 100. Denne kommando GROUP BY. Den grupperer resultaterne af en forespørgsel om eventuelle grunde, f.eks id:

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

Hvis der ikke er modtaget fejlen, så erstatte indstillinger fra en temmelig bred vifte, er det markerne mere end 5. således muligt at beregne, hvor mange af dem faktisk.

Dette eksempel SQL-injektion - for begyndere, der ønsker at prøve sig selv i afprøvningen af sit site. Det er vigtigt at huske, at for uautoriseret adgang til en anden tilgængelig artikel i straffeloven.

De vigtigste typer af injektion

Gennemføre sårbarhed ved SQL-injektion i adskillige udførelsesformer. Næste er de mest populære metoder:

  • Den UNION forespørgslen SQL injektion. Et simpelt eksempel på denne type er allerede blevet behandlet ovenfor. Det er realiseret på grund af en fejl ved kontrollen indkommende data, som ikke er filtreret.

  • Error-baserede SQL injektion. Som navnet antyder, er denne type anvender også en fejl, sender udtryk sammensat syntaktisk forkert. Så er aflytning af de svarheadere, analyse, som kan gennemføres senere SQL-injektion.

  • Stacked forespørgsler SQL injektion. Denne sårbarhed bestemmes ved at udføre successive anmodninger. Det er kendetegnet ved tilsætning i slutningen af tegnet ";". Denne tilgang er ofte implementeret for at få adgang til gennemførelsen af læse og skrive data eller operativsystemfunktioner, hvis privilegier tillader det.

Software til at søge SQL-sårbarheder

Er der til SQL-injektion, programmet har som regel to komponenter - et site scanne for mulige sårbarheder og bruge dem til at få adgang til data. Der er nogle værktøjer til næsten alle kendte platforme. Deres funktionalitet i høj grad letter kontrol hjemmeside til at knække din SQL-injektion.

Sqlmap

Meget kraftig scanner, der virker med de fleste databaser. Det understøtter forskellige metoder til implementering af SQL-injektion. Det har evnen til automatisk at genkende den type adgangskode, hash revnedannelse og ordbog. Nuværende og funktionel fil upload og download fra en server.

Installation på Linux udføres ved hjælp af kommandoer:

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

Til Windows er tilgængelig som en mulighed med kommandolinjen og grafisk brugergrænseflade.

jSQL Injection

jSQL Injection - et tværgående værktøj til afprøvning af anvendelsen af SQL sårbarhed. Skrevet i Java, så systemet skal installeres JRE. Stand til at håndtere GET anmodninger, POST, header, cookie. Det har en bekvem grafisk brugerflade.

Installationen af denne software pakke 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 '| head-n 1`

Oplæg er ved hjælp af kommandoen java -jar ./jsql-injection-v*.jar

For at starte testen site på SQL-sårbarhed, skal du indtaste adressen i det øverste felt. De er adskilt for GET og POST. Med et positivt resultat, vil listen over tilgængelige tabeller vises i venstre vindue. Du kan se dem og lære nogle fortrolige oplysninger.

Fanen «Admin side» bruges til at finde de administrative paneler. På det ved hjælp af specielle skabeloner søger automatisk systemet registrerer privilegerede brugere. Fra dem kan du få bare en hash af adgangskoden. Men han har i værktøjskassen af programmet.

Efter at have fundet alle de sårbarheder og injektion nødvendige undersøgelser, vil værktøjet gøre det muligt for serveren at udfylde din fil, eller omvendt, hente den derfra.

SQLi Dumper V.7

Dette program - let at bruge værktøj til at finde og implementere SQL sårbarheder. Det producerer FN er baseret på den såkaldte Dorcas. Deres liste kan findes på internettet. Dorca til SQL-injektion - disse er specielle skabeloner af søgeforespørgsler. Med deres hjælp, kan du finde potentielt sårbare websted via en søgemaskine.

Værktøjer til træning

Itsecgames.com på stedet er der et særligt sæt af værktøjer, der gør det muligt for eksempel viser, hvordan man gør SQL-injektion og teste det. For at kunne udnytte, er det nødvendigt at hente og installere. Arkivet indeholder et sæt filer, som er strukturen af sitet. For at installere det vil være nødvendigt i det eksisterende system af sæt af Apache webserver, MySQL og PHP.

Pak arkivet i en web-server mappe, du nødt til at gå til den indtastede adresse, når du installerer denne software. En side med brugerregistrering. Her skal du indtaste dine oplysninger, og klik på «Opret». Flytning af brugeren til et nyt skærmbillede, systemet beder dig om at vælge en af de prøvesager. Blandt dem er der begge beskrives ved injektion, og mange andre teststoffer.

Det er værd at overveje et eksempel på SQL-injektion typen GET / Search. Her skal du vælge den og klikke «Hack». Før brugeren vil blive vist, og søgestrengen efterligning af en film site. For at sortere film kan være lang. Men der er kun 10. For eksempel, kan du prøve at komme ind i Iron Man. Det vil indikere filmen, så sitet fungerer, og bordene den indeholder. Nu er vi nødt til at tjekke, om specialtegn script filtre, især citat. For at gøre dette, skal du tilføje 'i adresselinjen. " Desuden skal dette ske efter filmens titel. Sitet vil give en fejl Fejl: Du har en fejl i din SQL-syntaks; tjek manualen, der svarer til din MySQL-server version til den rette syntaks til at bruge nær '%' 'på linje 1, som fastslår, at de tegn, der stadig ikke håndteres korrekt. Så du kan prøve at erstatte din anmodning. Men vi skal først beregne antallet af felter. Det bruges til denne ordre ved, der er indført efter de citater: http://testsites.com/sqli_1.php?title=Iron+Man 'ordre ved 2 - & action = søgning.

Denne kommando viser kun oplysninger om filmen, som er, at antallet af områder er større end 2. Den dobbelte bindestreg fortæller serveren, at de andre anmodninger skal kasseres. Nu har vi at sortere ud, at sætte større og større betydning, så længe fejlen ikke udskrives. I sidste ende, viser det sig, at markerne bliver 7.

Nu er det tid til at få noget brugbart ud af basen. Vil en mindre ændring i anmodningen i adresselinjen, bringe den til en form: http://testsites.com/sqli_1.php?title=Iron+Man 'union vælge 1, database (), bruger (), 4, adgangskode, 6, 7 fra brugerne - & action = søgning. Som et resultat af dens gennemførelse ville vise strengen med password hashes, som let kan omdannes til forståelige symboler ved hjælp af en af de online-tjenester. En tryllet lidt og tog et feltnavn med et login, kan du få adgang til en andens post, såsom admin af sitet.

Produktet har en vægt arter injektion typer, som til praksis. Det bør erindres, at anvendelsen af disse færdigheder i netværket på rigtige steder kan være en strafbar handling.

Injektion og PHP

Som regel PHP-koden og er ansvarlig for den nødvendige behandling af anmodninger fra brugeren. Derfor på dette niveau, du har brug for at opbygge et forsvar mod SQL-injektion i PHP.

Først, lad os give et par enkle retningslinjer, på grundlag af hvilke det er nødvendigt at gøre det.

  • Dataene skal altid behandles, inden det bringes ind i databasen. Dette kan gøres enten ved at bruge eksisterende udtryk, eller ved at organisere forespørgsler manuelt. Også her bør tage hensyn til, at de numeriske værdier er konverteret til den type, der er nødvendig;
  • Undgås bedt forskellige kontrolstrukturer.

Nu lidt om reglerne for at udarbejde forespørgsler i MySQL at beskytte mod SQL-injektion.

Ved udarbejdelsen af eventuelle udtryk til at forespørge, er det vigtigt at adskille data fra SQL søgeord.

  • SELECT * FROM tabel WHERE navn = Zerg.

I denne konfiguration kan systemet tror, at Zerg - navnet på ethvert område, så du skal vedlægge det i anførselstegn.

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

Men der er tidspunkter, hvor den værdi, selv indeholder citater.

  • SELECT * FROM tabel WHERE navn = 'Elfenbenskysten'.

Her kun håndtere en del af Côte d, og resten kan opfattes som et hold, der naturligvis ikke. Derfor opstår der en fejl. Så har du brug for denne form for screening af data. For at gøre dette, skal du bruge en omvendt skråstreg - \.

  • SELECT * FROM tabel WHERE navn = 'kat-d \' Ivoire'.

Alt det ovenstående henviser til rækkerne. Hvis handlingen foregår med et nummer, så det behøver ikke nogen citater eller skråstreger. De bør dog være forpligtet til tvangsmæssigt føre til det ønskede datatype.

Der er anbefalinger, som feltnavn skal være anbragt i backquotes. Dette symbol er på venstre side af tastaturet, sammen med en tilde "~". Dette er for at sikre, at MySQL præcist kunne skelne navnet på feltet fra dit søgeord.

Dynamisk arbejde med data

Meget ofte, at få alle data fra databasen ved hjælp af forespørgsler, der genereres dynamisk. For eksempel:

  • SELECT * FROM tabel WHERE nummer = '$ tal'.

Her er variablen $ antal passerede som fastsættelse af værdien af feltet. Hvad vil der ske, hvis det får 'Elfenbenskysten'? Fejl.

For at undgå dette problem, selvfølgelig, kan du medtage de "magiske citater" indstillinger. Men nu dataene vil blive screenet hvor det er nødvendigt og ikke nødvendigt. Desuden, hvis koden er skrevet i hånden, kan du bruge lidt mere tid til at skabe resistente over for revner selve systemet.

For den uafhængige tilsætning af en skråstreg kan bruge mysql_real_escape_string.

$ Nummer = mysql_real_escape_string ($ nummer);

$ År = mysql_real_escape_string ($ år);

$ Query = "INSERT INTO tabel (nummer, år, klasse) VALUES ( '$ nummer', '$ års, 11)".

Selvom koden og steg i volumen, men dog potentielt det ville virke meget sikrere.

pladsholdere

Pladsholdere - en slags markører, systemet erkender, at dette er det sted, du har brug for at erstatte en speciel funktion. For eksempel:

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

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

$ Sate-> eksekvere ();

Denne del af koden tager en uddannelse anmodning skabelon og så binder det variabelt antal, og udfører det. Denne fremgangsmåde gør det muligt at opdele forespørgslen behandling og dens gennemførelse. Således kan det blive frelst fra brugen af ondsindet kode er SQL-.

Hvad kan en hacker

Protection System - en meget vigtig faktor, som ikke kan ignoreres. Selvfølgelig vil en simpel visitkort hjemmeside være lettere at gendanne. Og hvis det er en stor portal, service, forum? Hvad er konsekvenserne, hvis du ikke tænke på sikkerheden?

For det første kan en hacker at bryde integriteten af både basen og fjerne den helt. Og hvis webstedet administrator eller hoster ikke lave en backup, vil du have hårde tider. Frem for alt, en ubuden gæst, revner et enkelt sted, kan gå til den anden udstationeret i den samme server.

Næste er tyveri af personlige oplysninger om besøgende. Sådan bruger - alt er kun begrænset af fantasien af en hacker. Men under alle omstændigheder, vil konsekvenserne ikke være meget behageligt. Især hvis der er indeholdt finansielle oplysninger.

Også, kan angriberen fusionere databasen dig selv og derefter presse penge for sin tilbagevenden.

Misinformation brugere på vegne af webstedets administrator, kan den person, de ikke er, også være negative konsekvenser som mulige fakta svig.

konklusion

Alle oplysninger i denne artikel, er kun inkluderet til orientering. Brug den kun brug for at teste deres egne projekter, når den registrerer sårbarheder og løse dem.

For en mere dybdegående undersøgelse af teknikker til, hvordan man fører SQL-injektion, er det nødvendigt at starte med de faktiske forskningskapacitet og funktioner i SQL sproget. Som kompileret forespørgsler, nøgleord, datatyper, og brugen af det hele.

Også kan ikke gøre uden at forstå driften af PHP og HTML-elementer funktioner. Den primære anvendelse sårbare punkter til injektion - en adresse linje, og forskellige søgefeltet. Learning PHP funktioner, vil metoden til implementering og funktioner finde ud af at undgå fejl.

Tilstedeværelsen af mange færdiglavede softwareværktøjer tillader dybtgående analyse på webstedet kendte sårbarheder. En af de mest populære produkter - kali linux. Dette billede af en Linux-baseret operativsystem, som indeholder en lang række værktøjer og programmer, der kan udføre omfattende analyse af webstedet styrke.

Hvad du behøver at vide, hvordan at hacke sitet? Det er meget simpelt - det er nødvendigt at være opmærksom på de potentielle sårbarheder i dit projekt eller hjemmeside. Især hvis det er en online butik med online betaling, hvor betalingen brugerdata kan blive kompromitteret af en hacker.

Til professionel undersøgelse af eksisterende oplysninger sikkerhedspersonale vil være i stand til at tjekke stedet for en række forskellige kriterier og dybde. Med udgangspunkt i en simpel HTML-injektioner og til social engineering og phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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