Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Безопасность кода ? Вот сам сурс Seobot |

16.07.2009, 04:31
|
|
Постоянный
Регистрация: 23.05.2005
Сообщений: 617
Провел на форуме: 1262031
Репутация:
71
|
|
Безопасность кода ? Вот сам сурс Seobot
Хотел бы поинтересоваться ибо когда то видел как ламают сайты через поисковик еще давненько.. типа через отображение запроса проводили атака в самом сайте.
Скачал я какойто скрипт под названием Seobot
Который отображает сприсо страниц и какой бот посетил
вот сам seobot
<?
if ( strstr($_SERVER['HTTP_USER_AGENT'], 'Yandex') ) { $bot='Yandex';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'Googlebot') ) {$bot='Google';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'Slurp') ) {$bot='Slurp';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'WebCrawler') ) {$bot='WebCrawler';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'ZyBorg') ) {$bot='ZyBorg';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'google') ) {$bot='Google';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'scooter') ) {$bot='AltaVista';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'stack') ) {$bot='Rambler';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'aport') ) {$bot='Aport';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'lycos') ) {$bot='Lycos';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'fast') ) {$bot='Fast Search';}
elseif ( strstr($_SERVER['HTTP_USER_AGENT'], 'rambler') ) {$bot='Rambler';}
if($bot !="") {
$ip = $REMOTE_ADDR;
$date = date("d.m.Y");
$home = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$fh = fopen('sebot', "r");
$fil = fread($fh, filesize('sebot'));
fclose($fh);
$con=$date.":::".$bot.":::".$ip.":::".$home."::: \r\n".$fil;
$file=fopen("sebot","w");
fputs($file, $con);
fclose($file);
}
?>
Хотел просить безопасный ли этот код. т.е если пооделать запрост и он отобразит к примеру ковычки или инлюд какой или xss ?
Может поставить фильтрацию ? но там же надо что бы слеши были... а я опять в этих Регулярках ничо не понимаю..
Ну что бы все пропускало кроме кавычек или еще там чего ..
Вообщем просто хочу совета.
|
|
|

16.07.2009, 08:19
|
|
Новичок
Регистрация: 31.03.2009
Сообщений: 14
Провел на форуме: 97409
Репутация:
6
|
|
В данном коде, если включен register_globals можно перезаписать переменную $bot, тем самым писать что угодно тебе в файл sebot, насколько это опасно решать тебе....
Чтобы исправить перед первым if'ом напиши $bot = ""; А лучше переписать все через switch case default.
|
|
|

16.07.2009, 11:16
|
|
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме: 7617458
Репутация:
3965
|
|
Сообщение от FireFenix
Код абсолютно безопасен. Не заморачивайся так на этом
Неужели?
Можно записать любое содержимое в файл через специально сформированный УРЛ.
PHP код:
$home = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$_SERVER['REQUEST_URI'] - никак не фильтруется, подделать очень просто:
/script.php?a=<?php eval('ls -la'); ?>
__________________
BlackHat. MoDL
|
|
|

16.07.2009, 11:33
|
|
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме: 3178262
Репутация:
389
|
|
Сообщение от Dimi4
Неужели?
Можно записать любое содержимое в файл через специально сформированный УРЛ.
PHP код:
$home = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
Записать в файл можно всё что угодно, но т.к. файл не html и не php, то записанный контент не выполнится (по дефолту) => не повредит ничему
Последний раз редактировалось FireFenix; 16.07.2009 в 11:54..
|
|
|

16.07.2009, 11:47
|
|
Познающий
Регистрация: 03.03.2009
Сообщений: 86
Провел на форуме: 994199
Репутация:
258
|
|
Сообщение от FireFenix
Записать в файл можно всё что угодно, но т.к. файл на html и не php, то записанный контент не выполнится (по дефолту) => не повредит ничему
Ну тогда давайте будем позволять пользователю записывать в файл (html), что попало, и попросим чтобы на ачате включили HTML, ибо это "не повредит ничему"
|
|
|

16.07.2009, 11:59
|
|
Reservists Of Antichat - Level 6
Регистрация: 19.03.2007
Сообщений: 953
Провел на форуме: 7617458
Репутация:
3965
|
|
Сообщение от FireFenix
Записать в файл можно всё что угодно, но т.к. файл не html и не php, то записанный контент не выполнится (по дефолту) => не повредит ничему
Что значит по дефолту? Откуда ты знаешь какие дефолтные настройки сервака?
Не надо быть столь увереным. Если включен модуль mod_mime то пхп скрипт с любим расширением выполнится как пхп 
__________________
BlackHat. MoDL
|
|
|

16.07.2009, 12:14
|
|
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме: 991929
Репутация:
395
|
|
+ к этому локальный инклуд... или вдруг есть скрипт который читает этот лог, как минимум раскрытие информации о сервере )
|
|
|

16.07.2009, 12:18
|
|
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме: 4532332
Репутация:
1196
|
|
Сообщение от Dimi4
Неужели?
Можно записать любое содержимое в файл через специально сформированный УРЛ.
PHP код:
$home = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$_SERVER['REQUEST_URI'] - никак не фильтруется, подделать очень просто:
эмм,продимонстрируй плз я лично не догадуюсь,вот если б код имел такой вид:
PHP код:
$xek=$_GET['tratata']);
echo $xek;
то
вобщем с интересом взгляну,да и новое для себя узнаю.
и по сабжу:
вышеприведенный скрипт будет работать если
регистр_глобал он
потому как:
$ip = $REMOTE_ADDR;
Последний раз редактировалось L I G A; 16.07.2009 в 12:29..
|
|
|

16.07.2009, 12:25
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Код:
http://evilsite.ru/evilscript.php?<?phpinfo()?>
В файл запишется
Код:
evilsite.ruevilscript.php?<?phpinfo()?>
Если включен модуль mod_mime то пхп скрипт с любим расширением выполнится как пхп
Последний раз редактировалось mailbrush; 16.07.2009 в 12:38..
|
|
|

16.07.2009, 12:42
|
|
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме: 9098076
Репутация:
4303
|
|
L I G A, ппц, бред ты написал
во-первых
$xek=$_GET['tratata']);
echo $xek;
?tratata=phpinfo();
ну и что тебе это даст? выведет надпись "phpinfo()" ?))
вышеприведенный скрипт будет работать если
регистр_глобал он
потому как:
$ip = $REMOTE_ADDR;
Вовторых Димич говорит про $_SERVER['REQUEST_URI']; , её изменить то проблем не возникнет
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|