acuciureanu/cpanel2shell-honeypot

GitHub: acuciureanu/cpanel2shell-honeypot

一款用 Rust 编写的高交互蜜罐,模拟存在 CVE-2026-41940 认证绕过漏洞的 cPanel/WHM 实例,通过伪装 Bash Shell 和虚拟文件系统捕获并记录攻击者的完整操作行为。

Stars: 0 | Forks: 0

# cPanel2Shell 蜜罐 ![抓取会话截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/ba3673ae66044051.png) 一个 Rust 蜜罐,用于模拟存在漏洞的 cPanel/WHM 实例,以应对 CVE-2026-41940(cPanel2Shell 身份验证绕过)。 ## 概述 该蜜罐模拟了 cPanel2Shell 漏洞扫描器所使用的响应序列: 1. 返回具有所需逗号分隔格式的 session cookie 2. 将经过身份验证的请求重定向到 session token 路径 3. 在 token 端点上提供 `msg_code:[expired_session]` 标记 通过初始探测的攻击者将被置入一个由内存中虚拟文件系统作为支撑的伪装 bash shell 中。 ## 功能特性 - 多端口监听器(默认为 2083/cPanel,2087/WHM) - 支持 SNI 感知的 TLS 以及按需生成证书 - 会话持久化及自动归档 - 载荷捕获(上传文件、POST 请求体、终端命令) - 结构化请求日志记录,支持 Basic auth 解码 ## 构建 ``` cargo build --release ``` ## 使用方法 ``` # 默认:端口 2087, 2083 及自动生成的 TLS ./target/release/cpanel2shell-honeypot # 自定义端口 ./target/release/cpanel2shell-honeypot -p 2083,2087 # 禁用 TLS ./target/release/cpanel2shell-honeypot --no-tls # 按主机名的 TLS 及 hot-reload ./target/release/cpanel2shell-honeypot --certs-config data/certs.toml # 所有选项 ./target/release/cpanel2shell-honeypot --help ``` ## TLS 配置 创建 `data/certs.toml`(参见 `data/certs.example.toml`): ``` default = "auto" [auto] cache_dir = "./captures/certs" key_type = "ecdsa-p256" validity_days = 365 issuer_cn = "Let's Encrypt Authority X3" [[host]] sni = "cpanel.example.com" cert = "/etc/honeypot/certs/cpanel.pem" key = "/etc/honeypot/certs/cpanel.key" ``` ## 架构 ``` src/ ├── main.rs # Entry point, runtime setup ├── cli.rs # Command-line arguments ├── config.rs # Application configuration ├── router.rs # HTTP route definitions ├── capture.rs # Request logging and payload storage ├── sessions/ # Session persistence ├── handlers/ # HTTP request handlers ├── shell/ # Bash interpreter and VFS │ ├── lexer.rs # Tokenizer │ ├── parser.rs # Recursive descent parser │ ├── exec.rs # AST executor │ ├── expand.rs # Variable expansion │ ├── builtins.rs # Shell builtins │ ├── commands.rs # External command stubs │ ├── vfs.rs # Virtual filesystem │ └── init.rs # Filesystem seed data └── tls/ # TLS certificate management ├── config.rs # Certificate configuration ├── generator.rs # Certificate generation ├── resolver.rs # SNI certificate resolution └── watcher.rs # Config file hot-reload ``` ## Shell 伪装 shell 实现了 bash 的一个子集: - 管道、重定向、heredoc - 变量展开(`$VAR`, `${VAR:-default}`) - 命令替换(`$(cmd)`, `` `cmd` ``) - 波浪号展开和通配符 - 在 VFS 上运行的约 80 个命令存根 会话状态(cwd、环境变量、VFS 写入、历史记录)通过 JSON 快照在重启后依然保留。 ## 捕获目录 所有攻击者活动均被写入 `./captures/` 目录: | 文件匹配模式 | 描述 | |-------------|-------------| | `upload_*.bin` | 上传的文件 | | `upload_meta_*.txt` | 上传元数据 | | `post_*.txt` | POST 请求体 | | `cmd_*.txt` | 终端命令 | | `sessions/*.json` | 会话快照 | | `certs/` | 缓存的 TLS 证书 | ## 路线图 - [x] 完整的 CVE-2026-41940 模拟流程 - [x] 递归的磁盘配额强制执行 - [x] 定期刷新的结构化事件日志 - [ ] TODO:完整的 CI/CD(Docker 镜像发布,二进制构建) - [ ] TODO:针对 `until`/`case` 关键字的增强型 shell 解析器 - [ ] TODO:按会话持久化的 shell 历史记录 ## 许可证 MIT
标签:CISA项目, cPanel, CVE-2026-41940, Cybersecurity, Fake Bash, Homebrew安装, Honeypot, Python安全, Rust, SNI, TLS, WHM, 会话持久化, 伪造终端, 凭证窃取, 可视化界面, 威胁情报, 开发者工具, 攻击分析, 漏洞模拟, 网络信息安全, 网络流量审计, 网络监测, 自动证书生成, 虚拟文件系统, 蜜罐, 认证绕过, 证书利用, 载荷捕获, 防御工具