如安在SAML中查找bug——第二局部 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

如安在SAML中查找bug——第二局部

申博_新闻事件 申博 73次浏览 未收录 0个评论

媒介

本文是关于如安在平安断言符号言语(Security Assertion Markup Language,SAML)中查找Bug的系列文章中的第二篇。本文将研讨SAML破绽,和怎样运用BurpSuite插件SAML Raider测试这些破绽。若是您关于SAML和XML署名还没有一个大致的学问头绪,那末请检察我们引见基础学问的第I局部。

SAML RAIDER

本文的第一个学问点是进修SAML Raider。SAML Raider是一款具有壮大功用的SAML测试东西。SAML Raider的建立者Roland Bischofberger和Emanuel Duss将该插件形貌为用于测试SAML基础架构的Burp Suite扩大。它包罗两个中心功用:操纵SAML音讯和X.509证书治理体系的才能。
在本文中,我们将运用SAML Raider演示怎样测试每一个破绽。我们将从装置最先。
若是您已熟习怎样运用SAML Raider,请直接跳到XML署名包装。

装置SAML RAIDER

翻开Burp Suite并单击Extender选项卡
单击BApp Store子选项卡
向下转动并单击扩大列表中的SAML Raider
单击“装置”按钮

如安在SAML中查找bug——第二局部
装置完成后,我们将看到一个名为“SAML Raider Certificates”的新选项卡。

如安在SAML中查找bug——第二局部
上面提到的选项卡是SAML Raider实行证书治理的处所,我们下一步将对此举行议论。

X.509证书治理器

内置在SAML Raider中的证书治理器异常好用。它许可我们实行以下操纵:
导入和导出X.509证书
显现X.509证书信息
导入和导出私钥
克隆X.509证书和证书链
编纂和自签订现有的X.509证书
我们花点时候测试一下这些功用。
起首,我们须要X.509证书。我们能够运用OpenSSL疾速地天生一个。

openssl req -x509 -newkey rsa:4096 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -nodes
═══════════════════════════════════════════════════════════════════════════════════════════

Generating a 4096 bit RSA private key
...........++
...........................................................................................................................++
writing new private key to '/tmp/key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

如今我们有了证书,让我们依照下面形貌的步调将其导入SAML Raider。

如安在SAML中查找bug——第二局部
完成后,我们将在顶部窗格中看到导入的证书,在底部窗格中看到有关证书的一切相干信息。
导出就像导入一样简朴,以是我们不会花时候举行演示。让我们来看看克隆和编纂。克隆证书异常简朴。我们须要做的就是凸起显现要克隆的证书,然后单击上面窗格左边的“Clone(克隆)”按钮。完成后,我们同时具有导入的证书和原始版本的险些完全雷同的副本。原始和克隆之间只要两个分歧点——模块和署名。我们能够经由历程起首导出克隆的证书,然后运转下面的diff敕令来举行考证。

diff <(openssl x509 -in /tmp/cloned-cert.pem -text -noout) <(openssl x509 -in /tmp/cert.pem -text -noout)

除克隆功用,我们能够依据本身的喜欢变动证书的字段,然后单击“Save and Self-Sign”。自署名操纵的功用相似于“克隆”(Clone),但须要注重的是,新证书包罗了之前变动的字段。

如安在SAML中查找bug——第二局部
在流程完成后,我们具有一个有用期为1000年的证书。在实行下面议论的一些进击时,治理证书的才能最先发挥作用。

SAML音讯编纂器

除证书治理器以外,SAML Raider还供应了动态操纵SAML音讯的才能。在本节中,我们将研讨截取要求,和截取要求后该怎样处置惩罚它们。
SAML Raider的建立者绑缚了一个轻易的脚正本对扩大举行一些轻量级测试。我们将运用该剧本天生SAML相应,轻易我们能够在burp中搜检和操纵。
起首,我们须要剧本。纵然我们已经由历程burp装置了SAML Raider,我们须要的剧本也在repo中。当我们的测试完成时,克隆repo并将其悉数删除是最简朴的。

git clone https://github.com/SAMLRaider/SAMLRaider.git

克隆了repo后,我们能够转到剧本目次。

cd SAMLRaider/scripts/samltest

在那以后,跟着burp运转和阻拦,我们能够运转samltest。

./samltest

若是burp处于运转状况并举行阻拦,我们将在burp中看到守候我们的SAML相应。

如安在SAML中查找bug——第二局部
截获后,我们能够在SAML Raider选项卡中检察SAML相应。

如安在SAML中查找bug——第二局部
我们试着改动一些数据。我们将拉到到SAML相应的底部,找到AttributeValue标签中包罗的bowser@saml.lan值。

如安在SAML中查找bug——第二局部
我们将bowser改成mario

如安在SAML中查找bug——第二局部
改动完成后,我们将在相应上举行转发。一旦它被转发,我们会看到它返回给我们的侦听器-先前启动的samltest剧本。剧本打印出XML,我们能够看到Mario@saml.lan。

...
<AttributeStatement>
  <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn">
    <AttributeValue>bowser@saml.lan</AttributeValue>
  </Attribute>
  <Attribute Name="http://schemas.xmlsoap.org/claims/Group">
    <AttributeValue>Domänen-Benutzer</AttributeValue>
  </Attribute>
  <Attribute Name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
    <AttributeValue>mario@saml.lan</AttributeValue>
  </Attribute>
</AttributeStatement>
...

编纂SAML音讯时,Ctrl+Z不克不及取消毛病。有一个“Reset Message”按钮,用于将SAML音讯规复到其原始值。

SAML中继器

末了一点值得注重的是,SAML Raider在Burp的Repeater选项卡中增加了一个选项卡。在Repeater选项卡中操纵SAML音讯关于赓续修正统一音讯异常有用。

如安在SAML中查找bug——第二局部

XML署名包装

我们将议论的第一个进击是XML署名包装(XSW)。这里有一份白皮书概述了进击的详细情况。偶合的是,这篇论文也体系地引见了SAML Raider插件。若是你想深切相识更多信息,白皮书置信是你的第一挑选。
XSW基础前提是,包罗XML署名的XML文档能够分两步处置惩罚:一步用于数字署名的考证,另外一步用于运用XML数据的现实运用程序。斟酌以下两个步调和用于猎取单个XML元素的要领:
XML署名考证:
运用程序定位<ds:Signature><ds:Reference>元素。
运用程序运用<ds:Reference>的URL属性来肯定对哪一个XML元素举行了署名。
运用程序考证署名的xml元素。
考证后,统一运用程序实验运用署名数据作为其一般操纵的一局部。
运用程序的XML解析器运用自上而下的基于树的导航来定位其所需的XML元素

一般,这两种要领都应该定位到雷同的XML元素,但在署名包装的情况下,进击者会将署名的内容移动到分歧的地位,并将其替换为进击者掌握的XML元素,该元素不会使XML文档无效。我们愿望XML解析器找到进击者掌握的元素,而不是经由考证的元素。
如今我们已相识了XSW的基础概念,让我们看看实行XSW的分歧要领。下面引见的每一个XML署名包装进击都与打包到SAML Raider中的8个进击直接对应。相识了这一点,我们将相识进击是怎样事情的,和怎样运用SAML Raider实行进击。

扼要回忆

在最先之前,让我们回忆一下一般的SAML相应的简化构造。这里的症结组件是相应及其ID、署名及其援用的URL属性和断言的主题。

<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response ... ID="_df55c0bb940c687810b436395cf81760bb2e6a92f2" ...>
  <saml:Issuer>...</saml:Issuer>
  <ds:Signature ...>
    <ds:SignedInfo>
      <ds:CanonicalizationMethod .../>
      <ds:SignatureMethod .../>
      <ds:Reference URI="#_df55c0bb940c687810b436395cf81760bb2e6a92f2">...</ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>...</ds:SignatureValue>
    <ds:KeyInfo>...</ds:KeyInfo>
  </ds:Signature>
  <samlp:Status>...</samlp:Status>
  <saml:Assertion ...>
    <saml:Issuer>...</saml:Issuer>
    <ds:Signature ... >...</ds:Signature>
    <saml:Subject>
      <saml:NameID ...>...</saml:NameID>
      <saml:SubjectConfirmation ...>
        <saml:SubjectConfirmationData .../>
      </saml:SubjectConfirmation>
    </saml:Subject>
    <saml:Conditions ...>...</saml:Conditions>
    <saml:AuthnStatement ...>...</saml:AuthnStatement>
    <saml:AttributeStatement>...</saml:AttributeStatement>
  </saml:Assertion>
</samlp:Response>

追念一下,当标识供应者(IDP)返回效劳供应者(SP)时,我们会收到SAML相应(下面流程图中的步调6)。

xmldecoder反序列化的补丁与绕过

从cve-2017-3506谈起 官方说这洞主要是web service模块的问题,那我们来动态调试一下 exp





/bin/bash


-c

如安在SAML中查找bug——第二局部

XML署名包装进击-1

XSW-1处置惩罚SAML相应。它复制SAML相应和断言,然后将原始署名作为复制的相应的子元素插进去到XML中。假定XML解析器在署名考证后在文档顶部找到并运用复制的相应,而不是原始的署名相应.

如安在SAML中查找bug——第二局部

如安在SAML中查找bug——第二局部

XML署名包装进击-2

与XSW-1相似,XSW-2处置惩罚SAML相应。XSW-1和XSW-2是独一处置惩罚相应的两种进击方式。-1和-2之间的症结区分在于,XSW-2运用的署名范例是星散的署名,个中XSW-1运用封装署名。歹意相应的地位连结稳定。

如安在SAML中查找bug——第二局部

XML署名包装进击-3

XSW-3是包装断言元素的XSW的第一个示例。SAML Raider将复制的Assertion作为根Response元素的第一个子元素插进去。原始断言是复制的断言的兄弟节点。

如安在SAML中查找bug——第二局部

XML署名包装进击-4

XSW-4相似于-3,除在这类情况下,原始断言成为复制的断言的子节点。

如安在SAML中查找bug——第二局部

XML署名包装进击-5

XSW-5是断言包装的第一个实例,我们看到署名和原始断言不在三种规范设置装备摆设中的任何一个(封装/星散)。在这类情况下,复制的断言封装署名。

如安在SAML中查找bug——第二局部

XML署名包装进击-6

XSW-6将其复制的断言插进去到与-4和-5雷同的地位。这里风趣的一点是,复制的断言封装了署名,而署名又封装了原始断言。

如安在SAML中查找bug——第二局部

XML署名包装进击-7

XSW-7插进去一个扩大元素,并将复制的断言作为子元素增加。扩大是具有限定性较小的架构界说的有用XML元素。本白皮书的作者针对OpenSAML库开发了此要领。OOpenSAML运用形式考证来正确地将署名考证时期运用的ID与处置惩罚的断言的ID举行对照。作者发明,在复制的断言与原始断言的ID雷同的情况下,若是复制的断言是具有较少限定的形式界说的元素的子元素,则能够绕过此特定对策。

如安在SAML中查找bug——第二局部

XML署名包装进击#8

XSW-8运用另外一个限定性较小的XML元夙来实行XSW#7中运用的进击形式的变体。这一次,原始断言是限定较少的元素的子元素,而不是复制的断言。

如安在SAML中查找bug——第二局部

XML署名包装要领

SAML Raider能够很容易地实行署名包装进击。第一步是制订阻拦划定规矩阻拦SAML音讯。起首转到Proxy选项卡,然后是Options子选项卡。然后,建立或编纂具有与下面的参数婚配的划定规矩。

如安在SAML中查找bug——第二局部
有了划定规矩,我们就能够最先阻拦了,并且我们只捕捉包罗SAMLResponse参数的http要求。
一旦阻拦了SAML相应,我们将经由历程按Ctrl+r或右键单击要求并运用上下文菜单单击Send to Repeater,将要求发送到Burp的Repeater。
要实行多个XSW进击,我们须要保存原始要求。在某些情况下,中继器中的SAML Raider选项卡没法运用“重置音讯”按钮将已被改动的SAML相应规复到其原始状况。这就是为何我们将原始文件保存在署理中,并继承将原始文件发送到Repeater。
一旦我们在Repeater中收到要求,我们就能够翻开SAML Raider选项卡。

如安在SAML中查找bug——第二局部

接下来,运用SAML Raider选项卡中的下拉列表并完成个中一种XSW进击就变得毫不费力。

如安在SAML中查找bug——第二局部

在运用署名包装进击后,能够单击go发送变动后的SAML相应。
若是要实验其他XSW进击,则须要将原始音讯从新发送到中继器。然后运用我们想要实验的下一个XSW进击。我们如许做是为了确保基础音讯连结一致,并且在实行其他进击时不会留下之前进击的陈迹。

若是实验XSW的历程当中致使接见效劳供应商,请马上注销并反复此历程。运用有用的XSW,实验改动任何看起来像用户标识的能够参数的属性(比方,将user1变动为admin,等等)。


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明如安在SAML中查找bug——第二局部
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址