漏洞详情
摘要 Cowrie蜜罐在模拟Shell模式下存在一个服务器端请求伪造漏洞,允许未经身份验证的攻击者滥用蜜罐作为针对任意第三方主机的HTTP拒绝服务攻击的放大载体。
详情 当Cowrie在模拟Shell模式(默认配置)下运行时,它会模拟常见的Linux命令。wget和curl命令的模拟实际上会向攻击者指定的目标执行真实的出站HTTP请求,此功能本意是允许Cowrie保存下载的文件以供后续检查。
通过SSH或Telnet连接到蜜罐的攻击者可以重复调用这些命令来瞄准受害者主机。由于之前没有速率限制机制,攻击者可以针对受害者生成无限的出站HTTP流量。这些请求源自蜜罐的IP地址,从而有效掩盖攻击者的身份,使蜜罐成为分布式拒绝服务攻击中不知情的参与者。
此漏洞已被观察到在野外被积极利用。
致谢 此漏洞由意大利国家研究委员会信息学与电信研究所的Abraham Gebrehiwot和Filippo Lauria调查。
修复 此问题已在2.9.0版本中通过PR #2800修复,该修复为wget和curl等命令模拟中的出站请求引入了速率限制机制。
概念验证
这是一个展示此漏洞放大潜力的基本概念验证。
设置:
- 受害者机器 (192.168.1.30):运行一个简单的HTTP服务器
- 攻击者机器 (192.168.1.20):发起攻击
- Cowrie蜜罐 (192.168.1.10):配置为模拟Shell模式,并启用SSH访问 (凭据: test:test)
在受害者机器上,启动HTTP服务器:
|
|
在攻击者机器上,执行:
|
|
此命令构建一个包含100个串联wget命令的PAYLOAD,然后通过SSH执行10次,从而从一个攻击脚本中向受害者发送1,000个HTTP请求。通过调整这些值可以任意增加放大因子,但受参数长度、缓冲区大小等技术限制。
结果: 受害者的HTTP服务器日志显示,1,000个请求全部来自蜜罐的IP地址 (192.168.1.10),在约5秒内收到(为简洁起见截断):
|
|
请注意,攻击者的IP (192.168.1.20) 从未出现在受害者日志中,这展示了蜜罐如何掩盖攻击者的身份。
影响
这是一个服务器端请求伪造漏洞,使得Cowrie蜜罐可被滥用为DDoS放大节点。
受影响对象: 任何运行2.9.0之前版本且处于模拟Shell模式(默认配置)的Cowrie组织。
后果:
- 第三方受害者从蜜罐的IP地址收到不需要的HTTP流量
- 攻击者可以隐藏在蜜罐IP之后
- 蜜罐运营商可能面临滥用投诉或其基础设施被列入黑名单
- 蜜罐主机的网络资源被消耗
参考
- GHSA-83jg-m2pm-4jxj
- cowrie/cowrie#2800
- https://github.com/cowrie/cowrie/releases/tag/v2.9.0
严重程度
高 (CVSS 8.3)
CVSS v3 基础指标
- 攻击向量:网络
- 攻击复杂度:低
- 所需权限:无
- 用户交互:无
- 影响范围:已更改
- 机密性影响:低
- 完整性影响:低
- 可用性影响:低
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:L
弱点 CWE-918 服务器端请求伪造
CVE ID 暂无已知CVE
GHSA ID GHSA-83jg-m2pm-4jxj