Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: XSS Атaка
 
 автор: akira   (15.08.2006 в 15:56)   письмо автору
 
 

Описание:
Уязвимость рассчитана на IE, но и для Opera|FF есть угроза и кроется в неправельной обработке тега url. Кстати это относится и к тегам (особенно img ) на других приложения программистов.
Тега url не так опасен как например тег img (для большинства форумов), если на ссылку надо нажать, что бы привести в действие код, то для рисунка надо просто открыть страницу.
PS Спасибо Loki за идею о XSS атаки :)

Не стоит забывать, что теги - это потенциальная угроза безопасности вашего приложения.
[url=JavaScript:alert('Внимание!_XSS_Атака!_форум_уязвим_найдено_мной_(с)_akira_thx_loki_for_idea');javascript:document.location.href='http://softtime.ru/forum/read.php?id_forum=2&id_theme=22625&page=1']смотрим пример кода XSS Атаки[/url]
Решение проблемы:
Найти:

<?
// Тэги
    
$postbody preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$postbody);
    
$postbody preg_replace("#\[i\](.+)\[\/i\]#isU",'<i>\\1</i>',$postbody);
    
$postbody preg_replace("#\[url\][\s]*([\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
    
$postbody preg_replace("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",
                             
'<a href="\\1" target=_blank>\\2</a>',
                             
$postbody);
    
$postbody str_replace("'","'",$postbody);
?> 

Заменить:


<?
$postbody 
preg_replace("#\[b\](.+)\[\/b\]#isU",'<b>\\1</b>',$postbody);
    
$postbody preg_replace("#\[i\](.+)\[\/i\]#isU",'<i>\\1</i>',$postbody);
    
$postbody preg_replace("#\[url\][\s]*([\S]*)[\s]*\[\/url\]#si",'<a href="\\1" target=_blank>\\1</a>',$postbody);
    
$postbody preg_replace("#\[url[\s]*=[\s]*([\S]+)[\s]*\][\s]*([^\[]*)\[/url\]#isU",
                             
'<a href="\\1" target=_blank>\\2</a>'// loki напомнил
                             
$postbody);
    
$postbody str_replace("'","'",$postbody);
$postbody str_replace("&","&amp;",$postbody); // Заменяем & на ее сущность &amp; для воизбежания XSS UTF-8 Атаки
    
$postbody str_ireplace("javascript","",$postbody);
    
$postbody str_ireplace("vbscript","'",$postbody);
?>

   
 
 автор: Loki   (15.08.2006 в 16:01)   письмо автору
 
   для: akira   (15.08.2006 в 15:56)
 

Душевно!:)
еще надо проверку на & и % сделать. Тогда можно и на фтп ссылки давать.

   
 
 автор: akira   (15.08.2006 в 16:11)   письмо автору
 
   для: Loki   (15.08.2006 в 16:01)
 

я тут подумал, а ведь блин, сколько у меня таких бырок :))) Только я куки не использую - поэтому они для меня не важны.
Но как опыт очень пригодится.

   
 
 автор: CrazyAngel   (15.08.2006 в 16:38)   письмо автору
 
   для: akira   (15.08.2006 в 15:56)
 

так держать =)

   
 
 автор: Lelik   (15.08.2006 в 16:47)   письмо автору
 
   для: CrazyAngel   (15.08.2006 в 16:38)
 

да ребятушки, спасибо, я как раз сайтец делаю - это очень пригодится

   
 
 автор: Киналь   (15.08.2006 в 19:22)   письмо автору
 
   для: akira   (15.08.2006 в 15:56)
 


>    $postbody = str_ireplace("javascript","",$postbody);
>    $postbody = str_ireplace("vbscript","'",$postbody);
>?>
>

А если это вполне мирное слово javascript или vbscript? Может, лучше заменить латинские a, c, p на русские а, с,р? Для человека ничего не изменится, а для машины - кардинально.

   
 
 автор: JIEXA   (15.08.2006 в 19:33)   письмо автору
 
   для: Киналь   (15.08.2006 в 19:22)
 

У нас реализовано такой регуляркой:

'#\[url=([\w]+?://[^ \"\n\r\t<]*?)\](.*?)\[/url\]#si';

   
 
 автор: Trianon   (15.08.2006 в 19:54)   письмо автору
 
   для: Киналь   (15.08.2006 в 19:22)
 

Что-то я не понимаю.
Безобидную ссылку <a href=http://сервер/путь/javascript/reference.html> справочник по JS </а> вы предлагаете покорежить?

   
 
 автор: Artem S.   (15.08.2006 в 19:34)   письмо автору
 
   для: akira   (15.08.2006 в 15:56)
 

"javascript" можно разрывать тарбуляцией, при этом он нормально обрабатывается

   
 
 автор: cheops   (15.08.2006 в 20:08)   письмо автору
 
   для: akira   (15.08.2006 в 15:56)
 

Наверное стоит воспользоваться опережающей проверкой, хотя чует моё сердце не достаточно этого...
http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=22625

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования