|
|
|
| Описание:
Уязвимость рассчитана на 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("&","&",$postbody); // Заменяем & на ее сущность & для воизбежания XSS UTF-8 Атаки
$postbody = str_ireplace("javascript","",$postbody);
$postbody = str_ireplace("vbscript","'",$postbody);
?>
|
| |
|
|
|
|
|
|
|
для: akira
(15.08.2006 в 15:56)
| | Душевно!:)
еще надо проверку на & и % сделать. Тогда можно и на фтп ссылки давать. | |
|
|
|
|
|
|
|
для: Loki
(15.08.2006 в 16:01)
| | я тут подумал, а ведь блин, сколько у меня таких бырок :))) Только я куки не использую - поэтому они для меня не важны.
Но как опыт очень пригодится. | |
|
|
|
|
|
|
|
для: akira
(15.08.2006 в 15:56)
| | так держать =) | |
|
|
|
|
|
|
|
для: CrazyAngel
(15.08.2006 в 16:38)
| | да ребятушки, спасибо, я как раз сайтец делаю - это очень пригодится | |
|
|
|
|
|
|
|
для: akira
(15.08.2006 в 15:56)
| |
> $postbody = str_ireplace("javascript","",$postbody);
> $postbody = str_ireplace("vbscript","'",$postbody);
>?>
>
|
А если это вполне мирное слово javascript или vbscript? Может, лучше заменить латинские a, c, p на русские а, с,р? Для человека ничего не изменится, а для машины - кардинально. | |
|
|
|
|
|
|
|
для: Киналь
(15.08.2006 в 19:22)
| | У нас реализовано такой регуляркой:
'#\[url=([\w]+?://[^ \"\n\r\t<]*?)\](.*?)\[/url\]#si';
|
| |
|
|
|
|
|
|
|
для: Киналь
(15.08.2006 в 19:22)
| | Что-то я не понимаю.
Безобидную ссылку <a href=http://сервер/путь/javascript/reference.html> справочник по JS </а> вы предлагаете покорежить? | |
|
|
|
|
|
|
|
для: akira
(15.08.2006 в 15:56)
| | "javascript" можно разрывать тарбуляцией, при этом он нормально обрабатывается | |
|
|
|
|
|
|
|
для: akira
(15.08.2006 в 15:56)
| | Наверное стоит воспользоваться опережающей проверкой, хотя чует моё сердце не достаточно этого...
http://www.softtime.ru/forum/read.php?id_forum=2&id_theme=22625 | |
|
|
|