torsdag 12 november 2009

Pentesta WCF web services

Brian Holyfield gav en del konkreta tips för pentestning av WCF-webbtjänster.

Proxy för binär SOAP?
Windows Communication Foundation (WCF) har försökt göra något åt storleksexplosionen med SOAP genom att införa ett packat, binärt SOAP-format. Bra för prestanda, dåligt för pentestare.

Hur ska vi nu kunna fuzza eller pentesta våra web services? Microsoft har turligt nog publicerat formatet och some-guy-on-the-internet har implementerat en codec.

Brian gjorde plugins till Burp-proxyn men kunde bara antingen avkoda inkommande trafik eller koda utgående, inte både och. Så han fick utveckla två plugins och köra dubbla proxies, en på invägen och en på utvägen (med varsin port förstås). På det viset fick han möjlighet att titta på och manipulera SOAP:en.

Hitta WSDL:en
Pentestare gillar att hitta WSDL-filer för att snabbt se hur gränssnittet ser ut. Microsoft har å andra sidan bestämt sig för secure by default och publicerar in WSDL-filer som default. Men om du använder templates i Visual Studio så slås det på.

Ett alternativ är att anropa en så kallad MEX-tjänst som ofta publiceras i .Net-sammanhang och ger metadata om webbtjänsten. Det visar sig att den mest klär in WSDL:en med lite mex-taggar och är ett utmärkt sätt att få tag på WSDL:en.

Ytterligare ett alternativ finns om det rör sig om Silverlight enabled WCF services. Då kan du ladda hem klienten (.xap-fil), packa upp den (det är en zip) och om klienten är gjord i Visual Studio så har den skapat metodstubbar för alla ändpunkter i webbtjänsten, inte bara dem som klienten faktiskt anropar. Bara att rota igenom klasserna för att hitta information motsvarande WSDL:en med andra ord.

Inga kommentarer: