<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rdawes</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Rdawes"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Rdawes"/>
		<updated>2026-05-18T06:06:30Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=How_to_modify_proxied_conversations&amp;diff=8872</id>
		<title>How to modify proxied conversations</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=How_to_modify_proxied_conversations&amp;diff=8872"/>
				<updated>2006-08-09T13:06:19Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: Show how to use Proxy scripts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Objective ==&lt;br /&gt;
&lt;br /&gt;
To make repetitive modifications to either requests or responses (or both) as they pass through the proxy&lt;br /&gt;
&lt;br /&gt;
== Approach ==&lt;br /&gt;
&lt;br /&gt;
Write a script to make the modifications as desired. Scripts can be written in the Proxy-&amp;gt;BeanShell plugin, or attached to Hooks in the ScriptManager interface. Depending on which you choose, the script itself changes a little.&lt;br /&gt;
&lt;br /&gt;
== What methods exist to manipulate the request and response? ==&lt;br /&gt;
&lt;br /&gt;
The request and response are instances of the Request and Response classes, respectively. These classes both extend the Message class which provides functionality common to both.&lt;br /&gt;
&lt;br /&gt;
The Message class provides the following methods, which are common to both the Request and Response classes:&lt;br /&gt;
   String[] getHeaderNames()&lt;br /&gt;
   String getHeader(String name)&lt;br /&gt;
   void setHeader(String name, String value)&lt;br /&gt;
   void addHeader(String name, String value)&lt;br /&gt;
   void deleteHeader(String name)&lt;br /&gt;
   NamedValue[] getHeaders()&lt;br /&gt;
   void setheaders(NamedValue[] headers)&lt;br /&gt;
   byte[] getContent()&lt;br /&gt;
   void setContent(byte[] content)&lt;br /&gt;
&lt;br /&gt;
The Request class adds the following methods:&lt;br /&gt;
   String getMethod()&lt;br /&gt;
   void setMethod(String method)&lt;br /&gt;
   HttpUrl getURL()&lt;br /&gt;
   void setURL(HttpUrl url)&lt;br /&gt;
   void setURL(String url) throws MalformedURLException&lt;br /&gt;
   String getVersion()&lt;br /&gt;
   void setVersion(String version)&lt;br /&gt;
&lt;br /&gt;
The Response class adds the following methods:&lt;br /&gt;
   String getVersion();&lt;br /&gt;
   void setVersion(String version);&lt;br /&gt;
   String getStatus();&lt;br /&gt;
   void getStatus(String status);&lt;br /&gt;
   String getMessage();&lt;br /&gt;
   void setMessage(String message);&lt;br /&gt;
   String getStatusLine();&lt;br /&gt;
&lt;br /&gt;
== Using the Proxy-&amp;gt;BeanShell plugin ==&lt;br /&gt;
&lt;br /&gt;
The Proxy-&amp;gt;BeanShell plugin comes supplied with a very simple script to show you how to get access to the request and response objects. Unfortunately, it doesn't provide much assistance on how to go forward from there. Here is an example, showing you how to reject all requests for Flash content:&lt;br /&gt;
&lt;br /&gt;
   import org.owasp.webscarab.model.HttpUrl;&lt;br /&gt;
   import org.owasp.webscarab.model.Request;&lt;br /&gt;
   import org.owasp.webscarab.model.Response;&lt;br /&gt;
   import org.owasp.webscarab.httpclient.HTTPClient;&lt;br /&gt;
   import java.io.IOException;&lt;br /&gt;
   &lt;br /&gt;
   public Response fetchResponse(HTTPClient nextPlugin, Request request) throws IOException {&lt;br /&gt;
      HttpUrl url = request.getURL();&lt;br /&gt;
      if (url.toString().endsWith(&amp;quot;.swf&amp;quot;))&lt;br /&gt;
          throw new IOException(&amp;quot;No flash content allowed&amp;quot;);&lt;br /&gt;
      response = nextPlugin.fetchResponse(request);&lt;br /&gt;
      return response;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Here's an example showing how to replace a particular string in a JavaScript response:&lt;br /&gt;
&lt;br /&gt;
   import org.owasp.webscarab.model.Request;&lt;br /&gt;
   import org.owasp.webscarab.model.Response;&lt;br /&gt;
   import org.owasp.webscarab.httpclient.HTTPClient;&lt;br /&gt;
   import java.io.IOException;&lt;br /&gt;
   &lt;br /&gt;
   public Response fetchResponse(HTTPClient nextPlugin, Request request) throws IOException {&lt;br /&gt;
      response = nextPlugin.fetchResponse(request);&lt;br /&gt;
      String cType = response.getHeader(&amp;quot;Content-Type&amp;quot;);&lt;br /&gt;
      if (cType != null &amp;amp;&amp;amp; cType.endsWith(&amp;quot;javascript&amp;quot;)) {&lt;br /&gt;
         byte[] bytes = response.getContent();&lt;br /&gt;
         if (bytes != null) {&lt;br /&gt;
            String content = new String(bytes);&lt;br /&gt;
            content = content.replace(&amp;quot;my search string&amp;quot;, &amp;quot;my replacement&amp;quot;);&lt;br /&gt;
            response.setContent(content.getBytes());&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
      return response;&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== So, what's with the ScriptManager? ==&lt;br /&gt;
&lt;br /&gt;
The ScriptManager is intended to provide a more generic interface to scripting throughout WebScarab. Each plugin can provide Hooks that can have scripts attached to them. Each Hook provides a brief explanation of how to use it. The Proxy provides 3 hooks:&lt;br /&gt;
&lt;br /&gt;
* Allow Connection&lt;br /&gt;
&lt;br /&gt;
Called when a new connection is received from a browser&lt;br /&gt;
Use connection.getAddress() and connection.closeConnection() to decide and react&lt;br /&gt;
&lt;br /&gt;
This hook is intended to provide a measure of security in installations where WebScarab is allowing connections from non-localhost interfaces. Here is an example of how it may be used:&lt;br /&gt;
&lt;br /&gt;
   import java.net.InetAddress;&lt;br /&gt;
   &lt;br /&gt;
   InetAddress from = connection.getAddress();&lt;br /&gt;
   if (! from.getHostAddress().startsWith(&amp;quot;192.168.1.&amp;quot;)) &lt;br /&gt;
      connection.closeConnection();&lt;br /&gt;
&lt;br /&gt;
This script rejects all connections from hosts outside the 192.168.1 subnet.&lt;br /&gt;
&lt;br /&gt;
* Intercept Request&lt;br /&gt;
&lt;br /&gt;
Called when a new request has been submitted by the browser&lt;br /&gt;
Use connection.getRequest() and connection.setRequest(request) to perform changes&lt;br /&gt;
&lt;br /&gt;
Here is an example, corresponding to the one shown above:&lt;br /&gt;
&lt;br /&gt;
   import org.owasp.webscarab.model.Request;&lt;br /&gt;
   import org.owasp.webscarab.model.HttpUrl;&lt;br /&gt;
   &lt;br /&gt;
   Request request = connection.getRequest();&lt;br /&gt;
   HttpUrl url = request.getURL();&lt;br /&gt;
   if (url.toString().endsWith(&amp;quot;.swf&amp;quot;))&lt;br /&gt;
       throw new IOException(&amp;quot;No flash content allowed&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
* Intercept Response&lt;br /&gt;
&lt;br /&gt;
Called when the request has been submitted to the server, and the response has been received.&lt;br /&gt;
Use connection.getResponse() and connection.setResponse(response) to perform changes&lt;br /&gt;
&lt;br /&gt;
Here is an example, again corresponding to the one shown above:&lt;br /&gt;
&lt;br /&gt;
   import org.owasp.webscarab.model.Response;&lt;br /&gt;
   &lt;br /&gt;
   Response response = connection.getResponse();&lt;br /&gt;
   String cType = response.getHeader(&amp;quot;Content-Type&amp;quot;);&lt;br /&gt;
   if (cType != null &amp;amp;&amp;amp; cType.endsWith(&amp;quot;javascript&amp;quot;)) {&lt;br /&gt;
      byte[] bytes = response.getContent();&lt;br /&gt;
      if (bytes != null) {&lt;br /&gt;
         String content = new String(bytes);&lt;br /&gt;
         content = content.replace(&amp;quot;my search string&amp;quot;, &amp;quot;my replacement&amp;quot;);&lt;br /&gt;
         response.setContent(content.getBytes());&lt;br /&gt;
         connection.setResponse(response);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
Note that to actually make your changes take effect, you have to call setResponse(response), since the object you have been modifying is only a copy, not the actual response object.&lt;br /&gt;
&lt;br /&gt;
[[Category:How To]]&lt;br /&gt;
[[Category:OWASP WebScarab Project]]&lt;br /&gt;
[[Category:Session Management]]&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Fuzzing_with_WebScarab&amp;diff=7089</id>
		<title>Fuzzing with WebScarab</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Fuzzing_with_WebScarab&amp;diff=7089"/>
				<updated>2006-07-04T10:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is intended to explain how to use the WebScarab Fuzzer plugin.&lt;br /&gt;
&lt;br /&gt;
I assume that you are familiar with the basic functionality of WebScarab, and have managed to use it as a proxy to view and intercept some conversations already. If not, I suggest reading the [ WebScarab Getting Started | &amp;quot;Getting Started&amp;quot; ] gocument first.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
The Fuzzer plugin is intended to simplify or automate repetitive testing of a web site. In essence, what the fuzzer does is sequentially try each one of a list of values replacing some user-specified parameters in a request that is then sent to the server. The response is then saved into the Summary, where it can be manually reviewed.&lt;br /&gt;
&lt;br /&gt;
The first thing to understand is how the Fuzzer defines a parameter. A parameter is a portion of the request that is considered when creating the response:&lt;br /&gt;
&lt;br /&gt;
* A parameter may be found as part of the path, as is commonly seen in a Wiki. For example it is common to see something like &amp;quot;http://example.com/index.php/Some_Topic&amp;quot;. In this case, the string &amp;quot;Some_Topic&amp;quot; is a &amp;quot;Path parameter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* A parameter may also be found as a &amp;quot;fragment&amp;quot;, appended to the path with a semi-colon, before the query portion of the URL. For example, it is common to find session ids in a URL, like &amp;quot;http://example.com/index.php;PHPSESSIONID=some_hex_string&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* A parameter can commonly be found as an URL Query parameter, collected as Name/Value pairs following a &amp;quot;?&amp;quot; in the URL, separated by ampersands, as in &amp;quot;http://example.com/index.php?title=Some_Topic&amp;amp;action=edit&amp;quot;, which illustrates 2 query parameters: &amp;quot;title&amp;quot; and &amp;quot;action&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* A parameter may also be found in a Cookie. Of course, cookies are most commonly used to track session state, and fuzzing a cookie is often pointless. However, if data is stored in the cookie, fuzzing it may give promising results, as it is a less commonly tested aspect of a site.&lt;br /&gt;
&lt;br /&gt;
* A parameter may also be found in the body/content portion of a request, typically when the request is sent as a POST. Parameters are most commonly formatted using the same scheme as for encoding URL Query parameters. Of course, POST parameters may be formatted using any scheme supported by the server. WebScarab can currently only support POST's with a Content-Type of &amp;quot;application/x-www-form-urlencoded&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Using the fuzzer==&lt;br /&gt;
&lt;br /&gt;
The fuzzer interface allows a knowledgeable user to construct a new request, specifying the method, basic URL (excluding any path parameters, fragments or query parameters), the request version, any request headers, and the required parameters. Unfortunately, this is rather a tedious and error-prone way of constructing a request to fuzz.&lt;br /&gt;
&lt;br /&gt;
Fortunately, there is a much easier way! Once you have used the proxy for a bit, got to the Summary View, and find a conversation that has parameters that you would like to fuzz. Then right-click on that conversation, and select &amp;quot;Use as fuzz template&amp;quot;. This will identify all of the parameters in the request (other than path parameters, which are not possible to identify automatically), and copy all of the relevant information to the Fuzzer plugin interface. If you wish to, you can make any modifications you want at this point, for example, adding or deleting some headers, adding or removing parameters, etc.&lt;br /&gt;
&lt;br /&gt;
Once you have defined the basic structure of the request, you need to define the fuzz sources. A &amp;quot;fuzz source&amp;quot; is a list of alternative inputs to be used a values for one or more parameters. In most cases, you will create a file containing one value per line. If you installed WebScarab using the &amp;quot;installer&amp;quot; version, you should also find two files &amp;quot;xss.txt&amp;quot; and &amp;quot;sql.txt&amp;quot; in the directory in which you installed it. These two files contain a collection of Cross Site Scripting and Sql Injection strings respectively, which may trigger errors in the application you are testing.&lt;br /&gt;
&lt;br /&gt;
Define available fuzz sources by selecting the &amp;quot;Sources&amp;quot; button in the Fuzzer interface. In the dialog, type in a description of the Fuzz source. e.g. for the xss.txt file, type XSS (case is not important). Then use the &amp;quot;browse&amp;quot; button to locate the file containing the strings you wish to use, or type the filename in the &amp;quot;File&amp;quot; field. Once the file has been chosen, click &amp;quot;Add&amp;quot;. WebScarab will read the file, and add each item to the list identified by the description you supplied. You can check to see if they were properly read in by clicking on the item in the list on the left hand side. You should see the fuzz strings displayed 1 per line, and the &amp;quot;Items&amp;quot; label should show how many strings were read in.&lt;br /&gt;
&lt;br /&gt;
You can also define a list of strings to use, using a reduced regular expression syntax. By reduced, I mean that the syntax elements that allow for an infinitely large set to be defined is not permitted. For example, the &amp;quot;.&amp;quot; character defines 65536 possible characters, and is disallowed. Similarly, the * and + operators allow an indefinite number of characters, and are also disallowed. Finally, the character count syntax that allows a variable number of characters &amp;quot;{3,5}&amp;quot; is also disallowed. This is useful if you wish to attempt to brute force something like a document identifier, that obeys a regular pattern.&lt;br /&gt;
&lt;br /&gt;
Once you have defined your fuzz sources, close the dialog, and return to the main Fuzzer interface.&lt;br /&gt;
&lt;br /&gt;
It would probably be a good idea to explain what each of the columns in the &amp;quot;Parameters&amp;quot; table represent at this point:&lt;br /&gt;
&lt;br /&gt;
* The Location column represents where the parameter is found. The location can be one of &amp;quot;Path&amp;quot;, &amp;quot;Fragment&amp;quot;, &amp;quot;Query&amp;quot;, &amp;quot;Cookie&amp;quot; or &amp;quot;Body&amp;quot;, as explained above.&lt;br /&gt;
&lt;br /&gt;
* The Name column represents the name of the parameter.&lt;br /&gt;
&lt;br /&gt;
* The Value column is for the default value of that parameter, if that parameter is not being fuzzed.&lt;br /&gt;
&lt;br /&gt;
* The Priority column allows the user to control how the various fuzz sources increment. Fuzz sources at the same priority increment in lock step. Fuzz sources at different priorities increment sequentially. For example, if you had a list of known usernames and matching passwords, you would use a username source and a password source with the same priority. However, if you wanted to try each of the usernames with each of the passwords, you would use sources with different priorities.&lt;br /&gt;
&lt;br /&gt;
* The Fuzz Source column allows the user to control which parameters will be fuzzed, and which list of fuzz strings will be used.&lt;br /&gt;
&lt;br /&gt;
Now you can instruct the Fuzzer on which fuzz sources to use for each parameter. The &amp;quot;Fuzz Source&amp;quot; column is editable using a combo box, and you can selected from the defined fuzz sources, or an empty item if you do not want to fuzz that parameter.&lt;br /&gt;
&lt;br /&gt;
As you change the various parameters to be fuzzed, and possibly modify the priorities of the parameters, you should notice the &amp;quot;Total Requests&amp;quot; field updating. If your fuzzed parameters are all at the same priority, the &amp;quot;Total Requests&amp;quot; field will reflect the size of the smallest Fuzz Source. If the fuzzed parameters are at different priorities, the &amp;quot;Total Requests&amp;quot; field will show the product of the sizes of the various Fuzz Sources.&lt;br /&gt;
&lt;br /&gt;
==Running the fuzzer==&lt;br /&gt;
&lt;br /&gt;
When you hit the Start button, you'll see the &amp;quot;Current Request&amp;quot; field incrementing, and conversations appearing in the table in the bottom half of the screen, until the &amp;quot;Current Request&amp;quot; field shows one less than the &amp;quot;Total Requests&amp;quot; field. (Yes, this is a bug that should be fixed.) If there are any errors detected while executing the fuzzer, the fuzzer plugin will pause. As long as you do not make any changes to the fuzzer setup, you can resume fuzzing where you left off. (This may or may not be a good idea, depending on the nature of the error)&lt;br /&gt;
&lt;br /&gt;
Once the fuzzer is finished, you can review the resulting conversations by double-clicking on the rows in the Conversation Table in the lower half of the screen, and stepping through the list. Alternatively, you can review them from the Summary pane, at any time. Note that rerunning the fuzzer will clear the table in the Fuzzer, but will not change the conversations already in the Summary.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
&lt;br /&gt;
The Fuzzer is not able to fuzz &amp;quot;compound requests&amp;quot;. For example, when submitting values to a function results in a frameset description, and the real interesting result shows up in one of the child frames, WebScarab will not try to retrieve the child frame. For more complex fuzzing, I'd suggest investigating the Scripting plugin.&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=WebScarab_Getting_Started&amp;diff=6889</id>
		<title>WebScarab Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=WebScarab_Getting_Started&amp;diff=6889"/>
				<updated>2006-06-27T13:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: WebScarab Tutorial moved to WebScarab Getting Started: Not planning to do a complete tutorial in this document.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''WebScarab''' has a large amount of functionality, and as such can be quite intimidating to the new user. But, for the simplest case, intercepting and modifying requests and responses between a browser and HTTP/S server, there is not a lot that needs to be learned.&lt;br /&gt;
&lt;br /&gt;
Initially, I will assume that you have full unrestricted access to the Internet (that is, you are not behind a proxy). I will explain more complicated scenarios later in this tutorial. For the sake of simplicity, Iwill also assume that you are using Internet Explorer.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab_startup.png]]&lt;br /&gt;
&lt;br /&gt;
This is what WebScarab looks like at startup. There are a few major areas that might need explanation. &lt;br /&gt;
&lt;br /&gt;
Firstly, the toolbar provides access to the various plugins, as well as the Summary window (main view), and messages (log) window.&lt;br /&gt;
&lt;br /&gt;
The Summary window is split into two parts. On the top is a tree table which will show the layout of the sites that you have visited, and some attributes of the various URLs. Below that is a table showing all of the conversations that have been seen by WebScarab, normally sorted in reverse by ID, so that more recent conversations are at the top of the table. The sort order can be changed by clicking in the column headers if desired.&lt;br /&gt;
&lt;br /&gt;
In order to start using WebScarab as a proxy, you need to configure your browser to use WebScarab as a proxy. This is configured in IE using the Tools menu. Select Tools -&amp;gt; Internet Options -&amp;gt; Connections -&amp;gt; LAN Settings to get the proxy configuration dialog.&lt;br /&gt;
&lt;br /&gt;
[[Image:IE Proxy.PNG]]&lt;br /&gt;
&lt;br /&gt;
WebScarab defaults to using port 8008 on localhost for its proxy. You need to configure IE to relay requests to WebScarab, rather than fetching them itself, as shown in the above image. Make sure that all checkboxes are unchecked, except for &amp;quot;Use a proxy server&amp;quot;. Once you have configured IE to use the proxy, select Ok on all dialogs to get back to the browser. Browse to a non-SSL website, and then switch to WebScarab.&lt;br /&gt;
&lt;br /&gt;
You should see something similar to the next image. If you don't, or you get an error while browsing, you should go back and check your proxy settings in Internet Explorer as described above. If the proxy settings are correct, one possibility is that there is already another program that is using port 8008, and preventing WebScarab from using it. If so, you should stop that other program. I will also show you how to tell WebScarab how to use a different port a bit later.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab after browsing.png]]&lt;br /&gt;
&lt;br /&gt;
Here you can see the tree of URL's, which represents the site layout, as well as the individual conversations that have passed through WebScarab. To see the details of a particular conversation, you can double-click on a row in the table, and a window showing the request and the details of the response will open. You can see the request and response in a variety of forms. The view shown here is the &amp;quot;Parsed&amp;quot; view, where the headers are broken out into a table, and the request or response content is presented according to its Content-Type header. You can also choose the &amp;quot;Raw&amp;quot; format, where the request or response is presented exactly as it would be seen on the wire.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab conversation.png]]&lt;br /&gt;
&lt;br /&gt;
You can step from one conversation (request/response) to the next in the conversation window using the &amp;quot;previous&amp;quot; and &amp;quot;next&amp;quot; buttons, as well as jumping directly to a particular conversation using the drop down combo box.&lt;br /&gt;
&lt;br /&gt;
Now that you are familiar with the basic workings of WebScarab, and have made sure that your browser is correctly configured, the next step is to intercept some requests, and modify them before they are sent to the server.&lt;br /&gt;
&lt;br /&gt;
You enable proxy intercepts via the Proxy plugin, accessible via the &amp;quot;Proxy&amp;quot; button on the toolbar. Then choose the &amp;quot;Manual Edit&amp;quot; tab. Once you click the &amp;quot;Intercept Requests&amp;quot; checkbox, you can choose which request methods you wish to intercept (most commonly GET or POST), and can even choose multiple methods using &amp;quot;Ctrl-click&amp;quot;. Select &amp;quot;GET&amp;quot; for the moment. &lt;br /&gt;
&lt;br /&gt;
[[Image:Webscarab configure intercept.png]]&lt;br /&gt;
&lt;br /&gt;
Now go back to your browser, and click on a link. You should see something like the following window appear (it may only flash in the task bar initially, just select it. Future windows will pop-up properly).&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab intercept request.png]]&lt;br /&gt;
&lt;br /&gt;
You can now edit any part of the request you choose. Note that the headers are shown already URL-decoded, and anything that you type in will be URL-encoded automatically. If you do not want this to happen, you should use the Raw mode. In some cases, using the Raw mode may be the easiest anyway, especially if you have something that you wish to paste in.&lt;br /&gt;
&lt;br /&gt;
Once you are happy with your changes, click on the '''&amp;quot;Accept changes&amp;quot;''' button to allow the modified request to be sent to the server. If you decide that you wish to revert the changes that you have made so far, you can click on the '''&amp;quot;Cancel changes&amp;quot;''' button to allow the original request to be sent to the server. You can also click on the '''&amp;quot;Abort request&amp;quot;''' button if you don't want to send a request to the server at all. This will send an error back to the browser. Finally, if there are multiple intercept windows opened (e.g the browser is using several threads simultaneously), you can release all the requests using the '''&amp;quot;Cancel ALL intercepts&amp;quot;''' button.&lt;br /&gt;
&lt;br /&gt;
WebScarab will continue to intercept all requests that match the method you specified until you uncheck the &amp;quot;Intercept requests&amp;quot; checkbox, either in the '''intercept conversation''' window, or in the '''&amp;quot;Manual Edit&amp;quot;''' tab of the '''Proxy''' plugin. But you may be wondering why WebScarab does not intercept requests for images, stylesheets, javascript, etc. If you go back to the '''&amp;quot;Manual Edit&amp;quot;''' tab, you will see a field labeled &amp;quot;Exclude paths matching:&amp;quot;. This field contains a regular expression which is matched against the request URL. If there is a match, the request is never intercepted.&lt;br /&gt;
&lt;br /&gt;
You can also configure WebScarab to intercept responses, in case you want to change the behaviour of some parts of the page. For example, you can disable JavaScript validation, change the list of possible items in a '''SELECT''' field, etc.&lt;br /&gt;
&lt;br /&gt;
[[Category:How To]]&lt;br /&gt;
[[Category:OWASP WebScarab Project]]&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=WebScarab_Tutorial&amp;diff=6890</id>
		<title>WebScarab Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=WebScarab_Tutorial&amp;diff=6890"/>
				<updated>2006-06-27T13:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: WebScarab Tutorial moved to WebScarab Getting Started: Not planning to do a complete tutorial in this document.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[WebScarab Getting Started]]&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=WebScarab_Getting_Started&amp;diff=6626</id>
		<title>WebScarab Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=WebScarab_Getting_Started&amp;diff=6626"/>
				<updated>2006-06-26T08:00:06Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''WebScarab''' has a large amount of functionality, and as such can be quite intimidating to the new user. But, for the simplest case, intercepting and modifying requests and responses between a browser and HTTP/S server, there is not a lot that needs to be learned.&lt;br /&gt;
&lt;br /&gt;
Initially, I will assume that you have full unrestricted access to the Internet (that is, you are not behind a proxy). I will explain more complicated scenarios later in this tutorial. For the sake of simplicity, Iwill also assume that you are using Internet Explorer.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab_startup.png]]&lt;br /&gt;
&lt;br /&gt;
This is what WebScarab looks like at startup. There are a few major areas that might need explanation. &lt;br /&gt;
&lt;br /&gt;
Firstly, the toolbar provides access to the various plugins, as well as the Summary window (main view), and messages (log) window.&lt;br /&gt;
&lt;br /&gt;
The Summary window is split into two parts. On the top is a tree table which will show the layout of the sites that you have visited, and some attributes of the various URLs. Below that is a table showing all of the conversations that have been seen by WebScarab, normally sorted in reverse by ID, so that more recent conversations are at the top of the table. The sort order can be changed by clicking in the column headers if desired.&lt;br /&gt;
&lt;br /&gt;
In order to start using WebScarab as a proxy, you need to configure your browser to use WebScarab as a proxy. This is configured in IE using the Tools menu. Select Tools -&amp;gt; Internet Options -&amp;gt; Connections -&amp;gt; LAN Settings to get the proxy configuration dialog.&lt;br /&gt;
&lt;br /&gt;
[[Image:IE Proxy.PNG]]&lt;br /&gt;
&lt;br /&gt;
WebScarab defaults to using port 8008 on localhost for its proxy. You need to configure IE to relay requests to WebScarab, rather than fetching them itself, as shown in the above image. Make sure that all checkboxes are unchecked, except for &amp;quot;Use a proxy server&amp;quot;. Once you have configured IE to use the proxy, select Ok on all dialogs to get back to the browser. Browse to a non-SSL website, and then switch to WebScarab.&lt;br /&gt;
&lt;br /&gt;
You should see something similar to the next image. If you don't, or you get an error while browsing, you should go back and check your proxy settings in Internet Explorer as described above. If the proxy settings are correct, one possibility is that there is already another program that is using port 8008, and preventing WebScarab from using it. If so, you should stop that other program. I will also show you how to tell WebScarab how to use a different port a bit later.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab after browsing.png]]&lt;br /&gt;
&lt;br /&gt;
Here you can see the tree of URL's, which represents the site layout, as well as the individual conversations that have passed through WebScarab. To see the details of a particular conversation, you can double-click on a row in the table, and a window showing the request and the details of the response will open. You can see the request and response in a variety of forms. The view shown here is the &amp;quot;Parsed&amp;quot; view, where the headers are broken out into a table, and the request or response content is presented according to its Content-Type header. You can also choose the &amp;quot;Raw&amp;quot; format, where the request or response is presented exactly as it would be seen on the wire.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab conversation.png]]&lt;br /&gt;
&lt;br /&gt;
You can step from one conversation (request/response) to the next in the conversation window using the &amp;quot;previous&amp;quot; and &amp;quot;next&amp;quot; buttons, as well as jumping directly to a particular conversation using the drop down combo box.&lt;br /&gt;
&lt;br /&gt;
Now that you are familiar with the basic workings of WebScarab, and have made sure that your browser is correctly configured, the next step is to intercept some requests, and modify them before they are sent to the server.&lt;br /&gt;
&lt;br /&gt;
You enable proxy intercepts via the Proxy plugin, accessible via the &amp;quot;Proxy&amp;quot; button on the toolbar. Then choose the &amp;quot;Manual Edit&amp;quot; tab. Once you click the &amp;quot;Intercept Requests&amp;quot; checkbox, you can choose which request methods you wish to intercept (most commonly GET or POST), and can even choose multiple methods using &amp;quot;Ctrl-click&amp;quot;. Select &amp;quot;GET&amp;quot; for the moment. &lt;br /&gt;
&lt;br /&gt;
[[Image:Webscarab configure intercept.png]]&lt;br /&gt;
&lt;br /&gt;
Now go back to your browser, and click on a link. You should see something like the following window appear (it may only flash in the task bar initially, just select it. Future windows will pop-up properly).&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab intercept request.png]]&lt;br /&gt;
&lt;br /&gt;
You can now edit any part of the request you choose. Note that the headers are shown already URL-decoded, and anything that you type in will be URL-encoded automatically. If you do not want this to happen, you should use the Raw mode. In some cases, using the Raw mode may be the easiest anyway, especially if you have something that you wish to paste in.&lt;br /&gt;
&lt;br /&gt;
Once you are happy with your changes, click on the '''&amp;quot;Accept changes&amp;quot;''' button to allow the modified request to be sent to the server. If you decide that you wish to revert the changes that you have made so far, you can click on the '''&amp;quot;Cancel changes&amp;quot;''' button to allow the original request to be sent to the server. You can also click on the '''&amp;quot;Abort request&amp;quot;''' button if you don't want to send a request to the server at all. This will send an error back to the browser. Finally, if there are multiple intercept windows opened (e.g the browser is using several threads simultaneously), you can release all the requests using the '''&amp;quot;Cancel ALL intercepts&amp;quot;''' button.&lt;br /&gt;
&lt;br /&gt;
WebScarab will continue to intercept all requests that match the method you specified until you uncheck the &amp;quot;Intercept requests&amp;quot; checkbox, either in the '''intercept conversation''' window, or in the '''&amp;quot;Manual Edit&amp;quot;''' tab of the '''Proxy''' plugin. But you may be wondering why WebScarab does not intercept requests for images, stylesheets, javascript, etc. If you go back to the '''&amp;quot;Manual Edit&amp;quot;''' tab, you will see a field labeled &amp;quot;Exclude paths matching:&amp;quot;. This field contains a regular expression which is matched against the request URL. If there is a match, the request is never intercepted.&lt;br /&gt;
&lt;br /&gt;
You can also configure WebScarab to intercept responses, in case you want to change the behaviour of some parts of the page. For example, you can disable JavaScript validation, change the list of possible items in a '''SELECT''' field, etc.&lt;br /&gt;
&lt;br /&gt;
[[Category:How To]]&lt;br /&gt;
[[Category:OWASP WebScarab Project]]&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:WebScarab_intercept_request.png&amp;diff=6625</id>
		<title>File:WebScarab intercept request.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:WebScarab_intercept_request.png&amp;diff=6625"/>
				<updated>2006-06-26T07:41:17Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:Webscarab_configure_intercept.png&amp;diff=6624</id>
		<title>File:Webscarab configure intercept.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:Webscarab_configure_intercept.png&amp;diff=6624"/>
				<updated>2006-06-26T07:33:23Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=WebScarab_Getting_Started&amp;diff=6594</id>
		<title>WebScarab Getting Started</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=WebScarab_Getting_Started&amp;diff=6594"/>
				<updated>2006-06-23T14:20:50Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''WebScarab''' has a large amount of functionality, and as such can be quite intimidating to the new user. But, for the simplest case, intercepting and modifying requests and responses between a browser and HTTP/S server, there is not a lot that needs to be learned.&lt;br /&gt;
&lt;br /&gt;
Initially, we will assume that you have full unrestricted access to the Internet (that is, you are not behind a proxy). We will explain more complicated scenarios later in this tutorial. For the sake of simplicity, we will also assume that you are using Internet Explorer.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab_startup.png]]&lt;br /&gt;
&lt;br /&gt;
This is what WebScarab looks like at startup. There are a few major areas that might need explanation. &lt;br /&gt;
&lt;br /&gt;
Firstly, the toolbar provides access to the various plugins, as well as the Summary window (main view), and messages (log) window.&lt;br /&gt;
&lt;br /&gt;
The Summary window is split into two parts. On the top is a tree table which will show the layout of the sites that you have visited, and some attributes of the various URLs. Below that is a table showing all of the conversations that have been seen by WebScarab, normally sorted in reverse by ID, so that more recent conversations are at the top of the table. The sort order can be changed by clicking in the column headers if desired.&lt;br /&gt;
&lt;br /&gt;
In order to start using WebScarab as a proxy, you need to configure your browser to use WebScarab as a proxy. This is configured in IE using the Tools menu. Select Tools -&amp;gt; Internet Options -&amp;gt; Connections -&amp;gt; LAN Settings to get the proxy configuration dialog.&lt;br /&gt;
&lt;br /&gt;
[[Image:IE Proxy.PNG]]&lt;br /&gt;
&lt;br /&gt;
WebScarab defaults to using port 8008 on localhost for its proxy. You need to configure IE to relay requests to WebScarab, rather than fetching them itself, as shown in the above image. Make sure that all chackboxes are unchecked, except for &amp;quot;Use a proxy server&amp;quot;. Once you have configured IE to use the proxy, select Ok on all dialogs to get back to the browser. Browse to a website, and then switch to WebScarab.&lt;br /&gt;
&lt;br /&gt;
You should see something similar to the next image. If you don't, or you get an error while browsing, you should go back and check your proxy settings in Internet Explorer as described above. One if the proxy settings are correct, one possibility is that there is already another program that is using port 8008, and preventing WebScarab from using it. If so, you should stop that other program. We will also show you how to tell WebScarab how to use a different port a bit later.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab after browsing.png]]&lt;br /&gt;
&lt;br /&gt;
Here you can see the tree of URL's, which represents the site layout, as well as the individual conversations that have passed through WebScarab. To see the details of a particular conversation, you can double-click on a row in the table, and a window showing the request and the response in detail will open.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab conversation.png]]&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:WebScarab_conversation.png&amp;diff=6593</id>
		<title>File:WebScarab conversation.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:WebScarab_conversation.png&amp;diff=6593"/>
				<updated>2006-06-23T13:52:15Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: Showing a conversation window&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Showing a conversation window&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:WebScarab_after_browsing.png&amp;diff=6592</id>
		<title>File:WebScarab after browsing.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:WebScarab_after_browsing.png&amp;diff=6592"/>
				<updated>2006-06-23T13:41:56Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: Screenshot of WebScarab after some browsing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot of WebScarab after some browsing&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:IE_Proxy.PNG&amp;diff=6591</id>
		<title>File:IE Proxy.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:IE_Proxy.PNG&amp;diff=6591"/>
				<updated>2006-06-23T13:34:46Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: Internet Explorer proxy settings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Internet Explorer proxy settings&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=File:WebScarab_startup.png&amp;diff=6590</id>
		<title>File:WebScarab startup.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=File:WebScarab_startup.png&amp;diff=6590"/>
				<updated>2006-06-23T13:13:53Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: Screenshot showing WebScarab at startup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screenshot showing WebScarab at startup&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_WebScarab_Project&amp;diff=6589</id>
		<title>Category:OWASP WebScarab Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_WebScarab_Project&amp;diff=6589"/>
				<updated>2006-06-23T13:08:03Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the WebScarab Project'''&lt;br /&gt;
&lt;br /&gt;
WebScarab is a framework for analysing applications that communicate using the HTTP and HTTPS protocols. It is written in Java, and is thus portable to many platforms. WebScarab has several modes of operation, implemented by a number of plugins. In its most common usage, WebScarab operates as an intercepting proxy, allowing the operator to review and modify requests created by the browser before they are sent to the server, and to review and modify responses returned from the server before they are received by the browser. WebScarab is able to intercept both HTTP and HTTPS communication. The operator can also review the conversations (requests and responses) that have passed through WebScarab.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
There is no shiny red button on WebScarab, it is a tool primarily designed to be used by people who can write code themselves, or at least have a pretty good understanding of the HTTP protocol. If that sounds like you, welcome! Download WebScarab, sign up for the mailing list on the subscription page, and enjoy! You can read a [[WebScarab Tutorial | brief tutorial ]] to explain the basic workings.&lt;br /&gt;
&lt;br /&gt;
WebScarab is designed to be a tool for anyone who needs to expose the workings of an HTTP(S) based application, whether to allow the developer to debug otherwise difficult problems, or to allow a security specialist to identify vulnerabilities in the way that the application has been designed or implemented.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
You can download WebScarab from the [http://sourceforge.net/project/showfiles.php?group_id=64424&amp;amp;package_id=61823 OWASP Source Code Center at Sourceforge]. &lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
A framework without any functions is worthless, of course, and so WebScarab provides a number of plugins, mainly aimed at the security functionality for the moment. Those plugins include:&lt;br /&gt;
&lt;br /&gt;
* Fragments - extracts Scripts and HTML comments from HTML pages as they are seen via the proxy, or other plugins&lt;br /&gt;
&lt;br /&gt;
* Proxy - observes traffic between the browser and the web server. The WebScarab proxy is able to observe both HTTP and encrypted HTTPS traffic, by negotiating an SSL connection between WebScarab and the browser instead of simply connecting the browser to the server and allowing an encrypted stream to pass through it. Various proxy plugins have also been developed to allow the operator to control the requests and responses that pass through the proxy.&lt;br /&gt;
&lt;br /&gt;
* Manual intercept - allows the user to modify HTTP and HTTPS requests and responses on the fly, before they reach the server or browser.&lt;br /&gt;
&lt;br /&gt;
* Beanshell - allows for the execution of arbitrarily complex operations on requests and responses. Anything that can be expressed in Java can be executed.&lt;br /&gt;
&lt;br /&gt;
* Reveal hidden fields - sometimes it is easier to modify a hidden field in the page itself, rather than intercepting the request after it has been sent. This plugin simply changes all hidden fields found in HTML pages to text fields, making them visible, and editable.&lt;br /&gt;
&lt;br /&gt;
* Bandwidth simulator - allows the user to emulate a slower network, in order to observe how their website would perform when accessed over, say, a modem.&lt;br /&gt;
&lt;br /&gt;
* Spider - identifies new URLs on the target site, and fetches them on command.&lt;br /&gt;
&lt;br /&gt;
* Manual request - Allows editing and replay of previous requests, or creation of entirely new requests.&lt;br /&gt;
&lt;br /&gt;
* SessionID analysis - collects and analyses a number of cookies (and eventually URL-based parameters too) to visually determine the degree of randomness and unpredictability.&lt;br /&gt;
&lt;br /&gt;
* Scripted - operators can use BeanShell to write a script to create requests and fetch them from the server. The script can then perform some analysis on the responses, with all the power of the WebScarab Request and Response object model to simplify things.&lt;br /&gt;
&lt;br /&gt;
* Parameter fuzzer - performs automated substitution of parameter values that are likely to expose incomplete parameter validation, leading to vulnerabilities like Cross Site Scripting (XSS) and SQL Injection.&lt;br /&gt;
&lt;br /&gt;
* Search - allows the user to craft arbitrary BeanShell expressions to identify conversations that should be shown in the list.&lt;br /&gt;
&lt;br /&gt;
* Compare - calculates the edit distance between the response bodies of the conversations observed, and a selected baseline conversation. The edit distance is &amp;quot;the number of edits required to transform one document into another&amp;quot;. For performance reasons, edits are calculated using word tokens, rather than byte by byte.&lt;br /&gt;
&lt;br /&gt;
* SOAP - There is a plugin that parses WSDL, and presents the various functions and the required parameters, allowing them to be edited before being sent to the server.&lt;br /&gt;
&lt;br /&gt;
==Future development==&lt;br /&gt;
&lt;br /&gt;
Features will probably include:&lt;br /&gt;
&lt;br /&gt;
* Enhancing the SOAP plugin, improving support for complex schemas, and different encodings&lt;br /&gt;
&lt;br /&gt;
* Combining the Search and Compare plugins, so that you can compare only specific responses&lt;br /&gt;
&lt;br /&gt;
==Extensibility==&lt;br /&gt;
&lt;br /&gt;
As a framework, WebScarab is extensible. Each feature above is implemented as a plugin, and can be removed or replaced. New features can be easily implemented as well. The sky is the limit! If you have a great idea for a plugin, please let us know about it on the list. &lt;br /&gt;
&lt;br /&gt;
==Project Contributors==&lt;br /&gt;
&lt;br /&gt;
The WebScarab project is run by Rogan Dawes of Aspect Security. He can be contacted at rogan AT dawes.za.net&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Category:OWASP_WebScarab_Project&amp;diff=6582</id>
		<title>Category:OWASP WebScarab Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Category:OWASP_WebScarab_Project&amp;diff=6582"/>
				<updated>2006-06-23T11:45:45Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the WebScarab Project'''&lt;br /&gt;
&lt;br /&gt;
WebScarab is a framework for analysing applications that communicate using the HTTP and HTTPS protocols. It is written in Java, and is thus portable to many platforms. WebScarab has several modes of operation, implemented by a number of plugins. In its most common usage, WebScarab operates as an intercepting proxy, allowing the operator to review and modify requests created by the browser before they are sent to the server, and to review and modify responses returned from the server before they are received by the browser. WebScarab is able to intercept both HTTP and HTTPS communication. The operator can also review the conversations (requests and responses) that have passed through WebScarab.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
&lt;br /&gt;
There is no shiny red button on WebScarab, it is a tool primarily designed to be used by people who can write code themselves, or at least have a pretty good understanding of the HTTP protocol. If that sounds like you, welcome! Download WebScarab, sign up for the mailing list on the subscription page, and enjoy! You can read a brief tutorial [[WebScarab Tutorial | here]].&lt;br /&gt;
&lt;br /&gt;
WebScarab is designed to be a tool for anyone who needs to expose the workings of an HTTP(S) based application, whether to allow the developer to debug otherwise difficult problems, or to allow a security specialist to identify vulnerabilities in the way that the application has been designed or implemented.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
&lt;br /&gt;
You can download WebScarab from the [http://sourceforge.net/project/showfiles.php?group_id=64424&amp;amp;package_id=61823 OWASP Source Code Center at Sourceforge]. &lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
&lt;br /&gt;
A framework without any functions is worthless, of course, and so WebScarab provides a number of plugins, mainly aimed at the security functionality for the moment. Those plugins include:&lt;br /&gt;
&lt;br /&gt;
* Fragments - extracts Scripts and HTML comments from HTML pages as they are seen via the proxy, or other plugins&lt;br /&gt;
&lt;br /&gt;
* Proxy - observes traffic between the browser and the web server. The WebScarab proxy is able to observe both HTTP and encrypted HTTPS traffic, by negotiating an SSL connection between WebScarab and the browser instead of simply connecting the browser to the server and allowing an encrypted stream to pass through it. Various proxy plugins have also been developed to allow the operator to control the requests and responses that pass through the proxy.&lt;br /&gt;
&lt;br /&gt;
* Manual intercept - allows the user to modify HTTP and HTTPS requests and responses on the fly, before they reach the server or browser.&lt;br /&gt;
&lt;br /&gt;
* Beanshell - allows for the execution of arbitrarily complex operations on requests and responses. Anything that can be expressed in Java can be executed.&lt;br /&gt;
&lt;br /&gt;
* Reveal hidden fields - sometimes it is easier to modify a hidden field in the page itself, rather than intercepting the request after it has been sent. This plugin simply changes all hidden fields found in HTML pages to text fields, making them visible, and editable.&lt;br /&gt;
&lt;br /&gt;
* Bandwidth simulator - allows the user to emulate a slower network, in order to observe how their website would perform when accessed over, say, a modem.&lt;br /&gt;
&lt;br /&gt;
* Spider - identifies new URLs on the target site, and fetches them on command.&lt;br /&gt;
&lt;br /&gt;
* Manual request - Allows editing and replay of previous requests, or creation of entirely new requests.&lt;br /&gt;
&lt;br /&gt;
* SessionID analysis - collects and analyses a number of cookies (and eventually URL-based parameters too) to visually determine the degree of randomness and unpredictability.&lt;br /&gt;
&lt;br /&gt;
* Scripted - operators can use BeanShell to write a script to create requests and fetch them from the server. The script can then perform some analysis on the responses, with all the power of the WebScarab Request and Response object model to simplify things.&lt;br /&gt;
&lt;br /&gt;
* Parameter fuzzer - performs automated substitution of parameter values that are likely to expose incomplete parameter validation, leading to vulnerabilities like Cross Site Scripting (XSS) and SQL Injection.&lt;br /&gt;
&lt;br /&gt;
* Search - allows the user to craft arbitrary BeanShell expressions to identify conversations that should be shown in the list.&lt;br /&gt;
&lt;br /&gt;
* Compare - calculates the edit distance between the response bodies of the conversations observed, and a selected baseline conversation. The edit distance is &amp;quot;the number of edits required to transform one document into another&amp;quot;. For performance reasons, edits are calculated using word tokens, rather than byte by byte.&lt;br /&gt;
&lt;br /&gt;
* SOAP - There is a plugin that parses WSDL, and presents the various functions and the required parameters, allowing them to be edited before being sent to the server.&lt;br /&gt;
&lt;br /&gt;
==Future development==&lt;br /&gt;
&lt;br /&gt;
Features will probably include:&lt;br /&gt;
&lt;br /&gt;
* Enhancing the SOAP plugin, improving support for complex schemas, and different encodings&lt;br /&gt;
&lt;br /&gt;
* Combining the Search and Compare plugins, so that you can compare only specific responses&lt;br /&gt;
&lt;br /&gt;
==Extensibility==&lt;br /&gt;
&lt;br /&gt;
As a framework, WebScarab is extensible. Each feature above is implemented as a plugin, and can be removed or replaced. New features can be easily implemented as well. The sky is the limit! If you have a great idea for a plugin, please let us know about it on the list. &lt;br /&gt;
&lt;br /&gt;
==Project Contributors==&lt;br /&gt;
&lt;br /&gt;
The WebScarab project is run by Rogan Dawes of Aspect Security. He can be contacted at rogan AT dawes.za.net&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Project]]&lt;br /&gt;
[[Category:OWASP Tool]]&lt;br /&gt;
[[Category:OWASP Download]]&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Rdawes&amp;diff=6581</id>
		<title>User:Rdawes</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Rdawes&amp;diff=6581"/>
				<updated>2006-06-23T11:33:48Z</updated>
		
		<summary type="html">&lt;p&gt;Rdawes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rogan Dawes is a security consultant, employed by Aspect Security. He is also the author of WebScarab.&lt;/div&gt;</summary>
		<author><name>Rdawes</name></author>	</entry>

	</feed>