OrdinadorsProgramació

Què és la injecció de SQL?

El nombre de llocs i pàgines a la web està creixent de manera constant. Pres per al desenvolupament de tots els que pugui. I desenvolupadors web novells solen utilitzar codi no segur i vell. I crea una gran quantitat de llacunes per als criminals i pirates informàtics. Del que són. Una de les vulnerabilitats més clàssics - injecció SQL.

Una mica de teoria

Molta gent sap que la majoria dels llocs i serveis de la xarxa utilitzeu l'emmagatzematge de base de dades SQL. Es tracta d'un llenguatge de consulta estructurat que li permet controlar i gestionar l'emmagatzematge de dades. Hi ha moltes versions diferents de la base de dades del sistema de gestió de base de dades - Oracle, MySQL, PostgreSQL. Independentment del nom i tipus, que utilitzen les mateixes dades de la consulta. És aquí on rau la vulnerabilitat potencial. Si el desenvolupador no va poder gestionar adequadament i de forma segura sol·licitar, un atacant pot prendre avantatge d'això i utilitzar tàctiques especials per accedir a la base de dades, i després - i per a tota la gestió del lloc.

Per evitar aquestes situacions, cal optimitzar correctament el codi i seguir de prop en una forma en la qual s'està processant una sol·licitud.

Comproveu si hi ha injecció SQL

Per establir la presència d'una vulnerabilitat a la xarxa té un pes de sistemes de programari automatitzats acabats. No obstant això, és possible dur a terme una senzilla comprovació manual. Per a això, aneu a un dels llocs de prova i en la barra d'adreces per tractar de provocar un error de base de dades. Per exemple, un script en el lloc no pot gestionar la petició i no retallar-les.

Per exemple, hi ha nekiy_sayt / index.php? Id = 25

La manera més fàcil - per posar 25 després de la cita i enviar la sol·licitud. Si s'ha produït cap error, ja sigui en el lloc i filtrar totes les sol·licituds es manegen correctament o està desconnectat en la configuració de la seva producció. Si una pàgina es torna a carregar amb els problemes, llavors la vulnerabilitat a la injecció SQL és.

Després que ella es va assabentar, es pot tractar de desfer-se'n.

Per implementar aquesta necessitat vulnerabilitat a conèixer una mica sobre els equips de consultes SQL. Un d'ells - UNIÓ. Reuneix diversos resultats de la consulta en una sola. Pel que podem calcular el nombre de camps de la taula. Exemple primera consulta és:

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

En la majoria dels casos, aquest registre ha de generar un error. Això significa que el nombre de camps no és igual a 1. Per tant, l'elecció de les opcions d'1 o gran, és possible establir el nombre exacte:

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

És a dir, quan ja no apareixerà l'error, vol dir que el nombre de camps d'endevinar.

També hi ha una solució alternativa a aquest problema. Per exemple, quan un gran nombre de camps - 30, 60 o 100. Aquest grup de comandaments. Agrupa els resultats d'una consulta per qualsevol motiu, per exemple ID:

  • nekiy_sayt / index.php? id = 25 GRUP PER 5.

Si no s'ha rebut l'error, llavors els camps de més de 5. Per tant, la substitució de les opcions d'un rang força ampli, és possible calcular quants d'ells realment.

Aquest exemple injecció SQL - per a novells que vulguin provar-se a si mateixos en les proves del seu lloc. És important recordar que per a l'accés no autoritzat a un altre article disponible del Codi Penal.

Els principals tipus d'injecció

Implementar vulnerabilitat per SQL-injecció en diverses formes de realització. A continuació hi ha els mètodes més populars:

  • La UNIÓ la consulta SQL injecció. Un exemple senzill d'aquest tipus ja s'ha examinat anteriorment. Es realitza a causa d'un error en la comprovació de les dades d'entrada, que no es filtren.

  • basat en un error d'injecció SQL. Com el seu nom indica, aquest tipus també utilitza un error, l'enviament d'expressions compostes sintàcticament incorrecta. Després hi ha la intercepció de les capçaleres de resposta, l'anàlisi que es poden dur a terme més endavant injecció SQL.

  • Stacked consulta SQL injecció. Aquesta vulnerabilitat es determina mitjançant la realització de sol·licituds successives. Es caracteritza per l'addició al final del signe ";". Aquest enfocament s'implementa sovint per accedir a l'aplicació de lectura i escriptura de dades o funcions del sistema operatiu, si els privilegis permeten.

Programari per a la recerca de SQL-vulnerabilitats

N'hi ha per injecció SQL, el programa generalment té dos components - una exploració del lloc per a possibles vulnerabilitats i els utilitzen per tenir accés a les dades. Hi ha algunes eines per a plataformes de gairebé tots coneguts. La seva funcionalitat facilita en gran mesura la comprovació lloc web per desxifrar la injecció SQL.

sqlmap

Molt potent escàner que funciona amb la majoria de les bases de dades. És compatible amb diversos mètodes d'aplicació d'injecció SQL. Té la capacitat de reconèixer automàticament el tipus de esquerdat hash de la contrasenya i el diccionari. Presents i funcionals de càrrega i descàrrega d'arxius des d'un servidor.

Instal·lació en Linux es realitza usant els comandaments:

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

Per a Windows està disponible com una opció amb la línia d'ordres i la interfície gràfica d'usuari.

jSQL injecció

jSQL injecció - una eina multiplataforma per provar l'ús de vulnerabilitats de SQL. Escrit en Java, de manera que el sistema ha de ser instal·lat JRE. Capaç de manejar les peticions GET, POST, encapçalat, galeta. Compta amb una interfície gràfica convenient.

La instal·lació d'aquest paquet de programari és la següent:

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 '| cap-n 1`

Llançament és fent servir la comanda java -jar ./jsql-injection-v*.jar

Per tal d'iniciar el lloc de prova en SQL-vulnerabilitat, cal introduir l'adreça en el camp superior. Estan separats per GET i POST. Amb un resultat positiu, la llista de taules disponibles apareixerà a la finestra de l'esquerra. Podeu veure i aprendre una mica d'informació confidencial.

pestanya «pàgina d'administració» s'utilitza per trobar els panells administratius. En ell per mitjà de plantilles especials busca automàticament el sistema registra els usuaris privilegiats. A partir d'ells es pot obtenir només un hash de la contrasenya. Però ell té a la caixa d'eines del programa.

Després de trobar totes les vulnerabilitats d'injecció i els mitjans necessaris, l'eina permetrà que el servidor segueixi els passos del seu arxiu o, per contra, pot descarregar des d'allà.

v.7 SQLi Bolquet

Aquest programa - fàcil d'usar eina per a la recerca i implementació de vulnerabilitats SQL. Es produeix l'ONU es basa en l'anomenada Dorcas. La seva llista es pot trobar a Internet. Dorca d'injecció SQL - aquests són plantilles especials de consultes de cerca. Amb la seva ajuda, vostè pot trobar el lloc potencialment vulnerables a través de qualsevol motor de cerca.

Eines per a la formació

Itsecgames.com al lloc hi ha un conjunt especial d'eines que permet que l'exemple mostra com fer la injecció de SQL i provar-ho. Per tal de beneficiar, cal descarregar i instal·lar. L'arxiu conté un conjunt d'arxius, que és l'estructura del lloc. Per instal·lar-necessitarà en el sistema existent de conjunt de servidors web Apache, MySQL i PHP.

Descomprimir l'arxiu en una carpeta del servidor web, vostè ha d'anar a l'adreça introduïda a l'instal·lar aquest programari. Una pàgina amb registre d'usuari. Aquí cal introduir la informació i feu clic en "Crear". En moure l'usuari a una nova pantalla, el sistema li demanarà que seleccioni un dels casos de prova. Entre ells es troben els dos descrits per injecció, i molts altres elements de prova.

Val la pena considerar un exemple de tipus d'injecció SQL GET / Cerca. Aquí cal seleccionar-lo i feu clic en "Hack». Abans que aparegui l'usuari, i la imitació cadena de recerca d'un lloc de la pel·lícula. Per ordenar les pel·lícules poden ser llargues. Però no només són 10. Per exemple, es pot tractar d'entrar en l'Home de Ferro. S'ha d'indicar la pel·lícula, el lloc funciona, i les taules que conté. Ara hem de comprovar si els filtres caràcters tipogràfics especials, en particular cotització. Per a això, afegiu 'a la barra d'adreces ". D'altra banda, això s'ha de fer després del títol de la pel·lícula. El lloc li donarà un error d'error: Vostè té un error en la seva sintaxi SQL; comprovi el manual que correspon a la seva versió del servidor MySQL per al sintaxi dret a l'ús prop de '%' 'a la línia 1, que estableix que els personatges encara no es manegen correctament. Així que es pot tractar de substituir la seva sol·licitud. Però cal calcular primer el nombre de camps. S'utilitza per a aquesta fi pel qual s'introdueix després de les cometes: http://testsites.com/sqli_1.php?title=Iron+Man 'ordenat per 2 - & Action = cerca.

Aquesta comanda només mostra informació sobre la pel·lícula, és a dir, el nombre de camps és més gran que 2. El doble guió li diu al servidor que les altres sol·licituds han de ser rebutjats. Ara hem de solucionar, posant cada vegada més importància, sempre que no s'imprimeix l'error. Al final, resulta que els camps seran 7.

Ara és el moment d'obtenir alguna cosa útil de la base. Modificarà lleugerament la comanda a la barra d'adreces, portant-la a un formulari: http://testsites.com/sqli_1.php?title=Iron+Man 'union select 1, la base de dades (), usuari (), 4, contrasenya, 6, 7 dels usuaris - & Action = cerca. Com a resultat de la seva aplicació seria mostrar la cadena amb els hashes de contrasenyes, que poden ser fàcilment convertits en símbols comprensibles utilitzant un dels serveis en línia. Un conjurar una mica i va agafar un nom de camp amb un inici de sessió, pot accedir a l'entrada d'una altra persona, com a administrador del lloc.

El producte té un tipus d'injecció d'espècies de pes, en el qual es practiquen. Cal recordar que l'aplicació d'aquestes habilitats a la xarxa en llocs reals pot ser un delicte.

Injecció i PHP

Com a regla general, el codi PHP i és responsable de les peticions de processament necessaris procedents de l'usuari. Per tant, en aquest nivell que necessita per construir una defensa contra la injecció SQL en PHP.

En primer lloc, anem a donar algunes pautes simples, sobre la base del que és necessari fer-ho.

  • Les dades sempre ha de ser processada abans de ser col·locat a la base de dades. Això es pot fer ja sigui mitjançant l'ús d'expressions existents, o mitjançant l'organització de consultes manualment. Aquí, també, cal tenir en compte que els valors numèrics es converteixen al tipus que es necessita;
  • Evitada va provocar diverses estructures de control.

Ara una mica sobre les regles de compilar consultes en MySQL per protegir contra la injecció SQL.

En l'elaboració de les expressions de consulta és important per separar les dades de les paraules clau de SQL.

  • SELECT * FROM taula WHERE nom = Zerg.

En aquesta configuració, el sistema pot pensar que els Zerg - el nom de qualsevol camp, de manera que necessita per tancar entre cometes.

  • SELECT * FROM taula WHERE nom = 'Zerg'.

No obstant això, hi ha ocasions en què el valor en si conté cometes.

  • SELECT * FROM taula WHERE nom = 'Costa d'Ivori'.

Aquí només gestionar part de Costa, i la resta pot ser percebut com un equip, que, per descomptat, no. Per tant, es produeix un error. Llavors vostè necessita aquest tipus de dades del cribratge. Per això, utilitzeu una barra invertida - \.

  • SELECT * FROM taula WHERE nom = 'cat-d \' Ivori '.

Tot l'anterior es refereix a les files. Si l'acció es porta a terme amb un nombre, llavors no es necessita cap cometes o barres. No obstant això, han de ser obligats a conduir per la força amb el tipus de dades desitjat.

Hi ha recomanacions que el nom del camp s'ha de posar entre cometes inverses. Aquest símbol està a la banda esquerra del teclat, juntament amb una titlla "~". Això és per assegurar que MySQL podia distingir amb precisió el nom del camp de la paraula clau.

treball dinàmic amb dades

Molt sovint, per obtenir les dades de la base de dades mitjançant consultes, generat dinàmicament. Per exemple:

  • SELECT * FROM taula WHERE nombre = '$ nombre'.

En aquest cas, el nombre variable $ es passa com la determinació del valor del camp. Què passarà si es posa 'Costa d'Ivori'? D'error.

Per evitar aquest problema, per descomptat, pot incloure la configuració de "cometes màgiques". Però ara les dades es projectaran quan sigui necessari i no és necessari. A més, si el codi està escrit a mà, es pot passar una mica més de temps per crear resistent a les esquerdes del sistema en si.

Per l'addició independent d'una barra pot utilitzar mysql_real_escape_string.

$ Nombre = mysql_real_escape_string (nombre $);

Any $ = mysql_real_escape_string ($ any);

$ Query = "INSERT INTO taula (nombre, any, classe) VALUES ( '$ números', '$ any', 11)".

Tot i que el codi i l'augment en el volum, però potencialment podria funcionar molt més segur.

marcadors de posició

Els marcadors de posició - una mena de marcadors per als quals el sistema reconeix que aquest és el lloc que necessita per substituir una funció especial. Per exemple:

$ = $ Mysqli- Estat> prepari ( "Districte SELECT número on Name =?");

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

$ Sate-> execute ();

Aquesta secció de codi pren una plantilla de sol·licitud d'entrenament i després s'uneix el nombre variable, i l'executa. Aquest enfocament permet dividir el processament de consultes i la seva aplicació. Per tant, pot ser salvat de la utilització d'un codi maliciós són SQL-.

Com seria un atacant

Sistema de protecció - un factor molt important, que no es pot descuidar. Per descomptat, un simple lloc de visita serà més fàcil restaurar. I si es tracta d'un gran portal, el servei, el fòrum? Quines són les conseqüències si no es pensa en la seguretat?

En primer lloc, un hacker pot trencar la integritat de la base i eliminar per complet. I si l'administrador o proveïdor d'allotjament no fa una còpia de seguretat, tindrà temps difícils. Per sobre de tot, un intrús, l'esquerdament d'un sol lloc, pot anar a l'altre publicat en el mateix servidor.

El següent és el robatori d'informació personal dels visitants. Forma d'ús - tot està limitat només per la imaginació d'un hacker. Però en qualsevol cas, les conseqüències no seran molt agradable. Especialment si contenien informació financera.

A més, l'atacant pot fusionar la base de dades vostè mateix i després extorsionar per a la seva devolució.

usuaris de la informació falsa a nom de l'administrador del lloc, la persona que no estan sent, també pot haver conseqüències negatives com a possibles fets de frau.

conclusió

Tota la informació en aquest article es proporciona únicament amb finalitats informatives. Usar-lo només haurà de posar a prova els seus propis projectes quan detecta vulnerabilitats i abordar-les.

Per a un estudi més a fons de les tècniques de com dur a terme injecció SQL, cal començar amb les capacitats d'investigació actuals i característiques del llenguatge SQL. Com consultes compilades, paraules clau, tipus de dades i l'ús de tot.

A més, no pot prescindir de comprendre el funcionament de les funcions de PHP i elements HTML. L'ús primari punts vulnerables per a la injecció - una línia de direcció, i diversos camp de cerca. Aprendre les funcions de PHP, el mètode d'aplicació i característiques s'adonaran de com evitar errors.

La presència de moltes eines de programari confeccionades permet una anàlisi en profunditat sobre les vulnerabilitats lloc conegut. Un dels productes més populars - Linux Kali. Aquesta imatge d'un sistema operatiu basat en Linux, que conté un gran nombre d'eines i programes que poden dur a terme anàlisi exhaustiva de la força lloc.

Per què necessito saber com piratejar el lloc? És molt simple: això és necessari per tenir una idea dels llocs potencialment vulnerables del vostre projecte o lloc. Sobretot si es tracta d'una botiga en línia amb capacitat de pagament en línia, on l'usuari pot comprometre les dades de pagament de l'usuari.

Per a la recerca professional, hi ha serveis de seguretat de la informació que podran consultar el lloc d'acord amb diferents criteris i profunditat. Des d'una senzilla injecció HTML fins a l'enginyeria social i el phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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