【发布时间】:2017-07-10 15:05:17
【问题描述】:
在完整的第 3 方渗透测试之前,我们的一位客户对我们的系统进行了初步安全审计。
这揭示了一些我们乐于处理的潜在漏洞,但报告中有一项我不确定我是否同意,但我无法说服他们。
他们报告说,他们能够向我们的一个基于肥皂的网络服务发送一条已被篡改的消息,并且报告了一个错误。他们认为,这意味着服务器已尝试处理该消息。
所以请求看起来像这样:-
<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 属性中的编码 ]]>>。
服务器的响应是:-
<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 序列化和反序列化为参数,因此这是拒绝错误的 SOAP 信封。
谁能确认我们是否存在安全问题?如果这是我们应该如何解决它?
【问题讨论】: