php聊天室禁止提交,phpcms v9禁止提交信息到官网方法详解

这篇博客详细分析了PHPcmsV9后台登录时的数据提交行为,揭示了系统在用户登录后如何通过JavaScript向官网发送包括网站信息、管理员详情在内的数据。博主追踪代码发现,信息提交是通过解码后的JavaScript代码实现,即使删除模板中的更新网址,系统仍能加密提交。为防止信息泄露,建议删除特定代码段以阻止不必要的数据传输。
摘要由CSDN通过智能技术生成

phpcmsv9后台登陆时,会向官网http://update.v9.phpcms.cn联网,说是检查更新,实际同时也收集网站以及管理员的用户信息还有登陆者的设备等信息。开始以为去掉后台模板中的相关网址就行了。结果登陆时还是发现会向官网提交信息。于是追了一下。在登陆成功后,会首先显示一个默认页。显示管理员名字,服务器信息等。它是调用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'字串,所以你在浏览器中看不到。

解码后的内容如下:

到这里还看不出什么。然后,它将src=”NOTICE_URL”中的NOTICE_URL替换成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中,就会自动向该网址访问,并将信息提交给官网。

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

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

如何删除它?

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

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

去掉它,将剩下的:

base64_encode。得到

PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPiQoIiNtYWluX2ZyYW1laWQiKS5yZW1vdmVDbGFzcygiZGlzcGxheSIpOzwvc2NyaXB0PiA8ZGl2IGlkPSJwaHBjbXNfbm90aWNlIj48L2Rpdj4=

替换原来的,就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值