|
|
|
|
|
|
|
|
|
|
Удаленный атакующий может внедрить произвольный код сценария в COLOR и FONT тэги.
Пример/Эксплоит:
[FONT=expression(alert(document.cookie))]text[/FONT]
будет преведен системой в
<span style='font-family:expression(alert(document.cookie))'>text</span>
[COLOR=expression(alert(document.cookie))]text[/COLOR]
будет преведен системой в
<span style='color:expression(alert(document.cookie))'>text</span>
Исправление:
Перевод Внесите следующие изменения:
In sources/lib/post_parser.php , just replace the lines :
———————————————————————————-
while ( preg_match( "#\[font=([^\]]+)\](.*?)\[/font\]#ies", $txt ) )
{
$txt = preg_replace( "#\[font=([^\]]+)\](.*?)\[/font\]#ies" , "\$this->regex_font_attr(array('s'=>'font','1'=>'\\1','2'=>'\\2'))", $txt );
}
while( preg_match( "#\[color=([^\]]+)\](.+?)\[/color\]#ies", $txt ) )
{
$txt = preg_replace( "#\[color=([^\]]+)\](.+?)\[/color\]#ies" , "\$this->regex_font_attr(array('s'=>'col' ,'1'=>'\\1','2'=>'\\2'))", $txt );
}
———————————————————————————
by the lines :
while ( preg_match( "#\[font=([^;<>\*\(\)\]\"']*)\](.*?)\[/font\]#ies", $txt ) )
{
$txt = preg_replace( "#\[font=([^;<>\*\(\)\"']*)\](.*?)\[/font\]#ies" , "\$this->regex_font_attr(array('s'=>'font','1'=>'\\1','2'=>'\\2'))", $txt );
}
while( preg_match( "#\[color=([a-zA-Z0-9]*)\](.+?)\[/color\]#ies", $txt ) )
{
$txt = preg_replace( "#\[color=([a-zA-Z0-9]*)\](.+?)\[/color\]#ies" , "\$this->regex_font_attr(array('s'=>'col' ,'1'=>'\\1','2'=>'\\2'))", $txt );
}
Работает на DokuWiki |