在完整的第三方渗透测试之前,我们的一位客户已对我们的系统进行了初步安全审核。
这揭示了一些我们乐意处理的潜在漏洞,但报告中有一个项目我不确定我是否同意,但我一直无法说服他们。
他们报告说,他们已经能够向我们的一个基于肥皂的Web服务发送一条已被篡改的消息,并且它已报告错误。他们建议,这意味着服务器已尝试处理该消息。
所以请求看起来像这样: -
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://example.com/soap/envelope/]]>><" 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/]]>>< 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信封。
有人可以确认我们是否有安全问题?如果是我们应该如何解决它?
答案 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/]]>><"
事实上,这种XML是完全合法的。它应该被SOAP处理器拒绝,并且SOAP版本不匹配。