phpcms禁止提交信息到官网

phpcmsv9在登录后会向官网提交系统信息和管理员详情,包括版本、服务器、浏览器等。尽管可以通过修改模板禁除此行为,但代码中内置的JavaScript仍会执行更新检查并传递数据。要阻止这一行为,需要移除特定的JavaScript代码段,同时保持页面正常显示。
摘要由CSDN通过智能技术生成

phpcms v9后台登陆时,会向官网 http://update.v9.phpcms.cn 联网,名这检查更新,实际同时也收集网站以及管理员的用户信息还有登陆者的设备等信息。以前经常更新,可以说有必要,但phpcmsv9已经很多年不更新了。只剩下收集信息的功能了。

开始以为去掉后台模板中的相关网址就行了。结果登陆时还是发现会向官网提交信息。于是追了一下。

在登陆成功后,会首先显示一个默认页。显示管理员名字,服务器信息等。它是调用modules\admin\index.php中的public_main()方法加载的。

在这个方法中的最后几行代码如下:

$designer = '张二强';
ob_start();
include $this->admin_tpl('main');
$data = ob_get_contents();
ob_end_clean(); 
system_information($data);

意思是,将内容缓存,然后给$data,再调用system_information处理。

system_information()函数,显然是一个已经加载的类库中的函数,查询后发现它位于modules\admin\functions\admin.func.php文件中。代码如下:

function system_information($data) {
    $update = pc_base::load_sys_class('update');
    $notice_url = $update->notice(); 
    $string = base64_decode('PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoIiNtYWluX2ZyYW1laWQiKS5yZW1vdmVDbGFzcygiZGlzcGxheSIpOzwvc2NyaXB0PjxkaXYgaWQ9InBocGNtc19ub3RpY2UiPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ik5PVElDRV9VUkwiPjwvc2NyaXB0Pg==');
    echo $data.str_replace('NOTICE_URL',$notice_url,$string); 
}

这里有一个解码来获得字串,我们先解码看看这些字符串是什么。

加个 echo $string 看看。结果浏览器中什么也没有。嗯?明明解码成字符串,为什么什么也没有呢?其实是有的。它是一段‘javascript’字串,所以你在浏览器中看不到。

解码后的内容如下:

<script type="text/javascript">$("#main_frameid").removeClass("display");</script>
<div id="phpcms_notice"></div>
<script type="text/javascript" src="NOTICE_URL"></script>

到这里还看不出什么。然后,它将src=”NOTICE_URL”中的NOTICE_URL替换成noticeurl。然后加到已经生成的noticeurl。然后加到已经生成的data数据后面。也就是向$data中加了一段代码。

加的网址从何而来,加的又是什么网址呢?

函数先加载了update类。然后调用了该类的notice()方法。我们跟进类文件libs\classes\update.class.php看看。

function notice() {
        return $this->url('notice');
    }

function url($action = 'check') {
        $modules = '';
        $site = getcache('sitelist','commons');
        $sitename = $site['1']['name'];
        $siturl = $site['1']['domain'];
        foreach ($site as $list) $sitelist .= $list['domain'].',';
        $pars = array(
            'action'=>$action,
            'phpcms_username'=>'',
            'sitename'=>$sitename,
            'siteurl'=>$siturl,
            'charset'=>CHARSET,
            'version'=>PC_VERSION,
            'release'=>PC_RELEASE,
            'os'=>PHP_OS,
            'php'=>phpversion(),
            'mysql'=>$this->db->version(),
            'browser'=>urlencode($_SERVER['HTTP_USER_AGENT']),
            'username'=>urlencode(param::get_cookie('admin_username')),
            'email'=> urlencode(param::get_cookie('admin_email')),
            'modules'=>ROUTE_M,
            'sitelist'=>urlencode($sitelist),
            'uuid'=>urlencode($this->uuid),
            );
        $data = http_build_query($pars);
        $verify = md5($this->uuid);       
        if($s = $this->module()) {
            $p = '&p='.$s;
        }
        return $this->update_url.'?'.$data.'&verify='.$verify.$p;
    }

这里收集了网站的多种信息,然后生成一个网址,加到js中,就会自动向该网址访问,并将信息提交给官网。

最后加到页面后面的代码是这样的(解码后):

<script type="text/javascript" src="http://update.v9.phpcms.cn/index.php?action=notice&phpcms_username=&sitename=默认站点&siteurl=http://localhost/phpcms/&charset=utf-8&version=V9.6.3&release=20170515&os=WINNT&php=7.0.12&mysql=5.5.53&browser=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36&username=phpcms&email=275423729@qq.com&modules=admin&sitelist=http://localhost/phpcms/,&uuid=0b5aacb6-0d3c-13e2-a47b-d9cb3a26d359&verify=83f1ab93b35fb87202e613e4decbecc2"></script>

这就是向官网提交我们网址,管理员名字浏览器等信息的代码啊。难怪此前清除了模板中update.v9.phpcms.cn网址仍然提交,原来它将网址加密了,然后还加了你的相关信息。

如何干掉它?

一是换一个网址,将http://update.v9.phpcms.cn/index.php换成你的。不让它向官网提交,但访问你的网址你并不需要。最好的办法是去掉访问。

但不要这段代码是不行的,会无法显示。因为$(“#main_frameid”).removeClass(“display”); 是让加载的页面显示,也就是说默认是不显示的。没有js,浏览器不显示内容。我们要干掉的其实是这个‘’

去掉它,将剩下的:

<script type="text/javascript">$("#main_frameid").removeClass("display");</script><div id="phpcms_notice"></div>

base64_encode。得到:

‘PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoIiNtYWluX2ZyYW1laWQiKS5yZW1vdmVDbGFzcygiZGlzcGxheSIpOzwvc2NyaXB0PiA8ZGl2IGlkPSJwaHBjbXNfbm90aWNlIj48L2Rpdj4=’

替换原来的,就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值