PDA

Ver la versión completa : logearte en web sin user ni pass



esgoru
20-01-2010, 18:47
hola buenas querria me dijeran como podria logearme en una pagina sin tener el user ni el pass el metodo de autentificacion es get, he estado investigando y es meterle comandos y variables a traves de la barra de direcciones xo no soy capaz de dar con la clave haber si me podeis exar una mano, la pagina esta escrita en php y no se puede hacer inyeccion sql, el seudocodigo seria este:

"<?

$usuario="xxxxxx";
$password="xxxxx";

$s_user = $_GET['username'];
$s_pass = $_GET['password'];


if (($s_user == $usuario) && ($s_pass==$password)) {
$auth = "1";
}

if ($auth == "1") {
//te logeas
} else {
//id o pass incorrecto
}
?>"
muchas gracias x vuestra ayuda

j8k6f4v9j
20-01-2010, 19:18
Con el código que muestras no se podría hacer inyección SQL porque no hay ninguna consulta SQL en él. Supongo que el código te lo has inventado para poder mostrar un caso de uso, pero quizá no sea así (es bastante probable que no lo sea).

Por ejemplo, se podrían estar usando hashes MD5 en vez de la contraseña real:



$password_valido = do_query('select pass_md5 from md5_auth where usuario == '.$_GET['username'].';');

if(md5($_GET['password'] == $password_valido) {
blah;
}

En ese caso es posible, si no se está validando correctamente la entrada por parámetros, hacer inyección SQL. ¿Has comprobado realmente que no hay ninguna base de datos para estas cosas y que realmente no se puede hacer inyección SQL?

Para "averiguar" el password como dices, haría falta algún script para hacer un ataque por fuerza bruta supongo, pero si es una aplicación modesta yo optaría mejor por buscar vulnerabilidades de otro tipo (como inyección de código -- PHP?).

Por ejemplo, en un código con la entrada muy mal validada podrías probar a poner usuarios y contraseñas del estilo de:



'' || 1 == 1


Si el código fuese realmente como el que has puesto y la entrada no estuviera siendo validada en absoluto, el código evaluaría algo como:


if (($s_user == '' || 1 == 1) && ($s_pass=='' || 1 == 1)) {
$auth = "1";
}

A partir de ahí ya es cosa de irle echando imaginación ...


Salu2

esgoru
20-01-2010, 19:31
Mi compañero ya lo ha conseguido,dice que es muy facil, pero no me quiere dar pistas,hay que meter alguna variable o comando a traves de la direccion, tambien me ha dicho que esto se hacia en html, porque la autentificacion get es una chapuza ya que los comandos o las instrucciones van a traves de la barra de direcciones y se puede saltar el login muy facilmente, pero yo no lo consigue ver.

j8k6f4v9j
20-01-2010, 19:36
Si es por GET y no por POST ni siquiera te hace falta crear un archivo HTML, los puedes pasar desde la misma barra de direcciones del navegador.

Creando un archivo HTML cualquiera, por ejemplo prueba.html:



<html><body><a href="http://example.com/pagina?username='eljuankermalo'&password='estoyprobandouno'">pincha en este enlace</a></body></html>


Y ahí puedes cambiar los parámetros por los que quieras. Luego, sólo tienes que abrirlo con tu navegador web.

Pero como te decía, al ser parámetros GET los puedes poner directamente en la URL:


http://example.com/pagina?username='eljuankermalo'&password='estoyprobandouno'


Ojo, http://example.com/pagina no es la página donde está el formulario de acceso, sino la página a la que el formulario de acceso envía los datos, que puede ser la misma o ser otra diferente. Eso tienes que mirarlo en el HTML de la página.

PD: Búscate otro compañero.

Salu2

esgoru
25-01-2010, 16:34
bueno al final consegui saltarme el login lo hice asi
me edito para borrar la solucion

muchas gracias por tu ayuda j8k6f4v9j ;)

j8k6f4v9j
25-01-2010, 17:34
bueno al final consegui saltarme el login lo hice asi
editado
donde esgoru y 1111 daba igual poner eso que fasdfadfda
muchas gracias por tu ayuda j8k6f4v9j ;)

No hay de qué. No importa qué pongas de contraseña porque le estás pasando auth=1, que significa que ya estás autenticado. Creo que es el peor método de autenticación que se puede usar ;)


Salu2

neo.linux
28-01-2010, 00:59
Bueno, la verdad es que llevaba mucho tiempo sin escribir nada en el foro, pero ............... esto si que tengo que decirlo.
Esgoru, cuando estés haciendo retos de seguridad informática, por favor, dilo en el post y así todos sabremos por donde andas (eso no tiene nada de mala), y si consigues resolver el reto, no publiques la respuesta, recuerda que si la publicas cualquiera puede verla y resolverlo, y no se trata de eso, se trata de darle vueltas al coco, al código y aprender.
Gracias y espero tu comprensión.

j8k6f4v9j - El código escrito por esgoru es de un reto de seguridad, este es el enlace.
http://www.seguridadinformatica.org

j8k6f4v9j
28-01-2010, 03:26
j8k6f4v9j - El código escrito por esgoru es de un reto de seguridad, este es el enlace.
http://www.seguridadinformatica.org

heh, ya me extrañaba a mí que pudiera haber alguna web en productivo con eso xD

Gracias neo.linux


Salu2

esgoru
28-01-2010, 15:58
Me he editado para borrar la solucion, si puedes j8k6f4v9j borra la cita q tambien sale.
Ahora a por el tercero tu neo.linux tb los has echo ? hasta cual llegastes?