ComputersProgrammering

Wat is de injectie van SQL?

Het aantal sites en pagina's op het web groeit gestaag. Genomen voor de ontwikkeling van al degenen die kan. En beginnende Web ontwikkelaars gebruiken vaak onveilig en oude code. En het zorgt voor veel achterpoortjes voor criminelen en hackers. Dan ze zijn. Een van de meest klassieke kwetsbaarheden - SQL-injectie.

Een beetje theorie

Veel mensen weten dat de meerderheid van de sites en diensten op het netwerk gebruik maken van de SQL-database opslag. Dit is een Structured Query Language die u toelaat om te controleren en beheren van de opslag van gegevens. Er zijn veel verschillende versies van de database management systeem databank - Oracle, MySQL, Postgre. Ongeacht de naam en het type, ze gebruiken dezelfde query data. Het is hier dat de potentiële kwetsbaarheid ligt. Als de ontwikkelaar niet naar behoren en veilig af te vragen, kan een aanvaller profiteren van deze en speciale tactiek te gebruiken om toegang tot de database te krijgen, en dan - en alle site management.

Om dergelijke situaties te voorkomen, moet u de code correct te optimaliseren en op de voet volgen op een wijze waarin een verzoek wordt verwerkt.

Controleer of SQL-injectie

Om de aanwezigheid van een lek in het netwerk te kunnen een gewicht van gerede geautomatiseerde softwaresystemen. Maar het is mogelijk een eenvoudige controle met de hand uit te voeren. Om dit te doen, ga dan naar een van de testlocaties en in de adresbalk om te proberen om een database fout veroorzaken. Zo kan bijvoorbeeld een script op de site niet aan het verzoek en ze niet te knippen.

Bijvoorbeeld, er nekiy_sayt / index.php? Id = 25

De eenvoudigste manier - tot en met 25 zetten na de offerte en stuurt het verzoek. Als er geen fout is opgetreden, hetzij op de site en filter alle verzoeken correct behandeld, of is uitgeschakeld in de instellingen van hun productie. Als een pagina opnieuw wordt geladen met de problemen, dan is de kwetsbaarheid voor SQL-injectie is.

Nadat ze erachter kwam, kunt u proberen om zich te ontdoen van het.

Om dit beveiligingslek noodzaak om een beetje weten over de uitvoering van SQL-queries teams. Een van hen - UNION. Het brengt een aantal zoekresultaten in een. Dus we kunnen het aantal velden in de tabel te berekenen. VOORBEELD eerste query is:

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

In de meeste gevallen moet dit record een fout genereren. Dit betekent dat het aantal velden is niet gelijk aan 1. Dus, het kiezen van de opties van 1 of meer, is het mogelijk om het exacte aantal vast te stellen:

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

Dat wil zeggen, als de fout niet meer zal verschijnen, betekent dit dat het aantal velden te raden.

Er is ook een alternatieve oplossing voor dit probleem. Bijvoorbeeld, wanneer een groot aantal gebieden - 30, 60 of 100. Deze opdracht GROUP BY. Deze groepen het resultaat van een zoekopdracht om welke reden, bijvoorbeeld id:

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

Als de fout niet is ontvangen, dan is het gebied meer dan 5. Zo, het vervangen van opties uit een tamelijk breed assortiment, is het mogelijk om daadwerkelijk te berekenen hoeveel van hen.

Dit voorbeeld van SQL-injectie - voor beginners die zich willen proberen bij het testen van haar site. Het is belangrijk te onthouden dat voor ongeoorloofde toegang tot een andere beschikbare artikel van het Wetboek van Strafrecht.

De belangrijkste soorten van de injectie

Implementeren lek door SQL-injectie in verschillende uitvoeringen. Vervolgens zijn de meest populaire methoden:

  • De UNION de query de SQL- injectie. Een eenvoudig voorbeeld van dit type is hierboven reeds besproken. Het wordt gerealiseerd als gevolg van een fout bij de controle van binnenkomende gegevens, die niet worden gefilterd.

  • -Error gebaseerde SQL-injectie. Zoals de naam al aangeeft, is dit type maakt ook gebruik van een fout, het verzenden van uitdrukkingen samengesteld syntactisch onjuist. Dan is er het onderscheppen van de antwoordheaders, analyseren welke later SQL-injectie kan worden uitgevoerd.

  • Gestapelde vraagt de SQL- injectie. Deze kwetsbaarheid wordt bepaald door het uitvoeren van opeenvolgende aanvragen. Het wordt gekenmerkt door de toevoeging aan het einde van het teken "". Deze aanpak wordt vaak uitgevoerd om toegang te krijgen tot de uitvoering van lezen en schrijven van gegevens of functies van het besturingssysteem, indien privileges toestaan.

Software voor het zoeken SQL-kwetsbaarheden

Is er voor SQL-injectie, het programma hebben meestal twee componenten - een site te scannen op mogelijke kwetsbaarheden en ze gebruiken om toegang te krijgen tot gegevens. Er zijn een aantal tools voor bijna alle bekende platforms. Hun functionaliteit aanzienlijk vergemakkelijkt het controleren website om uw SQL-injectie te kraken.

sqlmap

Zeer krachtige scanner die werkt met de meeste databases. Het ondersteunt verschillende methoden voor de uitvoering van SQL-injectie. Het heeft de mogelijkheid om het type wachtwoord hash kraken en woordenboek automatisch herkennen. Heden en functionele bestand uploaden en downloaden van een server.

Installatie op Linux wordt uitgevoerd met behulp van de commando's:

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

Voor Windows is beschikbaar als een optie met de opdrachtregel en grafische user interface.

jSQL Injection

jSQL Injection - een platform-gereedschap om het gebruik van SQL kwetsbaarheden. Geschreven in Java, zodat het systeem moet worden geïnstalleerd JRE. In staat om greep te krijgen verzoeken, POST, header, cookie. Het heeft een handige grafische interface.

De installatie van deze software pakket is als volgt:

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`

Lancering is met behulp van het commando java -jar ./jsql-injection-v*.jar

Met het oog op de test site op SQL-kwetsbaarheid te starten, moet u het adres in te voeren in het bovenste veld. Ze zijn apart voor GET en POST. Met een positief resultaat, zal de lijst met beschikbare tafels verschijnen in het linker venster. U kunt ze bekijken en leren een aantal vertrouwelijke informatie.

tab «beheerpagina» gebruikt om de administratieve panelen vinden. Op deze door middel van speciale templates zoekt automatisch registreert het systeem bevoorrechte gebruikers. Van hen kun je gewoon een hash van het wachtwoord. Maar hij heeft in de gereedschapskist van het programma.

Na het vinden van alle kwetsbaarheden en injectie mogelijke kanalen, zal het programma de server toegestaan om in uw bestand te vullen of, omgekeerd, te downloaden vanaf daar.

SQLi Dumper v.7

Dit programma - makkelijk te gebruiken hulpmiddel voor het vinden en implementeren van SQL-kwetsbaarheden. Het produceert de VN is gebaseerd op het zogenaamde Dorcas. De lijst is te vinden op het internet. Dorca voor SQL-injectie - dit zijn speciale templates van zoekopdrachten. Met hun hulp, kunt u potentieel kwetsbare site via een zoekmachine vinden.

Instrumenten voor opleiding

Itsecgames.com op het terrein is er een speciale set van tools die het mogelijk maakt het voorbeeld laat zien hoe u SQL-injectie te doen en te testen. Om te kunnen profiteren, is het noodzakelijk om te downloaden en te installeren. Het archief bevat een reeks bestanden, die is de structuur van de site. Om te installeren zal het nodig hebben in het bestaande systeem van set van Apache webserver, MySQL en PHP.

Pak het archief in een web server folder, je moet naar dit adres bij de installatie van deze software. Een pagina met registratie gebruiker. Hier moet u uw gegevens in te voeren en klik op «Start». de gebruiker Verhuizen naar een nieuw scherm, het systeem vraagt u om een van de testgevallen te selecteren. Onder hen zijn er zowel beschreven door injectie, en vele andere test items.

Het is het overwegen waard een voorbeeld van het type SQL-injectie GET / Search. Hier moet je om het te selecteren en klik op «Hack». Voordat de gebruiker zal verschijnen, en de zoekterm imitatie van een film website. Voor het sorteren films kunnen lang zijn. Maar er zijn slechts 10. Bijvoorbeeld, kunt u proberen om de Iron Man in te voeren. Het zal de film, dan is de site werkt, en de tafels die het bevat te geven. Nu moeten we controleren of speciale tekens script filters, in het bijzonder citaat. Om dit te doen, voegt u 'in de adresbalk. " Bovendien moet dit worden gedaan na de titel van de film. De site zal een fout fout geven: Je hebt een fout in uw SQL syntax; Raadpleeg de handleiding die overeenkomt met uw MySQL serverversie voor de juiste syntaxis om in de buurt van '%' gebruiken 'op lijn 1, waarin staat dat de personages zijn nog steeds niet goed behandeld. Dus je kunt proberen om uw verzoek te vervangen. Maar we moeten eerst berekenen van het aantal velden. Het wordt gebruikt voor deze bestelling door, die is ingevoerd na de aanhalingstekens: http://testsites.com/sqli_1.php?title=Iron+Man 'bestellen met 2 - & action = zoeken.

Met deze opdracht geeft alleen informatie over de film, dat wil zeggen, het aantal velden is groter dan 2. De dubbele koppelteken vertelt de server dat de andere verzoeken moeten worden weggegooid. Nu moeten we uitzoeken, waardoor toenemende belang zolang de fout niet wordt afgedrukt. Uiteindelijk blijkt dat de velden worden 7.

Nu is het tijd om iets nuttigs uit de basis te krijgen. Zal licht het verzoek te wijzigen in de adresbalk, waardoor het naar een vorm: http://testsites.com/sqli_1.php?title=Iron+Man 'union select 1, database (), gebruiker (), 4, wachtwoord, 6, 7 van gebruikers - & action = zoeken. Als gevolg van de uitvoering ervan zou de string met het wachtwoord hashes, die gemakkelijk kan worden omgezet in begrijpelijke symbolen via een van de online diensten weer te geven. Een toverde een beetje en pakte een veldnaam met een login, kunt u toegang tot de toetreding van iemand anders te krijgen, zoals de beheerder van de site.

Het product heeft een gewichtsgemiddeld soort injectie vormen, waarop de praktijk. Men mag niet vergeten dat de toepassing van deze vaardigheden in het netwerk op echte locaties een strafbaar feit kan zijn.

Injectie en PHP

In de regel, de PHP-code en is verantwoordelijk voor de noodzakelijke behandeling van verzoeken afkomstig van de gebruiker. Daarom is op dit niveau moet je een verdediging tegen SQL-injectie in PHP te bouwen.

Ten eerste, laten we een paar eenvoudige richtlijnen, op basis waarvan het nodig is om dit te doen.

  • De gegevens moeten altijd voor in de database worden geplaatst worden verwerkt. Dit kan worden gedaan door gebruik te maken van bestaande uitdrukkingen, of door het handmatig organiseren van queries. Ook hier moet rekening worden gehouden dat de numerieke waarden worden omgezet naar het type dat nodig is;
  • Vermeden gevraagd diverse controle-structuren.

Nu een beetje over de regels van het opstellen van queries in MySQL te beschermen tegen SQL-injectie.

Bij het opstellen van de aanduidingen die op te vragen is het belangrijk om de data te scheiden van de SQL zoekwoorden.

  • SELECT * FROM tabel WHERE name = Zerg.

In deze configuratie kan het systeem denken dat Zerg - de naam van een veld, dus je moet het tussen aanhalingstekens.

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

Echter, er zijn momenten waarop de waarde zelf bevat quotes.

  • SELECT * FROM tabel WHERE naam = 'Ivoorkust'.

Hier alleen omgaan met een deel van de Côte d, en de rest kan als een team, die, uiteraard, niet worden waargenomen. Daarom is een fout optreedt. Dan is dit soort screening gegevens nodig. Om dit te doen, gebruik dan een backslash - \.

  • SELECT * FROM tabel WHERE naam = 'cat-d \' Ivoire'.

Al het bovenstaande heeft betrekking op de rijen. Als de actie vindt plaats met een aantal, dan is het geen aanhalingstekens of slashes nodig. Echter, dient te worden verlangd met kracht tot het gewenste gegevenstype.

Er zijn aanbevelingen die de veldnaam moet tussen aanhalingstekens. Dit symbool is aan de linkerkant van het toetsenbord, samen met een tilde "~". Dit is om ervoor te zorgen dat MySQL nauwkeurig kunnen onderscheiden van de naam van het veld van uw zoekwoord.

Dynamische werken met data

Heel vaak, om het even welke gegevens op te halen uit de database met behulp van query, dynamisch gegenereerd. Bijvoorbeeld:

  • SELECT * FROM tabel WHERE aantal = '$ number'.

Hier wordt de variabele $ nummer doorgegeven als het bepalen van de waarde van het veld. Wat gebeurt er als het wordt 'Ivoorkust'? Fout.

Om deze problemen te voorkomen, natuurlijk, kunt u de "magic quotes" instellingen omvatten. Maar nu de gegevens zullen worden gescreend waar nodig en niet nodig. Bovendien, als de code wordt met de hand geschreven, kunt u een beetje meer tijd bestand zijn tegen het systeem te kraken zelf te creëren door te brengen.

Voor de onafhankelijke toevoeging van een schuine streep kan mysql_real_escape_string gebruiken.

$ Number = mysql_real_escape_string ($ number);

$ Jaar = mysql_real_escape_string ($ jaar);

$ Query = "INSERT INTO tabel (nummer, jaar, klasse) VALUES ( '$ number', '$ jaar', 11)".

Hoewel de code en in volume gestegen, maar mogelijk zou het veel veiliger werken.

placeholders

Placeholders - een soort van markers waarvoor het systeem herkent dat dit de plek waar je nodig hebt om een speciale functie te vervangen. Bijvoorbeeld:

$ Sate = $ mysqli-> bereiden ( "SELECT District van Number WHERE Name =?");

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

$ Sate-> execute ();

Dit gedeelte van de code draait opleidingsaanvraag template en bindt het variabel aantal, en voert deze uit. Deze aanpak stelt u in staat om de query verwerking en de uitvoering daarvan te splitsen. Zo kan gered worden van het gebruik van kwaadaardige code zijn SQL-.

Wat zou een aanvaller

Protection System - een zeer belangrijke factor, die niet kan worden verwaarloosd. Natuurlijk zal een eenvoudige site als visitekaartje gemakkelijker te herstellen. En als het een grote portal, service, forum? Wat zijn de gevolgen als je niet na te denken over de veiligheid?

Ten eerste kan een hacker de integriteit van zowel de basis te breken en volledig te verwijderen. En als de sitebeheerder of hoster een back-up niet maakt, zul je moeilijke tijden hebben. Boven alles, een indringer, het kraken van een enkele site, kan naar de andere geplaatst in dezelfde server.

Vervolgens is de diefstal van persoonlijke gegevens van de bezoekers. Hoe te gebruiken - alles wordt alleen beperkt door de verbeelding van een hacker. Maar in ieder geval, de gevolgen zullen niet erg prettig zijn. Vooral als opgenomen financiële informatie.

Ook kan de aanvaller databank zelf samen te voegen en vervolgens af te persen geld voor zijn terugkeer.

Verkeerde informatie gebruikers namens de sitebeheerder kan de persoon die zij niet in, ook negatieve gevolgen mogelijk feiten fraude.

conclusie

Alle informatie in dit artikel is bedoeld voor informatieve doeleinden. Gebruik alleen maar nodig om hun eigen projecten te testen wanneer deze kwetsbaarheden ontdekt en pakken hen.

Voor een meer diepgaande studie van de technieken van hoe de SQL-injectie uit te voeren, is het noodzakelijk om te beginnen met het eigenlijke onderzoek mogelijkheden en functies van de SQL taal. Zoals samengesteld queries, trefwoorden, data types, en het gebruik van dit alles.

Ook kan niet zonder inzicht in de werking van PHP en HTML-elementen functies. Het primaire gebruik kwetsbare punten voor injectie - een adresregel en diverse zoekveld. Leren PHP-functies, zal de wijze van uitvoering en de functies erachter te komen hoe om fouten te voorkomen.

De aanwezigheid van een groot aantal kant en klare software tools zorgen voor een diepgaande analyse op de site bekende kwetsbaarheden. Een van de meest populaire producten - kali linux. Dit beeld van een Linux-gebaseerd besturingssysteem, dat een groot aantal instrumenten en programma's die uitgebreide analyse van de site sterkte kan uitvoeren bevat.

Waarom moet ik weten hoe ik de site moet hacken? Het is heel simpel - dit is nodig om een idee te krijgen van de potentieel kwetsbare plaatsen van uw project of site. Vooral als dit een online winkel is met de mogelijkheid om online te betalen, waar de betalingsgegevens van de gebruiker door een aanvaller kunnen worden gecompromitteerd.

Voor professioneel onderzoek zijn er informatiebeveiligingsdiensten die de site kunnen beoordelen volgens verschillende criteria en diepte. Van eenvoudige HTML-injectie naar sociale engineering en phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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