【问题标题】:SOAP Security advice required需要 SOAP 安全建议
【发布时间】:2017-07-10 15:05:17
【问题描述】:

在完整的第 3 方渗透测试之前,我们的一位客户对我们的系统进行了初步安全审计。

这揭示了一些我们乐于处理的潜在漏洞,但报告中有一项我不确定我是否同意,但我无法说服他们。

他们报告说,他们能够向我们的一个基于肥皂的网络服务发送一条已被篡改的消息,并且报告了一个错误。他们认为,这意味着服务器已尝试处理该消息。

所以请求看起来像这样:-

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://example.com/soap/envelope/]]&gt;&gt;&lt;" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SOAP-ENV:Body>
        <tns:SomeMethod xmlns:tns="http://example.com/"/>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

注意插入到 xmlns:SOAP-ENV 属性中的编码 ]]>>。

服务器的响应是:-

<soap:Body>
    <soap:Fault>
        <faultcode>soap:VersionMismatch</faultcode>
        <faultstring>Possible SOAP version mismatch: Envelope namespace http://example.com/soap/envelope/]]&gt;&gt;&lt; was unexpected. Expecting http://example.com/soap/envelope/.</faultstring>
        <detail />
    </soap:Fault>
</soap:Body>

他们的论点是,这表明有效负载已被插入到 XML 文档中,因此已被处理(可能将我们暴露于 XXE 漏洞利用之类的东西)以及错误是 SOAP 错误而不是一般的 500 错误的事实证明了这一点。

我不相信这是事实,但我正在努力让客户相信这一点。根据这篇 (https://msdn.microsoft.com/en-us/library/aa480498.aspx) 文章,XmlSerializer 负责将 SOAP Xml 序列化和反序列化为参数,因此这是拒绝错误的 SOAP 信封。

谁能确认我们是否存在安全问题?如果这是我们应该如何解决它?

【问题讨论】:

    标签: c# asp.net security soap


    【解决方案1】:

    谁能确认我们是否存在安全问题?如果这是我们应该如何解决它?

    不存在安全问题。

    尽管 SOAP 协议建议出现“SOAP 版本不匹配”错误,但对于此示例,不同的 SOAP 处理器会产生不同的错误消息。根据我 10 多年使用 XML、SOAP 和其他 Web 服务协议的经验,他的 SOAP 处理器所做的事情是完全合法的。它只是根据 XML 命名空间不匹配拒绝 SOAP-ENV:Envelope 限定标记,因为 xmlns 绑定 URI 与预期的 URI 完全不同:

    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://example.com/soap/envelope/]]&gt;&gt;&lt;"
    

    事实上,这个 XML 是完全合法的。并且它应该被 SOAP 处理器拒绝,并出现 SOAP 版本不匹配错误。

    【讨论】:

    • 非常感谢您的回复。这就是我们的想法。
    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    相关资源
    最近更新 更多