
WSDL 是一个用于精确描述 Web 服务的文档,是一个遵循 WSDL-xml 模式的 xml 文档。
WSDL 元素基于 XML 语法描述了与服务进行交互的基本元素:
Type(消息类型):数据类型定义的容器,它使用某种类型系统(如XSD)。
Message(消息):通信数据的抽象类型化定义,它由一个或者多个part组成。
Part:消息参数。
Operation(操作):对服务所支持的操作进行抽象描述,WSDL定义了四种操作:
1.单向(one-way):端点接受信息;
2.请求-响应(request-response):端点接受消息,然后发送相关消息;
3.要求-响应(solicit-response):端点发送消息,然后接受相关消息;
4.通知(notification):端点发送消息。
Port Type(端口类型):特定端口类型的具体协议和数据格式规范。
Binding:特定端口类型的具体协议和数据格式规范。
Port:定义为绑定和网络地址组合的单个端点。
Service:相关端口的集合,包括其关联的接口、操作、消息等。
测试工具
在实际的 渗透测试 过程中,我常用到的工具有 SoapUI 和 Burp Suite 的 Wsdler 插件。除此之外,像 WS-Attacker、WSSAT 等工具也值得深入研究。
SoapUI
新建一个 SOAP 项目,填入目标 WSDL 链接,稍等片刻,工具就会解析并展示出所有暴露的接口和操作方法,非常直观。


Wsdler
这是一款 Burp Suite 的扩展插件,安装后可以直接在 Burp 的上下文菜单中使用。

使用方法是,先通过代理抓取到目标的 WSDL 请求数据包,然后右键发送到 Wsdler 进行解析。

解析完成后,便可以在 Wsdler 标签页中看到所有解析出的 SOAP 操作和端点,方便后续测试。

常见安全问题
由 WSDL 描述的 Web 服务接口,本质上也是 Web 应用的一部分,因此常见的 Web 应用安全漏洞都可能存在:
sql 注入
xss 攻击
命令执行
越权
LDAP 注入
缓冲区溢出
逻辑漏洞
等等
同时,由于其基于 XML 协议的特性,还会引入一些 XML 相关的特殊安全漏洞:
XPath 注入
XQuery 注入
拒绝服务攻击( SOAP 数组溢出、递归的 XML 实体声明、超大消息体)
信息泄漏( XML External Entity File Disclosure )
等等
下面结合几个实际案例,来看看以往遇到过的安全风险:
任意文件读取
在某些文件操作相关的接口中,参数未做严格过滤,可能导致任意文件读取漏洞。

SQL 注入
与普通 Web 注入类似,参数直接拼接进 SQL 语句,就会导致 SQL 注入。下图展示了一个请求导致数据库报错信息泄露的情况。

使用 sqlmap 等工具可以进一步自动化利用此类注入点。

XXE 漏洞
XML 外部实体注入是最典型的 XML 相关漏洞之一。通过构造恶意的 XML 实体,可以探测内网、读取文件甚至造成拒绝服务。

在 DNSLog 平台上成功收到了查询记录,证实漏洞存在。

总结
这篇文章简要介绍了一些在渗透测试中利用 WSDL 接口的思路和工具,包括使用 SoapUI 和 Wsdler 进行接口发现与测试,并列举了几种常见的漏洞场景。Web 服务接口作为企业应用集成的关键组件,其安全性同样不容忽视,在安全评估时应当被纳入测试范围。
