最后更新于2024年10月4日(星期五)20:01:30 GMT

Rapid7经常负责评估电子商务网站的安全性. 当直接处理客户财务时,这些交易的安全性是首要考虑的问题. 幸运的是,人们可以简单地购买或安装大量预先构建的电子商务平台. 从攻击者的角度来看, 攻击这些漏洞是很烦人的,因为维护电子商务平台的供应商经常对它们进行测试.

那么,如何利用一个已经经过彻底测试的站点呢? 有很多方法,但我们只讲两种.

一种利用途径是通过添加到电子商务框架中的不安全自定义代码. 经常, 该框架不会随组织的业务需求而预先安装,而是由您的团队创建自定义代码来执行它. 如果这些代码没有经过测试和安全,就有可能引入漏洞.

另一种方式是泄露机密或可猜测的凭证(是的,这种情况在2024年仍然会发生)。. 认为管理员密码不应该出现在某个地方, 由于数据泄露,凭证在地下出售, 或者只是一个公司名称的密码.

web应用程序安全扫描程序通常可以发现直接的漏洞, 如过时的软件很容易, 但其他类型往往需要更人性化的触摸.

下面是两个来自 快速渗透测试 团队.

网站1 -不安全的自定义代码:

我们正在测试的站点使用适度定制的电子商务平台,面向企业和消费者. 企业客户收到了特别优惠和大宗交易,而非企业客户则没有. 在这里,人们的第一反应是注册为一家虚假企业,以获得折扣产品. 简单,对? 但这是不可能的,因为企业客户在创建账户之前,需要经过网站销售团队的手动验证, 通过询问帐户ID和以前购买的发票ID来验证客户. 业务帐户能够将其帐户中的角色分配给其他用户, 因此,业务帐户下的销售用户可以由业务帐户中的管理用户配置. 理论上,普通消费者没有办法获得商业账户.

随着测试的继续, 在列举应用程序以查找其他功能时,这个功能一直留在我们的脑海中. 网站越复杂, 更多的功能有待发现, 漏洞就越有可能存在. 枚举是一个繁琐的过程,但它可以回答以下问题: JavaScript文件里有什么? 发票如何送达?? 开发人员是如何规划身份验证流程的? 网站框架是否有开发者没有想到的怪癖? 每一个因素都被考虑在内,因为如果不理解它,你就无法破解它. 即使你不知道代码,你至少也要猜出发生了什么.

最终,我们在网站的JavaScript中发现了一个API请求,该请求返回了您当前公司的帐户ID以及最近10个发票ID. 这没什么意思, 因为我们没有公司账户, 假设它不会返回任何东西. 在把它搁置了一段时间后,我们想,“我们还是运行它吧。... 为了好玩.”

我们发现可以创建请求的修改版本,该请求返回一个公司ID和10个发票ID. 作为单独的消费者帐户运行请求也返回相同的id, 这只能说明一件事:一个企业账户包含大量个人消费者作为用户..

找到这两个id后,我们按照普通业务用户使用这两个id创建业务帐户的流程进行操作. 结果是每个用户都拥有管理权限——总共11,000个用户. 这还允许访问用户地址、电话号码、电子邮件,甚至发票.

从这里开始,作为其他用户通过管理他们的设置来购买东西就相当简单了.

此漏洞被报告给客户端,并通过要求业务用户通过更严格的验证过程来减轻.

网站2 -凭据泄露:

This site was just a normal e-commerce site; you login 和 buy the product you need, 和 then logout. 就是这样. 它实际上没有实现任何定制代码, 因此,网站的大部分功能都局限于框架附带的标准功能. 没有太多的复杂性意味着没有太多的空间来处理漏洞.

尽管很少发现高严重性漏洞, 重要的是要在范围内尝试每一种剥削途径, 当然.

这包括开源情报(OSINT)。, 当涉及到web应用程序时,有很多东西需要寻找.

对于web应用程序,这通常归结为在Google和Wayback Machine上搜索url. 从黑客的角度来看, 有尽可能多的url来访问是一个好主意,只是为了增加攻击面. 如果一个人不知道一个网站的网址,他就无法真正入侵这个网站.

搜索的另一个目标是开发人员以前的项目. 他们曾经写过的任何代码都会成为靶子. 你经常可以在网上找到与你正在破解的东西相关的代码. 这就是我们的发现吗! 一个开发人员在GitHub的公共repo中发布测试代码,并包含了一个他们不应该有的文件夹. 该测试代码中包含从另一个代码存储库站点提取实际站点源代码的凭证.

在这个网站的源代码中大约有5个,000个礼品卡代码, 平均每个价值200美元.

这个漏洞被报告给客户端,并通过简单地删除GitHub存储库和更改泄露的凭据来缓解.

结论

这只是一个成功的电子商务网站渗透测试的两个例子. 大多数电子商务平台都经过了严格的安全问题测试,因为它们持有支付信息, 但是由于额外的复杂性,定制代码和/或配置通常会产生安全漏洞. 一个极其复杂的漏洞利用链有时并不是执行具有高财务影响的漏洞利用所必需的. 真正需要的只是对枚举的深刻理解和处理潜在安全漏洞的黑客思维.

了解更多关于Rapid7的矢量命令服务 ▶︎

验证你的外部攻击面暴露和测试你的防御持续红队操作.