需要SOAP安全建议

时间:2017-07-10 15:05:17

标签: c# asp.net security soap

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

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

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

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

<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属性的编码]]&gt;&gt;&lt;

服务器的响应是: -

<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序列化和反序列化为parmeter,因此这将拒绝错误的SOAP信封。

有人可以确认我们是否有安全问题?如果是我们应该如何解决它?

1 个答案:

答案 0 :(得分:1)

  

有人可以确认我们是否有安全问题?如果我们应该如何解决它?

没有安全问题。

不同的SOAP处理器将为此示例生成不同的错误消息,尽管SOAP协议建议“SOAP版本不匹配”错误。根据我使用XML,SOAP和其他Web服务协议10多年的经验,他的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版本不匹配。