WSDL Enumeration – Web Services Security

Lab Project

https://github.com/snoopysecurity/dvws

Contents

  • Information Gathering
  • Using WSDLer ( Burp Suite Extension )
  • Manual Guessing with Burp Repeater
  • Bruteforcing with Burp Intruder

Information Gathering

You need to know how to use Burp Suite and Burp Spider for this step. But don’t worry if you don’t know, you can read burp suite manual at Portswigger’s Support Page.

Burp Suite သံုးပံုသံုးနည္းရယ္ ၊ Burp Spider သံုးပံုသံုးနည္းေလးေတြသိထားဖို႕လိုပါတယ္။ တကယ္လို႕မသိဘူးဆိုရင္ေတာ့ Official သံုပံုသံုးနည္းေလးေတြ Portswigger’s Support Page မွာသြားျပီးေလ့လာနုိင္ပါတယ္။

Get Burp Community Edition

Intercept Request

Request ကို Burp နဲ႕ဖမ္းမယ္

We need to add this target to the scope because we don’t need other host to test.

တျခား Host ေတြနဲ႕ဆိုရွုပ္ေနမယ္ target scope ထဲ က်ေနာ္တို႕ host ကိုထည့္လိုက္မယ္

We will only show scope item for clear version

Scope ထဲက target ကိုပဲ ျပခိုင္းလိုက္ရင္ ရွင္းရွင္းလင္းလင္းေလးျဖစ္သြားတာေပါ့။

Now , We will crawl our scope with burp spider to see wsdl file.

Burp Spider ကိုသံုးျပီးေတာ့ crawl လိုက္မယ္။

When spider finished , We can see wsdl file in target.

Spider အလုပ္လုပ္တာျပီးျပီဆိုရင္ေတာ့ wsdl file ကိုေတြ႕ရျပီေပါ့။

WSDL file in browser

Browser မွာဖြင့္ၾကည့္လိုက္မယ္

Ok , Time to use WSDLer plugin.

WSDLer ကိုသံုးရမယ့္အခ်ိန္ေရာက္ပါျပီ။

Using Burp’s Wsdler

You will need Jython for Wsdler plugin. Here is a wiki page for installing jython.

Wsdler ကိုသံုးဖို႕အတြက္ Jython သြင္းဖို႕လိုပါတယ္။ ဒီမွာ သြားဖတ္နိုင္ပါတယ္။

Parsing wsdl file to Wsdler

Check the result in Wsdler

result ကို wsdler မွာၾကည့္လိုက္မယ္

We know check_user_information would be interest.

check_user_information ဆိုတဲ့ ဟာကစိတ္ဝင္စားစရာေကာင္းတာကိုက်ေနာ္တို႕ေတြ႕ရပါမယ္။

Lets send this request to burp repeater.

ဒီေတာ့ အဲ့ဒီ Request ကို Burp Repeater နဲ႕ေသခ်ာၾကည့္တာေပါ့။

Now we can see user input in request and return value in response.

တစ္ဖက္မွာ user input ပါတဲ့ request ကိုေတြ႕ရမယ္။ ေနာက္တစ္ဖက္မွာေတာ့ response ေပါ့။

Manual Enumeration

Now its time to guess common username in user input. How about admin?

ဒီေတာ့ လူသံုးမ်ားတဲ့ username ေတြနဲ႕ manually မွန္းထည့္ၾကည့္ရင္မေကာင္းဘူးလား။ admin တို႕ဘာတို႕ေပါ့။

Gotcha !

ရျပီ ။

Automatic Bruteforcing with Burp Intruder

In real world , we cannot guess for username manually. If we have wordlists for common usernames , Why we don’t use Burp Intruder.

တကယ့္ App မွာစမ္းတဲ့အခါက်ေတာ့ Manually စမ္းထည့္တာက သိပ္အလုပ္ျဖစ္မွာမဟုတ္ဘူးေလ။ ဒီေတာ့ က်ေနာ္တို႕ wordlist ေလးဘာေလးရွာျပီး Burp Intruder နဲ႕ Bruteforce တိုက္ရင္ပိုေကာင္းသြားမယ္။

You can get the usernames wordlist in this SecLists Repo.

Notes

If you have a problem between PHP 7 and 5. This Stackoverflow question may help you.

တကယ္လို႕ PHP version ေၾကာင့္ Error တက္ေနတယ္ဆိုရင္ေတာ့ Source Code ေလးနည္းနည္းျပင္ရမယ္။ Lab ကျဖစ္တာ ဆုိေတာ့ျပင္မွရမယ္။ ဒါေလး ဖတ္လိုက္ အိုေကသြားမယ္။

Video Demo

Backgroud Music for Video

References

  • https://portswigger.net/burp/help/contents
  • https://blog.netspi.com/hacking-web-services-with-burp/
  • https://www.smeegesec.com/2013/04/wsdl-wizard-burp-suite-plugin-for.html
  • https://www.owasp.org/index.php/Web_Service_Security_Testing_Cheat_Sheet

Thanks

@art0flunam00n