[OWASP-WEBSCARAB] Call for testers - NTLM

Rogan Dawes lists at dawes.za.net
Wed Jan 4 10:22:56 EST 2006


Hi folks,

After much procrastination, I have finally implemented an authentication 
framework for WebScarab. WebScarab can now communicate with webservers 
AND proxies that use the following authentication methods:

* Basic
* NTLM (via jcifs)
* Negotiate (basically NTLM. There is no support for Kerberos at this time)

Please download it from 
<http://dawes.za.net/rogan/webscarab/webscarab-installer-20060104-1611.jar> 
or 
<http://dawes.za.net/rogan/webscarab/webscarab-selfcontained-20060104-1611.jar>, 
and let me know how it works for you? Based on feedback received, I'll 
make a new release.

For those who want technical details, this is what changed:

I modified URLFetcher (the part that actually communicates with the 
server/proxy) to handle authentication automatically. It works in the 
following way:

If URLFetcher gets a 401 or 407 response, it checks to see if WebScarab 
has credentials that match the host and realm (for Basic auth), or just 
the host (for NTLM or Negotiate). If WebScarab does not have any 
credentials at that time, it will prompt the user to enter the 
credentials. It then constructs an appropriate (Proxy-)Authorization 
header, and sends it off automatically, without returning anything to 
the user/browser, until either it gets a non-401/407 response, the 
Authorization header was the same as a previous request, or it has done 
3 unsuccessful round trips (basically a fail safe).

In this way, the various plugins can create requests without having to 
worry about authentication, and the framework will take care of that for 
you.

If you look at the request in the Summary, you will see that the 
archived request contains the credentials that were used to retrieve the 
response. These may be in standard "Basic BASE64(username:password)" 
form, OR, it could be a non-standard "NTLM BASE64(domain\user:password)" 
or "Negotiate BASE64(domain\username:password)" form.

This links the credentials with the request, so you can check how you 
managed to retrieve that particular page, at a later date. More 
importantly, if you want to replay that request, it will use those same 
credentials, regardless of whether you had changed the credentials via 
the Tools->Credentials window.

What this means is that you can hand-craft an appropriate 
(Proxy-)Authorization header (in e.g. Manual Request), and it will be 
used in preference to the stored credentials.

I apologise if this explanation is a bit rambling, please mail the list 
if I have left something out, or if anything is unclear.

Regards,

Rogan




More information about the Owasp-webscarab mailing list