<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/MustLive Edition" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Коментарі для запису: Нова уразливість в Joostina</title>
	<link>http://websecurity.com.ua/4818/</link>
	<description></description>
	<pubDate>Thu, 23 Apr 2026 09:53:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=MustLive Edition</generator>

	<item>
		<title>від: MustLive</title>
		<link>http://websecurity.com.ua/4818/#comment-348156</link>
		<pubDate>Thu, 13 Jan 2011 21:41:44 +0000</pubDate>
		<guid>http://websecurity.com.ua/4818/#comment-348156</guid>
					<description>&lt;strong&gt;boston&lt;/strong&gt;

Вы вполне оперативно исправили дыру. Замечу лишь, что в вышеприведённом коде патча не весь код сохранился при публикации. Но по указанной ссылке на joomlaforum.ru можно будет ознакомиться с полным текстом патча.

PoC для новой XSS:

&lt;pre&gt;&lt;code style="overflow:auto"&gt;http: //site/index.php?option=com_search&#038;searchword=xss&#038;ordering=%22%3E%3C%73cript%3Ealert(document.cookie)%3Ealert(document.cookie)%3C/%73cript%3E&lt;/code&gt;&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p><strong>boston</strong></p>
<p>Вы вполне оперативно исправили дыру. Замечу лишь, что в вышеприведённом коде патча не весь код сохранился при публикации. Но по указанной ссылке на joomlaforum.ru можно будет ознакомиться с полным текстом патча.</p>
<p>PoC для новой XSS:</p>
<pre><code style="overflow:auto">http: //site/index.php?option=com_search&#038;searchword=xss&#038;ordering=%22%3E%3C%73cript%3Ealert(document.cookie)%3Ealert(document.cookie)%3C/%73cript%3E</code></pre>
]]></content:encoded>
				</item>
	<item>
		<title>від: boston</title>
		<link>http://websecurity.com.ua/4818/#comment-348154</link>
		<pubDate>Thu, 13 Jan 2011 21:16:30 +0000</pubDate>
		<guid>http://websecurity.com.ua/4818/#comment-348154</guid>
					<description>Сделали описание ручного патча для второй найденной уязвимости ( сама правка сделана сразу после получения сообщения ):

Вторая часть, скорее описывается на примере 1.3.0.*, в более ранних версиях надо необходимо найти аналгичные места:

/modules/mod_ml_login/helper.php
найти код (в конце файла)
	// converts &#38; to &#38; for xtml compliance
	$return = str_replace( '&#38;', '&#38;', $return );
	return $return;
  }
}
и заменить его на код -
	$return = str_replace(JPATH_SITE.'/','',$return);
	$return = ampReplace($return);
	return htmlentities(sefRelToAbs($return));
  }
}

В файле /includes/frontend.php найти строку:
echo ''."\r\n";
и заменить на:
echo ''."\r\n";


Полный текст правок собраны в этом сообщении _joomlaforum.ru/index.php/topic,104914.msg790595.html#msg790595</description>
		<content:encoded><![CDATA[<p>Сделали описание ручного патча для второй найденной уязвимости ( сама правка сделана сразу после получения сообщения ):</p>
<p>Вторая часть, скорее описывается на примере 1.3.0.*, в более ранних версиях надо необходимо найти аналгичные места:</p>
<p>/modules/mod_ml_login/helper.php<br />
найти код (в конце файла)<br />
	// converts &amp; to &amp; for xtml compliance<br />
	$return = str_replace( &#8216;&amp;&#8217;, &#8216;&amp;&#8217;, $return );<br />
	return $return;<br />
  }<br />
}<br />
и заменить его на код -<br />
	$return = str_replace(JPATH_SITE.&#8217;/','&#8217;,$return);<br />
	$return = ampReplace($return);<br />
	return htmlentities(sefRelToAbs($return));<br />
  }<br />
}</p>
<p>В файле /includes/frontend.php найти строку:<br />
echo &#8216;&#8217;.&#8221;\r\n&#8221;;<br />
и заменить на:<br />
echo &#8216;&#8217;.&#8221;\r\n&#8221;;</p>
<p>Полный текст правок собраны в этом сообщении _joomlaforum.ru/index.php/topic,104914.msg790595.html#msg790595
</p>
]]></content:encoded>
				</item>
	<item>
		<title>від: MustLive</title>
		<link>http://websecurity.com.ua/4818/#comment-347852</link>
		<pubDate>Tue, 11 Jan 2011 18:38:56 +0000</pubDate>
		<guid>http://websecurity.com.ua/4818/#comment-347852</guid>
					<description>Зазначу, що даний патч не захищає від всіх векторів атаки. І його можна обійти, зокрема в версії Joostina 1.3.0, для проведення XSS атаки. Про що вже сповістив розробників системи.</description>
		<content:encoded><![CDATA[<p>Зазначу, що даний патч не захищає від всіх векторів атаки. І його можна обійти, зокрема в версії Joostina 1.3.0, для проведення XSS атаки. Про що вже сповістив розробників системи.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>від: MustLive</title>
		<link>http://websecurity.com.ua/4818/#comment-347179</link>
		<pubDate>Fri, 07 Jan 2011 21:25:27 +0000</pubDate>
		<guid>http://websecurity.com.ua/4818/#comment-347179</guid>
					<description>&lt;strong&gt;boston&lt;/strong&gt;

Всегда пожалуйста.

Разработчики Joostina, молодцы, как всегда очень оперативно исправили уязвимость.</description>
		<content:encoded><![CDATA[<p><strong>boston</strong></p>
<p>Всегда пожалуйста.</p>
<p>Разработчики Joostina, молодцы, как всегда очень оперативно исправили уязвимость.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>від: boston</title>
		<link>http://websecurity.com.ua/4818/#comment-347166</link>
		<pubDate>Fri, 07 Jan 2011 18:23:32 +0000</pubDate>
		<guid>http://websecurity.com.ua/4818/#comment-347166</guid>
					<description>Уязвимость исправили, спасибо огромное за сообщений!

Правка в основное ядро: http://code.google.com/p/joostina/source/detail?r=832

Патч для Joostina 1.0.x или других версий Joostina:
В файле components\com_search\search.html.php необходимо найти строки:
[php]
	echo $pageNav-&#62;writePagesCounter();
	$ordering = strtolower(strval(mosGetParam($_REQUEST, 'ordering', 'newest')));
[/php]
и добавить после них:
[php]
	$ordering_exist = array( 'newest','oldest','popular','alpha','category' );
	$ordering = isset( $ordering_exist[$ordering] ) ? $ordering : 'newest';
[/php]
должно получиться:
[php]
	echo $pageNav-&#62;writePagesCounter();
	$ordering = strtolower(strval(mosGetParam($_REQUEST, 'ordering', 'newest')));
	$ordering_exist = array( 'newest','oldest','popular','alpha','category' );
	$ordering = isset( $ordering_exist[$ordering] ) ? $ordering : 'newest';
[/php]

После этого файл сохранить и заменить аналогичный на сервере.</description>
		<content:encoded><![CDATA[<p>Уязвимость исправили, спасибо огромное за сообщений!</p>
<p>Правка в основное ядро: <a href="http://code.google.com/p/joostina/source/detail?r=832" rel="nofollow">http://code.google.com/p/joostina/source/detail?r=832</a></p>
<p>Патч для Joostina 1.0.x или других версий Joostina:<br />
В файле components\com_search\search.html.php необходимо найти строки:<br />
[php]<br />
	echo $pageNav-&gt;writePagesCounter();<br />
	$ordering = strtolower(strval(mosGetParam($_REQUEST, &#8216;ordering&#8217;, &#8216;newest&#8217;)));<br />
[/php]<br />
и добавить после них:<br />
[php]<br />
	$ordering_exist = array( &#8216;newest&#8217;,'oldest&#8217;,'popular&#8217;,'alpha&#8217;,'category&#8217; );<br />
	$ordering = isset( $ordering_exist[$ordering] ) ? $ordering : &#8216;newest&#8217;;<br />
[/php]<br />
должно получиться:<br />
[php]<br />
	echo $pageNav-&gt;writePagesCounter();<br />
	$ordering = strtolower(strval(mosGetParam($_REQUEST, &#8216;ordering&#8217;, &#8216;newest&#8217;)));<br />
	$ordering_exist = array( &#8216;newest&#8217;,'oldest&#8217;,'popular&#8217;,'alpha&#8217;,'category&#8217; );<br />
	$ordering = isset( $ordering_exist[$ordering] ) ? $ordering : &#8216;newest&#8217;;<br />
[/php]</p>
<p>После этого файл сохранить и заменить аналогичный на сервере.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
