InformáticaProgramación

Que é a inxección de SQL?

O número de sitios e páxinas web está crecendo de forma constante. Tomado para o desenvolvemento de todas as que poida. E desenvolvedores web principiantes adoitan usar código inseguro e idade. E iso crea unha serie de fendas para os criminais e hackers. Do que son. Unha das vulnerabilidades máis clásicos - inxección SQL.

Un pouco de teoría

Moitas persoas saben que a maioría dos sitios e servizos na rede están utilizando o almacenamento de base de datos SQL. Esta é unha linguaxe de consulta estruturada que permite controlar e xestionar o almacenamento de datos. Hai moitas versións diferentes da base de datos do sistema de xestión de base de datos - Oracle, MySQL, Postgre. Independentemente do nome e tipo, que empregan os mesmos datos de consulta. É aquí que reside o potencial vulnerabilidade. Se o creador non pode tratar adecuadamente e con seguridade solicitar, un atacante pode sacar proveito diso e utilizar tácticas especiais para acceder á base de datos, e entón - e por todo o manexo do sitio web.

Para evitar tales situacións, precisa para optimizar adecuadamente o código e seguir de preto dun xeito no que unha solicitude está a ser procesada.

Asegúrese de que hai inxección SQL

Para determinar a presenza dunha vulnerabilidade na rede ten un peso de sistemas de software automatizado acabados. Pero é posible realizar unha comprobación simple manual. Para iso, vai a un dos lugares de exame e na barra de enderezos para intentar provocar un erro da base de datos. Por exemplo, un guión no sitio web non pode xestionar a solicitude e non corte-las.

Por exemplo, hai nekiy_sayt / index.php? Id = 25

O xeito máis doado - para poñer 25 tras a cita e enviar a solicitude. Se ningún erro, tanto na páxina web e filtran os pedidos son tratados correctamente, ou está desactivada na configuración da súa produción. Se unha páxina é actualizar os problemas, entón a vulnerabilidade de inxección SQL é.

Despois de que ela descubriu, pode tentar se librar del.

Para aplicar esta necesidade vulnerabilidade a saber un pouco sobre os equipos SQL-consultas. Un deles - Union. Reúne varios resultados da consulta nun. Así, podemos calcular o número de campos na táboa. EXEMPLO primeira consulta é:

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

Na maioría dos casos, este rexistro debe xerar un erro. Isto significa que o número de campos non é igual a 1. Así, escoller as opcións de 1 ou máis, é posible establecer o seu número exacto:

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

Isto é, cando o erro non aparecerá máis, isto significa que o número de campos de adiviñar.

Hai tamén unha solución alternativa a este problema. Por exemplo, cando un gran número de campos de - 30, 60 ou 100. Este grupo de comandos. El agrupa os resultados dunha consulta por calquera motivo, por exemplo ID:

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

Se o erro non foi recibido, a continuación, os campos máis de 5. Así, substituíndo opcións desde unha gama moi ampla, é posible calcular cantos deles realmente.

Este exemplo inxección SQL - para principiantes que queren probar-se na proba do seu sitio. É importante lembrar que para o acceso non autorizado a outro artigo dispoñible do Código Penal.

Os principais tipos de inxección

Aplicar vulnerabilidade SQL-inxección en varias formas de realización. Logo están os métodos máis populares:

  • A UNIÓN a consulta de SQL inxección. Un exemplo simple deste tipo xa examinada anteriormente. Realízase debido a un erro de verificación dos datos de entrada, os cales non son filtrados.

  • -Erro base inxección de SQL. Como o nome indica, este tipo tamén usa un erro, o envío de expresións compostas sintaticamente incorrecto. Despois, hai a interceptación das cabeceiras de resposta, analizando cales poden realizar despois de inxección SQL.

  • Stacked consulta SQL inxección. Esta vulnerabilidade determínase mediante a realización de solicitudes sucesivos. Caracterízase por medio da adición ao final do sinal ";". Esta visión é frecuentemente aplicada para acceder a posta en marcha de ler e gravar datos ou sistema operativo funcións, se privilexios permitir.

Software para buscar SQL-vulnerabilidades

Está alí para inxección SQL, o programa normalmente teñen dous compoñentes - un sitio varrido para posibles vulnerabilidades e usalos para obter acceso a datos. Existen algunhas ferramentas para plataformas de case todos coñecidos. A súa función facilita moito a verificación web para rachar a súa inxección SQL.

SqlMap

Moi poderoso escáner funciona coa maioría dos bancos de datos. Soporta varios métodos de implantación de inxección SQL. Ten a capacidade de recoñecer automaticamente o tipo de salto de contrasinal de hash e dicionario. subida de arquivos presente e funcional e descarga dun servidor.

Instalación en Linux se realiza mediante os comandos:

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

Para Windows está dispoñible como unha opción coa liña de comandos e interface gráfica de usuario.

inxección jSQL

jSQL Injection - unha ferramenta multiplataforma para probar o uso de vulnerabilidades de SQL. Escrito en Java, de xeito que o sistema debe ser instalado JRE. Capaz de xestionar peticións GET, POST, cabeceira, cookie. Ten unha interface gráfica cómodo.

A instalación deste paquete de software é a seguinte:

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

Lanzamento é mediante o comando Java -jar ./jsql-injection-v*.jar

A fin de iniciar o sitio de proba no SQL-vulnerabilidade, ten que escribir o enderezo no campo superior. Son separados por GET e POST. Cun resultado positivo, a lista de táboas dispoñibles aparecerá na xanela esquerda. Pode visualiza-los e aprender unha información confidencial.

guía «Páxina Admin» usada para atopar os paneis administrativos. Por iso, a través de modelos especiais busca automaticamente o sistema rexistra usuarios privilexiados. A partir deles pode obter só un hash do contrasinal. Pero ten no cadro de ferramentas do programa.

Despois de atopar todas as vulnerabilidades e de inxección de investigacións necesarias, a ferramenta permitirá que o servidor para encher o ficheiro ou, inversamente, baixa-lo de alí.

SQLi Dumper V.7

Este programa - ferramenta fácil de usar para atopar e aplicar as vulnerabilidades SQL. Produce a ONU está baseado na chamada Dorcas. A súa lista pódese atopar en Internet. Dorca para inxección SQL - estes son modelos especiais de consultas de investigación. Coa axuda deles, podes atopar local potencialmente vulnerables a través de calquera buscador.

Ferramentas para a formación

Itsecgames.com no lugar hai un conxunto particular de ferramentas que permite que o exemplo mostra como facer a inxección de SQL e probalo. Co fin de beneficiar, cómpre baixar e instalar. O ficheiro contén un conxunto de arquivos, que é a estrutura do sitio web. Para instala-lo será necesario no sistema existente de conxunto de servidor web Apache, MySQL e PHP.

Descompactá o arquivo nunha carpeta do servidor web, ten que ir ao enderezo introducido durante a instalación deste software. Unha páxina co rexistro do usuario. Aquí ten que introducir a súa información e prema «Crear». Movendo o usuario a unha nova pantalla, o sistema solicita que escolla un dos casos de proba. Entre eles están dous descritos por inxección, e moitos outros elementos de proba.

Paga a pena considerar un exemplo do tipo de inxección SQL GET / Search. Aquí ten que selecciona-lo e premer en «corte». Antes do usuario aparecerá, ea imitación cadea de busca dun sitio web do filme. Para clasificar as películas poden ser longo. Pero hai só 10. Por exemplo, pode tentar entrar no Home de Ferro. Vai indicar a película, a continuación, o sitio funciona, e as táboas que contén. Agora temos que comprobar se os filtros de caracteres de guión, na cita particular. Para iso, engada 'na barra de enderezo ". Ademais, iso debe ser feito despois o título da película. O sitio web pode dar un erro de erro: Ten un erro na súa sintaxe SQL; Comprobe o manual que corresponde ao seu servidor de MySQL versión para o dereito de empregar sintaxe seguinte a '%' 'at line 1, que afirma que os personaxes non son tratados correctamente. Entón podes probar substituír a súa solicitude. Pero hai que primeiro calcular o número de campos. El é usado para este fin por que é introducido despois das aspas: http://testsites.com/sqli_1.php?title=Iron+Man 'orde por 2 - & action = procura.

Este comando mostra información sobre o filme, é dicir, o número de campos é maior que 2. O guión dobre ó servidor que os outros solicitudes deben ser descartados. Agora temos que clasificar a fóra, poñendo cada vez máis importancia, sempre que o erro non é impreso. Ao final, parece que os campos serán 7.

Agora é hora de obter algo útil para fóra da base. Modifica lixeiramente a petición da barra de enderezos, levando-a para un formulario: http://testsites.com/sqli_1.php?title=Iron+Man 'Unión seleccionar 1, base de datos (), usuario (), 4, contrasinal, 6, 7 dos usuarios - & action = procura. Como resultado da súa implantación ía amosar a corda cos hash de contrasinal, que poden ser facilmente convertidos en símbolos comprensibles utilizando un dos servizos en liña. A conxurou un pouco e colleu un nome de campo con un login, podes acceder a entrada de outra persoa, como administrador do sitio.

O produto ten unha especie de peso tipos de inxección, en que para a práctica. Debe lembrar que a aplicación destas habilidades na rede en sitios reais pode ser unha ofensa criminal.

Inxección e PHP

Como regra xeral, o código PHP e é responsable das solicitudes de procesamento necesaria procedentes do usuario. Polo tanto, a este nivel, ten que para construír unha defensa contra inxección SQL en PHP.

En primeiro lugar, imos dar algunhas orientacións simple, con base no que é necesario para facelo.

  • Os datos deben ser sempre procesados antes de seren colocados na base de datos. Isto pode ser feito empregando expresións existentes, ou a través da organización de consultas manualmente. Aquí, tamén, debe ter en conta que os valores numéricos son convertidos para o tipo que é necesario;
  • Evitarase solicitado varias estruturas de control.

Agora un pouco sobre as normas de compilar consultas en MySQL para protexer contra inxección SQL.

Na elaboración de calquera expresións de consulta é importante para separar os datos das palabras clave SQL.

  • SELECT * FROM táboa Where name = Zerg.

Nesta configuración, o sistema pode pensar que Zerg - o nome de calquera campo, entón tes que poñelo entre comiñas.

  • SELECT * FROM táboa Where name = 'Zerg'.

Con todo, hai momentos nos que o valor en si contén comiñas.

  • SELECT * FROM táboa Where name = 'Côte d'Ivoire'.

Aquí só xestionar parte da Côte d, eo resto pode ser entendida como un equipo, o que, por suposto, non. Polo tanto, se produce un erro. Entón tes que deste tipo de datos de seguimento. Para iso, utiliza unha barra invertida - \.

  • SELECT * FROM táboa Where name = 'cat-d \' Ivoire '.

Todos os elementos anteriormente se refire ás liñas. Se a acción ocorre cun número, el non ten que comiñas ou barras. Con todo, eles deben ser obrigados a levar á forza para o tipo de datos que desexe.

Hai recomendacións que o nome do campo debe ser colocado entre crase. Este símbolo está na parte esquerda do teclado, xunto con un til "~". Isto é para garantir que MySQL podería distinguir con precisión o nome do campo de contrasinal.

traballo dinámico datos

Moitas veces, para obter todos os datos da base de datos a usar consultas, xerado dinamicamente. Por exemplo:

  • SELECT * FROM táboa onde o número = '$ number'.

Aquí, o $ número variable é pasado como determinar o valor do campo. O que vai ocorrer se está 'Côte d'Ivoire? Error.

Para evitar este problema, por suposto, pode incluír as opcións de "Magic quotes". Pero agora os datos serán mostrados cando sexa necesario e non é necesario. Ademais, se o código está escrito á man, pode gastar un pouco máis de tempo para crear resistente a rachaduras do propio sistema.

Para a adición independente dunha barra pode usar mysql_real_escape_string.

$ N = mysql_escape_string ($ número);

$ Ano = mysql_real_escape_string ($ ano);

$ Consulta = "INSERT INTO táboa (número, ano, clase) values ( '$ number', '$ Ano', 11)".

Aínda que o código e aumento de volume, pero potencialmente ía traballar moito máis seguro.

espazos reservados

Placeholders - unha especie de marcadores para o cal o sistema recoñece que este é o lugar que precisa para substituír unha función especial. Por exemplo:

$ Sate = $ mysqli-> prepare ( "SELECT Distrito de número onde Name =?");

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

$ Sate-> executa ();

Esta sección do código ten un modelo de solicitude de formación e, a continuación, liga-se o número da variable, e executa-lo. Esta visión permite dividir o procesamento de consultas ea súa implementación. Así, pode ser gardado a partir da utilización de códigos maliciosos son SQL-.

Para que un invasor

Sistema de protección - un factor moi importante, que non pode ser negligenciada. Por suposto, unha web sinxela da tarxeta será máis doado para restaurar. E se é un portal grande, servizo, foro? Cales son as consecuencias se non pensar en seguridade?

En primeiro lugar, un pirata pode romper a integridade de ambas a base e eliminar-lo completamente. E se o administrador do sitio web ou hoster non fai unha copia de seguridade, terá tempos difíciles. Por riba de todo, un intruso, rompendo un único sitio, pode ir para o outro rexistrado no mesmo servidor.

A continuación é o roubo de información persoal dos visitantes. Como usar - todo é limitado só pola imaxinación dun hacker. Pero en calquera caso, as consecuencias non será moi agradable. Especialmente se contiña información financeira.

Ademais, o atacante pode mesturar base de datos a si mesmo e, a continuación, extorsionar diñeiro para o seu retorno.

usuarios de desinformación en nome do administrador do sitio web, a persoa que non está a ser, tamén pode haber consecuencias negativas como posibles feitos de fraude.

conclusión

Toda a información contida neste artigo está indicado soamente con fins informativos. Use-o só ten probar os seus propios proxectos cando detecta vulnerabilidades e resolvelos.

Para un estudo máis profundo de técnicas de como conducir inxección SQL, é necesario comezar coas capacidades de investigación reais e características da linguaxe SQL. Como consultas compiladas, palabras clave, tipos de datos, eo uso de todo iso.

Tamén non pode facer sen a comprensión do funcionamento das funcións PHP e elementos HTML. O uso primario puntos vulnerables para inyección - unha liña de enderezo, e varios campo de busca. Aprender funcións do PHP, o método de execución e recursos van descubrir como evitar erros.

A presenza de moitas ferramentas de software listas permitir a análise en profundidade no sitio vulnerabilidades coñecidas. Un dos produtos máis populares - linux Kali. Esta imaxe dun sistema operativo baseado en Linux, que contén un gran número de ferramentas e programas que poden realizar análise ampla de forza local.

O que ten que saber como cortar o sitio web? É moi sinxelo - é necesario ser consciente dos potenciais vulnerabilidades do seu proxecto ou sitio web. Especialmente se é unha tenda en liña con pagamento en liña, onde os datos do usuario de pagamento pode ser comprometida por un invasor.

Para o estudo profesional do persoal de seguridade da información existente poderá comprobar o sitio para unha variedade de criterios e profundidade. A partir dun simple HTML-inxeccións e á enxeñería social e phishing.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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