WSDL stands for Web Service Description Language. WSDL is an XML-based file exposed by web services that informs clients of the provided services/methods, including where they reside and the method-calling convention.
A web serviceโs WSDL file should not always be accessible. Developers may not want to publicly expose a web serviceโs WSDL file, or they may expose it through an uncommon location, following a security through obscurity approach. In the latter case, directory/parameter fuzzing may reveal the location and content of a WSDL file.
It looks likeย http://<TARGET IP>:3002/wsdlย exists. Let us inspect its content as follows.
The response is empty! Maybe there is a parameter that will provide us with access to the SOAP web serviceโs WSDL file. Let us perform parameter fuzzing using Ffuf ๐ณ and theย burp-parameter-names.txtย list:
It looks likeย wsdlย is a valid parameter. Let us now issue a request forย http://<TARGET IP>:3002/wsdl?wsdl
We identified the SOAP serviceโs WSDL file!
Note
WSDL files can be found in many forms, such asย /example.wsdl,ย ?wsdl,ย /example.disco,ย ?discoย etc.ย DISCOย is a Microsoft technology for publishing and discovering Web Services.
WSDL File Breakdown
The above WSDL file follows theย WSDL version 1.1ย layout and consists of the following elements.
Definition
The root element of all WSDL files. Inside the definition, the name of the web service is specified, all namespaces used across the WSDL document are declared, and all other service elements are defined.
Data Types
The data types to be used in the exchanged messages.
Messages
Defines input and output operations that the web service supports. In other words, through theย messagesย element, the messages to be exchanged, are defined and presented either as an entire document or as arguments to be mapped to a method invocation.
Operation
Defines the available SOAP actions alongside the encoding of each message.
Port Type
Encapsulates every possible input and output message into an operation. More specifically, it defines the web service, the available operations and the exchanged messages. Please note that in WSDL version 2.0, theย interfaceย element is tasked with defining the available operations and when it comes to messages the (data) types element handles defining them.
Binding
Binds the operation to a particular port type. Think of bindings as interfaces. A client will call the relevant port type and, using the details provided by the binding, will be able to access the operations bound to this port type. In other words, bindings provide web service access details, such as the message format, operations, messages, and interfaces (in the case of WSDL version 2.0).
Service
A client makes a call to the web service through the name of the service specified in the service tag. Through this element, the client identifies the location of the web service.