Foros del Web » Programando para Internet » PHP »

Codigo malicioso?

Estas en el tema de Codigo malicioso? en el foro de PHP en Foros del Web. Hola, buenas. Tengo un problema serio y a ver si me podeis ayudar. Tengo un script para leer xml. el codigo es este (al final ...
  #1 (permalink)  
Antiguo 07/11/2008, 12:37
 
Fecha de Ingreso: enero-2002
Mensajes: 21
Antigüedad: 22 años, 3 meses
Puntos: 0
Codigo malicioso?

Hola, buenas. Tengo un problema serio y a ver si me podeis ayudar.

Tengo un script para leer xml. el codigo es este (al final os pongo el problema):

Código PHP:

$forecast_url 
"http://api.wunderground.com/auto/wui/geo/ForecastXML".$loc_id;
    
$url $forecast_url;
    
$fp = @fopen($url,"r");
    if(
$fp != FALSE || $fp != NULL){
        
$mensaje "OK";
        while (!
feof ($fp))
        
$xml .= fgets($fp4096);
        
fclose ($fp);
        
$fw fopen($cachefilename'w'); 
        
fwrite($fw$xml); 
        
fclose($fw); 
    } else{
        
$mensaje "ERROR: $php_errormsg";
    } 
    
    
$parser xml_parser_create(  ); 
    
xml_parser_set_option($parserXML_OPTION_CASE_FOLDING0);
    
xml_parse_into_struct($parser,$xml,$values,$index); 
    
xml_parser_free($parser);


    
$maxima1 htmlspecialchars($values[$index[celsius][0]][value]);
    
$minima1 htmlspecialchars($values[$index[celsius][1]][value]);
    
    
$counter 0;
    
$row_counter 2;

    
$xml=""
Es un script que lee informacion meteorologica. El caso es que a veces genera mensajes de error de este tipo:

[06-Nov-2008 20:58:09] PHP Warning: fopen(http://api.wunderground.com/auto/wui/geo/ForecastXML/global/stations/08306.html) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Connection refused in /home/public_html/weather/functions_forecast.php on line 16
[06-Nov-2008 20:58:09] PHP Warning: feof(): supplied argument is not a valid stream resource in /home/public_html/weather/functions_forecast.php on line 17
[06-Nov-2008 20:58:09] PHP Warning: fgets(): supplied argument is not a valid stream resource in /home/public_html/weather/functions_forecast.php on line 18
[06-Nov-2008 20:58:09] PHP Warning: feof(): supplied argument is not a valid stream resource in /home/public_html/weather/functions_forecast.php on line 17
[06-Nov-2008 20:58:09] PHP Warning: fgets(): supplied argument is not a valid stream resource in /home/public_html/weather/functions_forecast.php on line 18


Y asi hacia abajo, generando mensajes de error de feof y fgets hasta formar ficheros de error de mas de un giga. Tengo la web en jaguarpc y el otro dia les pete el servidor, me escribieron esto:

Hi,

Your domain midominio.com hosted on the shared server is running vulnerable scripts due to which the /tmp directory is filled up with temporary files and all sites on the server start showing blank pages.

I emptied the /tmp directory when it was 100% full but after almost 6 minutes the entire directory was filled up again. So upon investigation it was prominent that your account is having either vulnerable scritps or your scripts are broken badly.

A file of almost 1 GB contained the following sort of warnings all over.

---
a5
<br />
<b>Warning</b>: feof(): supplied argument is not a valid stream resource in <b>/home/public_html/weather/functions2.php</b> on line <b>21</b><br />

a6
<br />
<b>Warning</b>: fgets(): supplied argument is not a valid stream resource in <b>/home/public_html/weather/functions2.php</b> on line <b>22</b><br />


El script falla cuando por cualquier motivo (por ej un fallo del servidor de datos) no puede leer el xml. He intentado parar estos errores con la linea
Código PHP:
if($fp != FALSE || $fp != NULL){ 
que antes no la tenia. Pero aun asi me sigue generando esos ficheros de error tan bestias. ¿Como puedo pararlo?? ¿Hay alguna razon para esto? La verdad no me parece que el codigo este mal o sea malicioso. Son funciones creo que habituales en PHP. ¿No sera una mala configuracion del servidor?¿Como puedo hacer para que no se generen esos ficheros de error tan bestias?

Gracias, espero que podais ayudarme. Empiezo a desesperarme.
  #2 (permalink)  
Antiguo 07/11/2008, 12:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Codigo malicioso?

La causa de todos tus problemas estan en el primer error:
Cita:
06-Nov-2008 20:58:09] PHP Warning: fopen(http://api.wunderground.com/auto/wui...ons/08306.html) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Connection refused in /home/public_html/weather/functions_forecast.php on line 16
Cuando te intentaste conectar a api.wunderground.com, el servidor te rechazo la conexión por lo que posteriormente al tratar de usar el puntero te da error.

Para eliminar los demas errores puedes usar algo así:
Código php:
Ver original
  1. $forecast_url = "http://api.wunderground.com/auto/wui/geo/ForecastXML".$loc_id;
  2.     $url = $forecast_url;
  3.     $fp = @fopen($url,"r");
  4.     if($fp == false){
  5.         die("error");
  6.     } else{
  7.         $mensaje = "OK";
  8.         while (!feof ($fp))
  9.         $xml .= fgets($fp, 4096);
  10.         fclose ($fp);
  11.         $fw = fopen($cachefilename, 'w');
  12.         fwrite($fw, $xml);
  13.         fclose($fw);
  14.     }
  15.    
  16.     $parser = xml_parser_create(  );
  17.     xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
  18.     xml_parse_into_struct($parser,$xml,$values,$index);
  19.     xml_parser_free($parser);
  20.  
  21.  
  22.     $maxima1 = htmlspecialchars($values[$index[celsius][0]][value]);
  23.     $minima1 = htmlspecialchars($values[$index[celsius][1]][value]);
  24.    
  25.     $counter = 0;
  26.     $row_counter = 2;
  27.  
  28.     $xml="";
  #3 (permalink)  
Antiguo 07/11/2008, 13:08
 
Fecha de Ingreso: enero-2002
Mensajes: 21
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: Codigo malicioso?

Gracias GatorV, voy a probar eso. Ahora mismo les acabo de petar el server otra vez y creo que tengo losminutos contados en jaguarpc. Ya hasta estoy buscando otro VPS. Solo espero que no me demanden ni cosas raras. De todas maneras... ¿eso no es lo mismo que yo tenia escrito? Solo que lo tenia puesto a la inversa no? o sea.... !=FALSE.

De todas maneras no es exagerado que les pete el servidor por ese error??? Se generan ficheros de error de mas de un giga en un segundo. Puffff, vaya follon por una m*erda de script. Es que hasta en PHP.net vienen codigos iguales a modo de ejemplo y en ninguna parte he leido que sean codigos peligrosos, este de la funcion fgets:

Código PHP:
<?php
$gestor 
= @fopen("/tmp/archivo_entrada.txt""r");
if (
$gestor) {
    while (!
feof($gestor)) {
        
$bufer fgets($gestor4096);
        echo 
$bufer;
    }
    
fclose ($gestor);
}
?>
  #4 (permalink)  
Antiguo 07/11/2008, 13:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Codigo malicioso?

Lo extraño es que se generen los temporales, no se como tendras configurado tu php.ini en este caso para generar los temporales o si ese es todo el script.

Saludos.
  #5 (permalink)  
Antiguo 07/11/2008, 13:30
 
Fecha de Ingreso: enero-2002
Mensajes: 21
Antigüedad: 22 años, 3 meses
Puntos: 0
Respuesta: Codigo malicioso?

Ya pero yo no tengo acceso al php.ini... es un servidor compartido de esos con varias paginas. En la carpeta donde tengo el script tambien se genera un fichero de error de 1.3 gigas cuando falla por no leer el xml y me deja sin espacio pero bueno eso solo me afecta a mi.

Yo creo que algo raro hay en la configuracion de ese server porque no es normal que por un error que creo que puede ser muy comun les pete todo el servidor y se lo deje sin espacio. Voy a copiar el codigo tal como viene en php.net pa que no haya dudas.

Por cierto me acaban de borrar toda la carpeta donde tenia el script y supongo que dentro de poco me volveran a bloquear la pagina.

Muchas gracias por tus opiniones y si alguien se le ocurren mas cosas que no dude en opinar.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:51.