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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking
| | |-+  Bugs y Exploits
| | | |-+  Nivel Web (Moderadores: sirdarckcat, WHK)
| | | | |-+  Evitar cookie nula en php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Evitar cookie nula en php  (Leído 2,860 veces)
0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Evitar cookie nula en php
« en: 18 Octubre 2009, 04:42 am »

Hola, me gustaría preguntar de qué manera se puede evitar una cookie nula.

Por ejemplo, en un sitio existía un mecanismo de autenticación algo así (los nombres los he cambiado):

/adm/control.php
Código:
<?php
session_start();
if ($_SESSION['auth'] != 'YES') {
    header('Location: index.php');
}
echo 'Panel de admin';
?>

/adm/index.php
Código:
<?php
echo 'No logeado';
?>

y al acceder a /adm/control.php se va a index.php porque no está registrada la variable de sesión.
Pero si modifico el contenido de la Cookie con tamper data así:

Código:
PHPSESSID=

Se produce lo siguiente:

Código:
Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in C:\sitio\adm\control.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\sitio\adm\control.php:3) in C:\sitio\adm\control.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\sitio\adm\control.php:3) in C:\sitio\adm\control.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at C:\sitio\adm\control.php:3) in C:\sitio\adm\control.php on line 5
Panel de admin

Entonces, mi pregunta es cómo evitar que session_start() se caiga ante un ataque así.

En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Evitar cookie nula en php
« Respuesta #1 en: 18 Octubre 2009, 19:02 pm »

Ese es un bug de PHP, puedes actualizar php y no te debería suceder eso, es path disclosure.

Por otra parte:
Código
  1. <?php
  2. if ($_SESSION['auth'] != 'YES') {
  3.    header('Location: index.php');
  4. }
  5. echo 'Panel de admin';
  6. ?>

está mal hecho porque enviará el header de redirección pero de todas formas dirá panel de admin ya que el script nunca terminó, o sea.... el servidor envía el header "location: index.php" y el explorador lo interpretará y se redireccionará pero en realidad también mostrará el contenido del panel de administración y cualquiera podría ingresar omitiendo ese header o haciendo la petición desde la consola de comandos.
Lo que debes hacer es ponerle un exit para que el script no siga:

Código
  1. <?php
  2. if ($_SESSION['auth'] != 'YES') {
  3. header('Location: index.php');
  4. }
  5. echo 'Panel de admin';
  6. ?>
En línea

0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Evitar cookie nula en php
« Respuesta #2 en: 18 Octubre 2009, 22:05 pm »

ah, gracias por la info.

hice una funcion para iniciar sesión, aunque creo que es más práctico lo que dices de agregar el exit, y también un error_reporting(0).

Código
  1. function iniciar_sesion()
  2. {
  3.    if (!is_string($_COOKIE[session_name()])
  4.          || preg_match(
  5.              '/^[a-zA-Z0-9\,\-]{32}$/'
  6.              , $_COOKIE[session_name()]
  7.             ) != 1 ) {
  8.        unset($_COOKIE[session_name()]);
  9.    }
  10.    session_start();
  11. }
  12.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

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