Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >WordPress 站点地址被恶意篡改的防护方案讨论

WordPress 站点地址被恶意篡改的防护方案讨论

原创
作者头像
凝神长老
修改于 2020-09-07 02:29:04
修改于 2020-09-07 02:29:04
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

WordPress 站点的安全性非常重要,稍有不慎就有可能受到恶意攻击。一种常见的手段是通过篡改站点的地址,于是用户访问网站时将会被重新定向到恶意网站。

恶意网站示意
恶意网站示意

一般情况下,有 2 种手段可以达到这个目的,下面就让长老带领大家一步步去看整个攻击手段是如何实施的,并找到每个环节的安全防护措施,大家可以根据自己的情况使用其中的某个或多个防护措施。也欢迎大家留言分享各自的防护心得。

第一种攻击手段是在文件中写入恶意代码。

该恶意代码的表现形式为在网页加载时执行一段 JS 代码, 跳转到恶意网址。

尽管我们可以保证自己购买的插件和主题都是正版软件,我们也无法保证插件和主题没有任何安全漏洞。一部分国产主题为了激活的校验以及防止盗版,往往会故意留下一个口子,用来往数据库中写入授权信息,再加上 WordPress 的插件和主题文件本身就被设计成了可以被修改的,所以这样的口子就会成为一个危险的入口。

最根本的方法当然是及时修补这个漏洞,将插件和主题更新到最新版。但是在此之前,我们只能通过一些并不是“治本”的方法来阻止这件事情发生。

WordFence找到的恶意代码
WordFence找到的恶意代码

WordFence 之类的安全防护软件也可以找到恶意代码的源头,但是很多恶意代码并不是很显而易见的,它会多次中转,使得前面的代码看上去都是非常正常的内容,这样就算删掉了最后的危险代码,由于前面的代码还在,所以过段时间就会死灰复燃。

如图是在一个主题文件中插入恶意代码的示例,恶意代码十分隐晦,并不能直接通过搜索 <script> 关键字查找,而且要调用好几层。

主题文件中插入的恶意代码
主题文件中插入的恶意代码

注意这段代码并不是通过 Unix Shell 执行的,而是被 PHP 执行的,所以,就算我们没有给这个文件执行的权限,也依然无法阻止这段恶意代码被执行。因此,「权限不要给太高」这个教训在这儿并不好使,这不是权限上能解决的。

这段代码通过 POST 请求去访问了一个被 BASE64 加密的网址,然后将请求得到的内容写到了一个名为 _a 的文件中,并将 _a 包含进了主题文件中,因此,只要主题被加载了,_a 也被加载了。

恶意代码获取的恶意代码
恶意代码获取的恶意代码

获取到的这段代码被写到了 <?php 后面,因此仍然会被作为 PHP 代码执行。_a 是一段 Unix Shell 命令,通过 PHP 的 shell_exec() 执行了这段命令。命令通过 wget 请求了一个脚本,并执行了这个脚本。

这个危险的脚本做的事情是在 WordPress 的核心的几个 index.php 的文件开始处,加上一段 <script src="bad_zzw.js"></script> 的文件,这样当 WordPress 被加载时,就会执行这段 JS 代码,去请求了 src="bad_zzw.js" 中的 JS,而 bad_zzw.js 的内容只有 2 行,包括了一句 windows.location,即将当前页面重定向到一个恶意的链接页面。

到这里,我们得到了第一个防护措施,那就是 PHP 官方推荐的:禁用 shell_exec()

可是,万一本机别的服务需要用到 shell_exec() 呢,这个虽然不安全,但是我却不得不使用它。在没有可能改变其他业务的情况下,这个函数不能被禁用。

那我们就要尝试将主题文件和 WordPress 核心的文件设置为只读了。

一般而言,文件的最小权限会被设置为 644640,即自己可读写、组内其他用户只读、组外用户只读(或者组外用户无权限),不会给执行权限 x;而目录的最小权限会被设置为 755 或者 750,对于目录而言,x 不再表示执行,而是表示是否可以进入该目录访问其中的内容。

于是我们有了第二个防护措施,那就是将主题、插件文件夹递归地设置为只读:首先 chown -R www:www . 确保整个目录都在 www 用户组内,然后 chmod 0640 -R . 递归地将目录下的文件全部修改为 640 权限,最后 find -type d -exec chmod 0750 {} \; . 递归地找到目录下所有的类型为目录的,并调用 exec 将权限修改为 750

对于 WordPress,只读的权限不会带来任何问题,www 用户组也足以完成全部的操作。只是需要注意的是,这样将不再支持有文件读写操作的行为,例如插件的更新、例如某些插件需要在目录中生成缓存或配置文件等。

第二种攻击手段是修改数据库的字段。

我们这里不讨论数据库密码泄露、数据库管理面板漏洞这样的问题,只考虑数据库用户和密码足够复杂,而攻击者利用 WordPress 的「合法的」数据库访问操作来修改了数据库的字段。由于所有的操作都是 WordPress 的「合法的」数据库访问,所以我们没有办法判断这是恶意攻击,还是正常的数据库访问(例如更新设置、读写文章)。

恶意攻击通常会篡改 wp_options 中的 siteurl 值和 home 值,使得用户访问站点时,站点 URL 部分被替换成恶意网站,实现跳转,并且由于 /wp-admin 的访问也会校验站点地址,所以我们甚至无法登录后台去修改回来。

网上有很多这样的案例,并且也给出了解决方案。

网上参见的解决方案为:首先想办法进入数据库,不管是 phpMyAdmin 或者 Unix Shell 登录。修改 WordPress 数据库中 wp_options 表中的 siteurlhome,保存。这时候就可以登录后台了,只需要把确实的设置重新修改。

还可以修改 wp-config.php,通过 define('WP_HOME','https://www.jxtxzzw.com'); define('WP_SITEURL','https://www.jxtxzzw.com'); 来指定自己的站点地址。

这里长老再说一种方法:修改数据表,增加触发器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE DEFINER=`wp_user`@`localhost` TRIGGER `trg_update_wp_options_forbidden`
BEFORE UPDATE ON `wp_options`
FOR EACH ROW
IF (NEW.option_id IN (1,2,3,4)) THEN
	SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot update locked record';
END IF;

这个触发器是在修改 wp_options 之前被触发,如果新修改的值的 ID 是 1、2、3、4,那么就令 SQL 执行超时,并输出信息「Cannot update locked record」。

注意:① 添加触发器需要较高级别的权限,你可以根据需要修改为 root。② 上面的 (1,2,3,4) 在我的数据表中对应 siteurlhomeblognameblogdescription,你可以根据自己的情况修改这些 ID,也可以直接指定 NEW.option_name。③ 你可以增加更多锁定的字段,例如 userscanregisterWPLANGdate_format 等等。④ 添加触发器前请先将内容修改为期望的值。⑤ 如果再次修改,需要先解除触发器。

保存后,让我们修改这个字段,发现已经不能修改了。

但这不会影响后台的设置,当我们同时修改了后台的「站点标题」和「新用户默认角色」后点击保存,我们发现没有被锁定的记录仍然可以正常修改,而被锁定的记录仍保持了锁定的内容。

如果你的兴致到这里就结束了,那么,已经做好了防护,可以去玩啦。站点地址已经不能被篡改。

无法篡改站点地址
无法篡改站点地址

如果你还有兴趣,那么可以打开 SQL 的 general_log(这会保存下所有的 SQL 操作,文件大小增速很恐怖,记得及时关掉),去挖掘到底是什么时候、被谁、执行了怎么样的一条指令,再配合其他的手段,一步一步定位真凶,并进一步地去将它绳之以法。

关键词:WordPress,篡改,挂马,恶意,攻击,注入,跳转,重定向,网址,siteurl,home,url,hacked,jump,redirect

摘要:WordPress 站点稍有不慎就有可能受到恶意攻击。一种常见的手段是通过篡改站点的地址,用户访问网站时将会被重新定向到恶意网站。长老将分析两种常见的攻击手段:修改文件和修改数据库,并分享一些安全防护的小技巧。

原文链接:https://www.jxtxzzw.com/archives/5572

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WordPress 站点地址被恶意篡改的防护方案讨论
WordPress 站点的安全性非常重要,稍有不慎就有可能受到恶意攻击。一种常见的手段是通过篡改站点的地址,于是用户访问网站时将会被重新定向到恶意网站。
凝神长老
2020/09/08
9800
WordPress 站点地址被恶意篡改的防护方案讨论
WordPress清理.ico木马详细教程
通过Google搜索网站访问的时候,会跳转到其他网站;直接通过网址访问网站的时候,不会跳转,隐蔽性极强 网站根目录的index.php和wp-config.php文件被插入 @include 代码加载恶意文件 网站很多目录会多出一些随机命名的php文件以及 .ico 文件 网站主题或插件会被插入恶意代码,并且带有特征码 Array();global 倡萌在大概2年前就遇到过这类木马,如果想彻底清理是非常麻烦的,但凡一个恶意的文件未清理干净,都可能触发再次感染,因为攻击者会不定时访问他投放的恶意文件(通过远程直接访问或服务器定时任务触发),如果这个恶意文件存在,就会再次执行。
回忆大大
2021/08/09
1.1K0
WordPress清理.ico木马详细教程
张戈博客惊现WordPress恶意代码,各位WP博主要注意下了!
不经意看到了哼哼猪的 《博主们注意了!赶快检查下你的 WordPress 里面是否包含恶意代码》一文,就好奇的检查了一下,结果。。。尼玛居然还真中招了!难怪老是觉得 WP 的后台卡卡的,一点都不流畅!而且后台提交文章经常会出现 502 或 503 的无法打开页面!估计就是这玩意在作祟! 下面内容摘自原文: 代码太长放到下面,先说说此段代码的来源和危害: 此段代码来源一般是在 WordPress 主题里面自带,可能免费主题、破解主题或者收费主题,大家也不能完全抱怨主题作者,因为代码可能也不是他主动添加的,可能
张戈
2018/03/23
1.4K0
WordPress再悲剧:WPcache-Blogger感染事件影响五万WordPress网站
近期WordPress安全事件最近频发,上次出了一个恶意软件SoakSoak,现在又来了一个与其有关的恶意软件感染事件——WPcache-Blogger。这场事件由一个被恶意软件控制的网站wpcache-blogger.com命名,虽然同样由于RevSlider漏洞引起,但是攻击手法迥异。在过去几天里,已有5万Wordpress网站受到影响。 FreeBuf小科普 RevSlider是一款WordPress幻灯片插件,攻击者可能利用了该插件的任意文件下载漏洞获取了大量的WordPress的wp-conf
FB客服
2018/02/05
8790
WordPress再悲剧:WPcache-Blogger感染事件影响五万WordPress网站
WordPress 2.2 中三个开发者喜欢的特性
在新发布的 WordPress 2.2 中,内置 Widget 支持可能吸引了大部分人的注意。这里所讲的三点对 WordPress 插件和主题开发者也是非常有用的。
Denis
2023/04/13
5210
WordPress 恶意代码的分析和排查方法
自【网站安全的「灯下黑」隐患:账号安全】一文发表后,明月收到了很多站长们有关 WordPress 站点安全的问题咨询,明月总结分析了一下几乎 90%以上都是“恶意代码”造成的,而给站点带来恶意代码的插件就占了 80%以上(有官网插件、网上流传的插件等等),其他的就是主题了(以破解版、盗版主题为主),其实无论是“恶意代码”还是“后门木马”都是以代码的形式在服务器上传播破坏的,今天明月就跟大家讲讲如何通过对代码的分析来提前找出这些“肮脏”的东西。
明月登楼
2018/08/10
1.4K0
WordPress 恶意代码的分析和排查方法
WordPress 站点如何选择插件才是安全的?
在『又一次真实案例证明了滥用 WordPress 插件的危害』文章发布后,不少站长都很好奇这篇文章说的是哪个插件?其实很多时候说 WordPress 插件的安全性的时候并不会特定到某个插件,以前明月认为哪个插件不安全就卸载删除即可,其实这个观点并不对!因为 WordPress 插件带来的安全问题是多方面的,涉及的因素有很多,今天明月就给大家说道说道这个事儿,希望可以让站长们更好的选择和使用 WordPress 插件,当然也包括一些主题。
明月登楼的博客
2019/05/15
8510
WordPress 站点如何选择插件才是安全的?
保持 WordPress 安全性有效措施汇总
有关 WordPress 安全性的文章其实已经有很多了,但是明月感觉随着技术的迭代发展, WordPress 安全也在不断的面临考验,好在 WordPress 官方一直保持着及时有效的漏洞修复更新,这是众多网站平台系统很少能保持的,也是 WordPress 至今还长盛不衰的原因之一。
明月登楼的博客
2019/05/15
4830
保持 WordPress 安全性有效措施汇总
伪造的 jQuery Migrate 插件生成恶意文件感染 WordPress 网站
安全研究人员 Denis Sinegubko 和 Adrian Stoian 近日发现,假冒的 jQuery Migrate 插件通过包含的混淆代码来加载恶意软件从而注入了数十家网站。
Denis
2023/04/13
6670
伪造的 jQuery Migrate 插件生成恶意文件感染  WordPress 网站
WordPress全站Https配置
不同类似的WEB服务,配置方式不一,如使用BT 、WDCP等环境部署可直接在面板上操作。
参谋带个长
2022/05/08
1.1K0
从瑞士军刀到变形金刚--XSS攻击面拓展
前段时间我阅读了Sucuri Security的brutelogic的一篇博客以及ppt,对xss有了一些新的理解。
LoRexxar
2023/02/21
5810
从瑞士军刀到变形金刚--XSS攻击面拓展
wordpress网站迁移问题错误原因及解决方案
WordPress网站迁移可能会遇到多种问题,这些问题通常与文件传输、数据库配置、URL重定向和环境差异有关。以下是一些常见的迁移问题及其解决方案:
WordPress爱好者
2024/10/09
4230
每天一个WordPress文件:wp-config.php
wp-config.php 是 WordPress 用来保存配置信息的地方,包含网站的基础配置详细信息(如数据库连接信息),它是 WordPress 最重要的文件之一,该文件位于 WordPress 文件目录的根目录中。
Denis
2023/04/15
8310
如何解决WordPress更改新域名后无法访问的调试
如何解决WordPress更改新域名后的安装调试,很多人在做了网站的搬家和网站的从新更换空间域名搬家之后,往往出现网站打不开的情况,这个问题其实并不难,但是很多新手站长因为不知道,导致在处理这类问题上花费了大量的时间。今天给大家分享一下如何使得更换域名后的网站如何正常运行(来源:wordpress建站吧)
wordpress建站吧
2019/05/28
4.3K0
如何找出被黑客攻击后篡改的WordPress 文件?
如果你的WordPress 站点不幸被某个黑客攻击,那么你有必要找出黑客是否篡改过WordPress 的文件以防止其留下某些后门。本文为你介绍了一些快速查找被黑客攻击后篡改的WordPress 文件的
Jeff
2018/01/19
2.8K0
如何找出被黑客攻击后篡改的WordPress 文件?
WordPress网站漏洞检测及漏洞修复解决方案
2019年正月刚开始,WordPress最新版本存在远程代码注入获取SHELL漏洞,该网站漏洞影响的版本是wordpress5.0.0,漏洞的产生是因为image模块导致的,因为代码里可以进行获取目录权限,以及文件包含功能,导致远程代码注入成功。
技术分享达人
2019/02/24
2.9K0
针对WordPress的攻击调查
WordPress是一个著名的开源内容管理系统(CMS),用于创建网站和个人博客,据估计,目前35%的网站都在使用CMS。
FB客服
2020/02/12
2.2K0
针对WordPress的攻击调查
WordPress架构简单剖析
前言 最近在搭建自己的博客站点时, 选择了网站使用较多的WordPress, 随着慢慢的使用, 它灵活的插件和主题令我折服. 基本上任何想要实现的功能, 都可以在上面通过插件的形式进行添加. 无论是在
烟草的香味
2021/08/20
1.6K0
如何解决WordPress搬家更改新域名后网站无法正常运行的问题?
修改functions.php functions.php指的是位于当前博客主题目录内,可以自定义一些主题函数。
wordpress建站吧
2019/08/21
1.7K0
如何解决WordPress搬家更改新域名后网站无法正常运行的问题?
防御abdullkarem Wordpress PHP Scanner及类似攻击的技术措施
abdullkarem Wordpress PHP Scanner是一种扫描工具,通过检测WordPress网站中的PHP代码漏洞来发起攻击。
公众号图幻未来
2024/01/05
2030
防御abdullkarem Wordpress PHP Scanner及类似攻击的技术措施
推荐阅读
相关推荐
WordPress 站点地址被恶意篡改的防护方案讨论
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验