首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx!更优雅的nignx内存马后门

nginx!更优雅的nignx内存马后门

作者头像
潇湘信安
发布2024-01-03 15:38:09
发布2024-01-03 15:38:09
8930
举报
文章被收录于专栏:潇湘信安潇湘信安

项目简介

@veo师傅研究的一个全链路内存马系列(ebpf内核马、nginx内存马、WebSocket内存马)。

本项目不含有完整的利用工具,仅提供无害化测试程序、防御加固方案,以及研究思路讨论。

技术原理

nginx内存马:nginx module 支持动态加载so,通过 __attribute ((constructor))的方式绕过nginx module version check,可以编译出适应所有nginx版本的module。使用header_filter可以取得命令执行的参数,通过body_filter可以返回命令执行后的结果

技术特点

代码语言:javascript
复制
无需临时编译(传统的 nignx so backdoor 需要临时编译)
兼容支持大部分 nignx 版本
无需额外组件支持

技术缺点

代码语言:javascript
复制
有so文件落地
需要 nignx -s reload 权限

使用方式

下载测试程序 releases,将下载的so放至目标服务器上,修改 nginx.conf 配置文件在第一行添加以下内容,path为路径,ngx_http_cre_module.so名称最好不修改。

代码语言:javascript
复制
load_module path/ngx_http_cre_module.so

然后重载nginx

代码语言:javascript
复制
nignx -s reload

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

研究中遇到的问题

1. 绕过nginx对于module的版本检测

代码语言:javascript
复制
通过 __attribute ((constructor))的方式绕过

2. 编写的module要兼容大部分版本

代码语言:javascript
复制
使用较早版本的函数,不使用高版本新增函数

防御加固方案

代码语言:javascript
复制
监测Nginx Module的加载,Nginx进程的行为
查杀落地文件
收敛 nignx -s reload 权限
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 潇湘信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档