nginx_shell:nginx内存马实现方式,兼容绝大部分nginx版本

admin 2024年6月18日16:08:45评论15 views字数 1231阅读4分6秒阅读模式
 

随着网络攻击手段的不断演进,内存马技术因其隐蔽性和高效性而备受关注。veo师傅针对nginx服务器,研究出一种全链路内存马技术,旨在提供一种无害化测试程序和防御加固方案,以促进网络安全技术的发展。

nginx_shell:nginx内存马实现方式,兼容绝大部分nginx版本

原理解析

nginx_shell:nginx内存马实现方式,兼容绝大部分nginx版本
nginx内存马技术的核心在于利用nginx模块的动态加载特性。通过特定的编译方式,可以绕过nginx对模块版本的检查,实现对所有nginx版本的兼容。该技术通过header_filter和body_filter获取和返回命令执行结果,无需临时编译,具有高度的兼容性和灵活性。
与传统的nginx so backdoor相比,该技术无需临时编译,减少了操作复杂性。同时,它兼容大部分nginx版本,无需额外组件支持,大大提升了其实用性。
在研究过程中,我们遇到了如何绕过nginx对模块版本的检测等技术难题。通过使用__attribute ((constructor))的方式,我们成功解决了这一问题。同时,为了确保模块的兼容性,我们采用了较早版本的函数,避免了使用高版本新增函数。

使用指南

为了正确使用nginx内存马技术,用户需要编译或者直接下载测试程序。

编译:

wget https://nginx.org/download/nginx-1.18.0.tar.gztar -zxvf nginx-1.18.0.tar.gzcd nginx-1.18.0git clone https://github.com/xxx.git 具体看文末./configure --with-compat --add-dynamic-module=./nginx_shell/make modules

编译后的so文件位于 nginx-1.18.0/objs/ngx_http_cre_module.so

也可以在release下载已经编译好的,然后将so文件放置在目标服务器上。通过修改nginx.conf配置文件,加载相应的模块。

load_module path/ngx_http_cre_module.so;

然后重载nginx,即可实现技术的应用。

nignx -s reload

测试POST HTTP header vtoken: whoami (测试程序只允许使用 whoami 命令)

nginx_shell:nginx内存马实现方式,兼容绝大部分nginx版本

如果无结果返回,可尝试增加header数量:

nginx_shell:nginx内存马实现方式,兼容绝大部分nginx版本

防御

尽管具有诸多优势,但nginx内存马技术也存在一些局限性。例如,它需要so文件落地,增加了被发现的风险。此外,执行该技术还需要具有nginx -s reload的权限,限制了其应用范围。

为了防范nginx内存马技术带来的安全风险,我们提出了一系列防御加固方案。包括监测Nginx Module的加载情况,监控Nginx进程的行为,查杀落地文件,以及收敛nginx -s reload的权限等措施。

下载

nginx内存马:https://github.com/veo/nginx_shell

原文始发于微信公众号(七夜安全博客):优雅的nginx内存马实现方式,无需临时编译,兼容绝大部分nginx版本

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月18日16:08:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   nginx_shell:nginx内存马实现方式,兼容绝大部分nginx版本http://cn-sec.com/archives/2860429.html

发表评论

匿名网友 填写信息