Linux Security

Linux Security, Hacking, Databases, seguridad, Tutoriales, LDAP

Archive for 30 marzo 2012

Guerreros de la oscuridad /Sql Injection/

Posted by mguazzardo en marzo 30, 2012

INTRODUCCIÓN:

El objetivo de esta nota, que si puedo (Razones tiempo y personales), serán una serie de notas, será hablar del famoso sql injection, esta vez, mostrando una dupla muy usada para construir sitios en internet, como es PHP y MYSQL.

El lector deberá tener conocimientos mínimos de sentencias SQL, (Ya que no es el objetivo de esta nota explicar SQL), y se mostrarán ejemplos básicos de sentencias SQL.

Para poder seguir mejor la nota, mostraré un ejemplo real de una página mal programada adrede, para que se pueda practicar. El lector deberá levantar un entorno LAMPP como se dice ahora, apache, mysql, php con extensiones mysql. La idea es que si tengo tiempo arme una virtual machine para que se pueda seguir el artículo y la ponga en mi página personal, pero por ahora les dejo la tarea para el hogar a uds. ;).

Comenzando:

Para los fines de esta nota, voy a seguir los ejemplos con el sitio que doy como ejemplo. Para eso, debemos usar la info.

NOTA1: Para este ejemplo, he tomado y modificado algunos datos de un paper de ka0z, lo pueden buscar por la red, lo pueden encontrar en

NOTA2: El ejemplo está dado como root, ya que root en mysql tiene privilegios de File, y otros, no en todos los sitios que se puedan injectar van a encontrar como root el userdb, pero aunque no lo crean, me toco hacer pen testing, y en algunos estaban corriendo como root el userdb!. La recomendación es mas que obvia, JAMÁS se deberá correr una db como root en una aplicación.

http://www.insecure.in/papers/Blind_MySQL_Injection.pdf

Generamos por empezar una base donde alojaremos algunos datos básicos, para la muestra de sql injection.

A continuación , el código

CREATE DATABASE tuxinfo;

USE tuxinfo

CREATE TABLE `users` (

`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`name` VARCHAR(50) NOT NULL,

`password` VARCHAR(50) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

 

— users —

INSERT INTO `users` VALUES (1, ‘administrator’, ‘123456’);

INSERT INTO `users` VALUES (2, ‘jax0r’, ‘muestra’);

INSERT INTO `users` VALUES (3, ‘otro’, ‘algo’);

Lo que falta ahora, para los que no saben como agregar este código, es ingresarlo a la base. Por ejemplo, a este código, lo llamamos, código.sql, y lo agregamos de la siguiente manera.

root@hack:/var/www# mysql -h localhost -p < codigo.sql

Enter password: <aca pondrán su password de mysql >

 

 

Posted in Uncategorized | Leave a Comment »