浅谈PHP中的“后门”

  修改须谨慎,修改之后你将不会得到官方的任何更新信息!

  今天先去红狼看了看我昨天问的问题,目前没人能回答.收到管理员的消息,应该是群发的,SABLOG又出漏洞了.去官方一看,还是那个编码的,跟DZ类似的漏洞.最近漏洞好多啊.

  登录BLOG后台,果然弹出提示框了.我倒不怎么关心提示框,SABLOG怎么知道我的版本有漏洞呢,程序肯定有后门.每次登陆后台自动检测官方版本跟当前版本对比.嗯.后来找到了.在templates/admin/main.php最后的一部分.删掉如下代码就OK了.

  其实这个不足以导致被黑的,现在一般有点常识的,密码都比较复杂,几个数字+几个字母,MD5的话一般很难跑出来.当然有彩虹表的话,另说...

<script type="text/javascript">

i=1;   var autourl=new Array();   autourl[1] = 'www.sablog.net';   autourl[2] = 'cnc.sablog.net';   function auto(url){       if(i){           i=0;           var oHead = document.getElementsByTagName('head').item(0);            var oScript= document.createElement("script");            oScript.type = "text/javascript";            oScript.src = "http://"+url+"/update.php?version=$now_version&release=$now_release&hostname=$now_hostname";            oHead.appendChild(oScript);        }   }   function run(){       for(var i=1;i<autourl.length;i++) {           document.write("<img src=http://"+autourl[i]+" width=1 height=1 onerror=auto('"+autourl[i]+"')>");       }   }   run();   </script>  

  目前流行的程序里,不止SABLOG一个,Discuz,DEDECMS都是有这样的后门的.这样的后门官方的真正用意很难说.为了让用户及时得到最新的补丁,最新的版本是一方面,其他的,随便人家怎么发挥了...但是这个东西有好的一面,也有坏的一面,一旦官方被黑,后果可想而知,所有的用户就被"批量挂马"了.现在干脆都给发出来吧.先来个DEDECMS的,标示出来的删掉就行:/include/inc_functions.php

PHP代码

function GetNewInfo(){       if(!isset($GLOBALS['__funAdmin'])) require_once(dirname(__FILE__)."/inc/inc_fun_funAdmin.php");     return SpGetNewInfo();   }  

/include/inc/inc_fun_funAdmin.php

PHP代码

function SpGetNewInfo(){       global $cfg_version;       $nurl = $_SERVER["HTTP_HOST"];       if( eregi("[a-z\-]{1,}\.[a-z]{2,}",$nurl) ){ $nurl = urlencode($nurl); }       else{ $nurl = "test"; }       $gs = "<iframe name='stafrm' src='http://www.dedecms.com/newinfo.php?version=".urlencode($cfg_version)."&formurl=$nurl' frameborder='0' id='stafrm' width='100%' height='50'></iframe>";       return $gs;   }  

dede/index_body.php(其中dede为后台目录)

PHP代码

<div class="bodytitle">       <div class="bodytitleleft"></div>       <div class="bodytitletxt">DedeCms最新消息</div>   </div>   <table width="96%" border="0" align="center" cellpadding="0" cellspacing="0">       <tr><form name="uploadspider" action="upload_spider.php" method="post">           <td height="80" class="main_dnews">               <?php echo GetNewInfo()?>        </td>            </form>       </tr>   </table>

  再把DZ的"后门"发出来吧.admin\global.func.php里面查找"function cpfooter",替换成如下的function:本站:临沂电脑网 欢迎同类站点友情连接 JavaScript代码

时间: 2024-08-02 11:44:37

浅谈PHP中的“后门”的相关文章

浅谈Python中copy()方法的使用

  这篇文章主要介绍了浅谈Python中copy()方法的使用,Python中的拷贝分为潜拷贝和深拷贝,本文只是简单介绍用法,需要的朋友可以参考下 copy()方法返回字典的浅拷贝. 语法 以下是copy()方法的语法: ? 1 dict.copy() 参数 NA 返回值 此方法返回字典的浅拷贝. 例子 下面的例子显示了copy()方法的使用. ? 1 2 3 4 5 6 #!/usr/bin/python   dict1 = {'Name': 'Zara', 'Age': 7};   dict

浅谈ASP中Request对象获取客户端数据的顺序

request|对象|客户端|数据 浅谈ASP中Request对象获取客户端数据的顺序 /**描述:在使用ASP Request对象时需要注意的小问题作者:慈勤强Email : cqq1978@yeah.net**/ 在ASP中Request对象是获取客户端提交数据的一个很重要的对象,大家对他也是非常熟悉了.虽然如此,还是经常有人问我下面的几种写法有什么不同,到底应该怎么写?strMessage = Request("msg")strMessage = Request.Form(&qu

浅谈jquery中delegate()与live()

  这篇文章主要介绍了浅谈jquery中delegate()与live()的相关资料,需要的朋友可以参考下 delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序 例如给id是showspan的div中的span标签添加事件 ? 1 2 3 4 5 6 7 8 9 10 <div id="showspan"><span>showspan**showspan</span></div> <span>

浅谈javascript中call()、apply()、bind()的用法

  浅谈javascript中call().apply().bind()的用法         一直对Javascript中的apply/call/bind的用法很模糊,恰好看到了这篇文章.对三者之间的区别与联系算是有了比较清晰的认识.这里记录下来,分享给大家. call(thisObj,arg1,arg2...).apply(thisObj,[obj1,obj2...])这二个方法是每个函数都包含的非继承的方法 call(thisobj[, args])和apply(thisobj[, arg

浅谈javascript中this在事件中的应用

 这篇文章主要介绍了浅谈javascript中this在事件中的应用实例,非常有助于我们对this关键字的理解,这里推荐给大家.     this关键字在javascript中是非常强大的,但是如果你不清楚它是怎么工作的就很难使用它.   代码如下: function dosomething(){ this.style.color="#fff"; }   上面这段代码中的this指向什么呢,运行dosomething()会输出什么呢? 在javascript中,this总是指向当前执行

浅谈java中异步多线程超时导致的服务异常_java

在项目中为了提高大并发量时的性能稳定性,经常会使用到线程池来做多线程异步操作,多线程有2种,一种是实现runnable接口,这种没有返回值,一种是实现Callable接口,这种有返回值. 当其中一个线程超时的时候,理论上应该不 影响其他线程的执行结果,但是在项目中出现的问题表明一个线程阻塞,其他线程返回的接口都为空.其实是个很简单的问题,但是由于第一次碰到,还是想了一些时间的.很简单,就是因为阻塞的那个线 程没有释放,并发量一大,线程池数量就满了,所以其他线程都处于等待状态. 附上一段自己写的调

浅谈JS中的!=、== 、!==、===的用法和区别_javascript技巧

var num = 1; var str = '1'; var test = 1; test == num //true 相同类型 相同值 test === num //true 相同类型 相同值 test !== num //false test与num类型相同,其值也相同, 非运算肯定是false num == str //true 把str转换为数字,检查其是否相等. num != str //false == 的 非运算 num === str //false 类型不同,直接返回fals

浅谈VC中的字节对齐

原文地址:浅谈VC中的字节对齐 前几天时,在公司和同事说到了字节对齐,一直对这个概念比较模糊,只是在<程序员面试宝典>中看到过简单的描述和一些面试题.后来在论坛中有看到有朋友在询问字节对齐的相关问题,自己也答不上来,觉得应该研究一下,所以就有了这一篇博文,是对学习的一个总结,也是对成长轨迹的一个记录.       字节对齐,又叫内存对齐,个人理解就是一种C++中的类型在内存中空间分配策略.每一种类型存储的起始地址,都要求是一个对齐模数(alignment modulus)的整数倍.问题来了,为

浅谈js中startsWith函数不能在任何浏览器兼容的问题

在做js测试的时候用到了startsWith函数,但是他并不是每个浏览器都有的,所以我们一般要重写一下这个函数,具体的用法可以稍微总结一下. 在有些浏览器中他是undefined 所以我们可以这样的处理一下 if (typeof String.prototype.startsWith != 'function') {    String.prototype.startsWith = function (prefix){    return this.slice(0, prefix.length)