elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  ¿Es mi código seguro?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: ¿Es mi código seguro?  (Leído 6,514 veces)
DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
¿Es mi código seguro?
« en: 11 Octubre 2009, 19:07 pm »

Buenas estuve haciendo un login en php y más tarde me enteré de bugs en codigos, inyecciones sql y demás, estoy temeroso y no se si mi código es seguro, agradecería que me lo dijeráis.

Gracias

PD: Si podéis aportar también algun consejo os lo agradecería. Gracias.

Ahí va:

Código
  1. <?php
  2. include 'config.php';
  3. $usuario=$_REQUEST['user'];
  4. $pass=$_REQUEST['pass'];
  5. $texto=$_REQUEST['texto'];
  6. if (empty($usuario) || empty($pass) || empty($texto)) die("<center><font color=red size=17>No has introducido un nombre de usuario, contraseña o texto.</font></center>");
  7. $conexion=mysql_connect($host,$user,$password) or die(mysql_error($conexion));
  8. mysql_select_db($database,$conexion) or die(mysql_error($conexion));
  9. $consulta=mysql_query("SELECT usuario, passphrase FROM jugadores WHERE usuario='$usuario'") or die(mysql_error($conexion));
  10. if (1>mysql_num_rows($consulta)) die("<center><font color='red' size='17'><b>Usuario inexistente.</b></font></center>");
  11. $datos=mysql_fetch_assoc($consulta);
  12. if (md5($pass)==$datos['passphrase'])
  13. {
  14. echo "<center><font color='green' size='17'>Login correcto.<br><b>Mensaje circular enviado</b></font></center>";
  15. //(OTRO CODE)
  16. }
  17. }
  18. else
  19. {
  20. echo "<center><font color=red size='17'>Login incorrecto.</font></center>";
  21. }
  22. mysql_close($conexion);
  23. ?>
« Última modificación: 11 Octubre 2009, 19:10 pm por DarkItachi » En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
Nakp
casi es
Ex-Staff
*
Desconectado Desconectado

Mensajes: 6.336

he vuelto :)


Ver Perfil WWW
Re: ¿Es mi código seguro?
« Respuesta #1 en: 11 Octubre 2009, 19:58 pm »

no xD, no filtras ni user, ni pass, ni texto...

Código
  1. $usuario=mysql_real_escape_string(stripslashes($_REQUEST['user']));
En línea

Ojo por ojo, y el mundo acabará ciego.
DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Re: ¿Es mi código seguro?
« Respuesta #2 en: 11 Octubre 2009, 20:17 pm »

Y que pasa si no los filtro?

Osea mejor dicho, para el código de antes, como le aplicarías una inyección SQL?
En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
jdc


Desconectado Desconectado

Mensajes: 3.406


Ver Perfil WWW
Re: ¿Es mi código seguro?
« Respuesta #3 en: 11 Octubre 2009, 20:29 pm »

En el código anterior se pueden meter símbolos (',-,",+*, etc) por lo que tus campos se pueden usar casi como una consola de sql realizando consultas que tú código vómitara xD osea tú nombre, tú contraseña y todo lo que tengas en tú base de datos
En línea

DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Re: ¿Es mi código seguro?
« Respuesta #4 en: 11 Octubre 2009, 22:13 pm »

En el código anterior se pueden meter símbolos (',-,",+*, etc) por lo que tus campos se pueden usar casi como una consola de sql realizando consultas que tú código vómitara xD osea tú nombre, tú contraseña y todo lo que tengas en tú base de datos

Ya... Me refería en un ejemplo práctico, pregunté si era seguro porqué probe de hacer esto:

Suponiendo que usuario= ' OR 1=1
$consulta=mysql_query("SELECT usuario, passphrase FROM jugadores WHERE usuario=' ' OR 1=1") or die(mysql_error($conexion));

Eso no escribe en la pagina datos personales, entonces, es seguro el código no?

Porque me retorna:

Usuario inexistente. (lo cual es logico xd)

Y nada más.
« Última modificación: 11 Octubre 2009, 22:15 pm por DarkItachi » En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: ¿Es mi código seguro?
« Respuesta #5 en: 11 Octubre 2009, 22:21 pm »

De usuario pongo esto:

admin' union select 'admin','e10adc3949ba59abbe56e057f20f883e',3,4,'5

Por lo tanto le hará select a los datos del administrador y devolverá user admin y pass el md5 de "123456", asi que de pass le pongo 123456 y ya soy admin ^^

Esto se parece a un reto que existe en el warzone xD

En el caso de:
Citar
Suponiendo que usuario= ' OR 1=1
$consulta=mysql_query("SELECT usuario, passphrase FROM jugadores WHERE usuario=' ' OR 1=1") or die(mysql_error($conexion));

no estás haciendo inyección ya que la inyeccion se la haces orientado al password no al usuario, si no hay usuario válido puede darte error como te dió a ti, para inyectar necesitas devolver un dato válido, por ejemplo al final puedes aplicar un where like username = '%' y con eso ya te jodió el sistema o incluso hacer concat sin la necesidad de hacer comillas.

http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html
http://foro.elhacker.net/seguridad/prevenir_sql_injection-t261480.0.html
http://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_71009-t244090.0.html
« Última modificación: 11 Octubre 2009, 22:25 pm por WHK » En línea

DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Re: ¿Es mi código seguro?
« Respuesta #6 en: 11 Octubre 2009, 22:38 pm »

De usuario pongo esto:

admin' union select 'admin','e10adc3949ba59abbe56e057f20f883e',3,4,'5

Por lo tanto le hará select a los datos del administrador y devolverá user admin y pass el md5 de "123456", asi que de pass le pongo 123456 y ya soy admin ^^

Esto se parece a un reto que existe en el warzone xD

En el caso de:
Citar
Suponiendo que usuario= ' OR 1=1
$consulta=mysql_query("SELECT usuario, passphrase FROM jugadores WHERE usuario=' ' OR 1=1") or die(mysql_error($conexion));

no estás haciendo inyección ya que la inyeccion se la haces orientado al password no al usuario, si no hay usuario válido puede darte error como te dió a ti, para inyectar necesitas devolver un dato válido, por ejemplo al final puedes aplicar un where like username = '%' y con eso ya te jodió el sistema o incluso hacer concat sin la necesidad de hacer comillas.

http://foro.elhacker.net/nivel_web/como_evitar_la_inyeccion_sql-t252384.0.html
http://foro.elhacker.net/seguridad/prevenir_sql_injection-t261480.0.html
http://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones_a_nivel_web_actualizado_71009-t244090.0.html

Ahí me refería yo, muchas gracias :D

Voy a revisarme esos links que me has dado :D

Muchas gracias :P
En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: ¿Es mi código seguro?
« Respuesta #7 en: 11 Octubre 2009, 22:51 pm »

Buenas estuve haciendo un login en php y más tarde me enteré de bugs en codigos, inyecciones sql y demás, estoy temeroso y no se si mi código es seguro, agradecería que me lo dijeráis.

Gracias

PD: Si podéis aportar también algun consejo os lo agradecería. Gracias.

Ahí va:

Código
  1. <?php
  2. include 'config.php';
  3. $usuario=$_REQUEST['user'];
  4. $pass=$_REQUEST['pass'];
  5. $texto=$_REQUEST['texto'];
  6. if (empty($usuario) || empty($pass) || empty($texto)) die("<center><font color=red size=17>No has introducido un nombre de usuario, contraseña o texto.</font></center>");
  7. $conexion=mysql_connect($host,$user,$password) or die(mysql_error($conexion));
  8. mysql_select_db($database,$conexion) or die(mysql_error($conexion));
  9. $consulta=mysql_query("SELECT usuario, passphrase FROM jugadores WHERE usuario='$usuario'") or die(mysql_error($conexion));
  10. if (1>mysql_num_rows($consulta)) die("<center><font color='red' size='17'><b>Usuario inexistente.</b></font></center>");
  11. $datos=mysql_fetch_assoc($consulta);
  12. if (md5($pass)==$datos['passphrase'])
  13. {
  14. echo "<center><font color='green' size='17'>Login correcto.<br><b>Mensaje circular enviado</b></font></center>";
  15. //(OTRO CODE)
  16. }
  17. }
  18. else
  19. {
  20. echo "<center><font color=red size='17'>Login incorrecto.</font></center>";
  21. }
  22. mysql_close($conexion);
  23. ?>
en principio me parece ver un posible xss por no filtrar los datos (con temor a equivocarme ¬¬)

Saludos
En línea

DarkItachi


Desconectado Desconectado

Mensajes: 516


Itachi Uchiha


Ver Perfil
Re: ¿Es mi código seguro?
« Respuesta #8 en: 11 Octubre 2009, 23:25 pm »

Acabo de probar una inyeccion y no me afecta.

Pongo de usuario:

-1' UNION UPDATE jugadores SET passphrase='202cb962ac59075b964b07152d234b70' WHERE usuario='admin

Pero no me cambia nada.

jugadores es el nombre de la tabla
passphrase es el campo de la contraseña
La passphrase que le asigno es el md5 de 123

Después de esto la pass sigue siendo la misma de antes, no ha cambiado.

¿Alguien sabe porqué?
En línea

Come to me when you have these eyes...

By more that you try it, a feather never will achieve to fly.
Jubjub


Desconectado Desconectado

Mensajes: 708


Lay Ladie lay,...


Ver Perfil WWW
Re: ¿Es mi código seguro?
« Respuesta #9 en: 11 Octubre 2009, 23:29 pm »

Tienes activadas las magic quotes.

Pero no debes de fiarte de ellas, ya las han marcado como "deprecated", y posiblemente desaparezcan en algo de tiempo, filtra comillas intensivamente ;)
En línea

Jugando con Fósforoshacking con un tono diferente


.
porno
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines