Por Flow
PHP3 es un lenguaje interpretado, bastante parecido a perl, interpretado
por el server de web.
<script language="php">
Eso enseñaría un Hello World en el navegador que
cargase esa pagina.
Vulnerabilidad: PHP también soporta el pase de variables como si fuera un CGI,
e.g. si llamamos a un script php
www.example.com/script.php3?user=pepe&pass=juan Con esto el servidor asignara a las variables (accesibles desde el script) $user el valor "pepe" y a $pass el valor "juan" antes de parsear el script. Si dentro del script definimos una variable, lo que hará será
machacar la variable que hemos pasado como parámetros de la llamada
al script, lo cual es bueno, porque nos evita muchos problemas.
<script language="php"> if($user && $password)
if($ok == 1)
Aquí podemos ver tres variables, $user, $password
y $ok. Supongamos que el script espera que se
http://www.example.com/script.php3?user=pepe&password=juan A primera vista, parece correcto el script. Fijandonos un poco mas,
veremos que la variable $ok
Que pasa si la condificion del if() no se cumple (no pasamos un usuario o un password como parámetro al script)? Pues que $ok no se declara, se llega al segundo if() y como no se cumple, va a la parte de Acceso Denegado. Pero que pasa si no pasamos un password, y pasamos la variable $ok
como un parametro cuando
http://www.example.com/script.php3?user=pepe&ok=1 Esto nos llevaria a ver la información confidencial del usuario, puesto que no se define user, pero se define $ok=1, con lo que la segunda condicion se cumple, y entramos en el proceso de la info confidencial del user :) Si, podéis argumentar que se necesita saber el nombre de las
variables, pero tened en cuenta que hay bastantes paquetes que usan PHP
en open source (programas para consultar email a través de web,
interfaces BBDD/web para webs de noticias, etc), con lo que solo es cuestión
de repasarse el programa en cuestión, mirar que variables son vulnerables
y usarlas.
SOLUCIÓN: Solución? Declarar todas las variables que vayamos a user dentro
del programa al principio del
Ah, ya que estoy, php permite ejecutar comandos desde dentro del script. Así que cuidado si ponéis php en un servidor web al que tiene la gente acceso para poner sus webs. Lo mismo para SSI (server side includes). Pensad también que un libro de visitas muchas veces permite que le pongamos código HTML, conque es casi como que el usuario tenga acceso a crear sus paginas web, asi que atentos :) Saludos, FLoW
Referencias: http://www.php3.com
- Website de PHP
Para ver el web en las mejores condiciones, usa una resolución de 800x600 y Netscape Navigator |