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.
WSDL shouldn’t be publicly accessible.
However, through directory/parameter fuzzing, we may reveal the location and content of WSDL file.
Exploitation
Suppose we are assessing a SOAP service residing in http://<TARGET IP>:3002. We have not been informed of a WSDL file.
Identify WSDL
Let’s start with basic directory fuzzing against the web service:
It looks like http://<TARGET IP>:3002/wsdl exists. Let us inspect its content as follows.
Unfortunately, the response is empty.
Maybe there is a parameter that will provide us with access to the SOAP web serivce’s WSDL file.
Let’s fuzz parameter with ffuf and burp-parameter-names.txt list (`-fs 0_ filters out empty responses (size = 0) and -mc 200 matches HTTP 200 responses).
It looks like wsdl is a valid parameter. Let us now issue a request for http://<TARGET IP>:3002/wsdl?wsdl
We successfully 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.