编译安装OWASP WebScarab

来源:互联网 发布:外贸怎么推广知乎 编辑:程序博客网 时间:2024/06/06 15:01

Sorry, 现在发现文档下面所说的编译方法已经不适用新的WebScarab了,新的编译方法参考另一篇文章:http://blog.csdn.net/eatmilkboy/article/details/7793244


最近在使用WebScarab的时候发现有个bug,这个bug本身很容易修复,只是为此无法使用直接下载的WebScarab的binary,必须重新编译一下。特把编译过程纪录下来。

 

下载源代码:

直接通过IE下载最新的snapshot:

http://dawes.za.net/gitweb.cgi?p=webscarab.git;a=tree

 

编译需求:

看了下说明文档,编译需要使用ANT。所以又下载了JDK1.6以及ANT1.8,在把JDK以及ANT得环境设置好之后准备开工。

 

开始编译:

把下载的WebScarab得源代码解压缩之后进入其目录,直接执行

ant

结果失败,报错说找不到ProGuard。

ProGuard是个什么东东?把WebScarab的ANT脚本打开之后发现是因为有个新的task需要ProGuard的jar包

<taskdef classpath="${proguard.location}/lib/proguard.jar" resource="proguard/ant/task.properties"/>


不管了,google一下之后在这里http://proguard.sourceforge.net/ 把目前最新的4.7下载了下来,解压缩之后发现里面有编译好的jar包。

 

再次编译:

仔细看了下WebScarab的编译脚本,定义proguad的task需要把proguard.jar放到${proguard.location}/lib/proguard.jar这个目录下面,proguard.location这个参数在编译脚本里面没有,需要在ANT命令里面指定。这样我就把把proguard.jar 复制到WebScarab解压目录的lib目录下面,再次执行

ant -Dproguard.location=.

OK,这次一切顺利,编译好的WebScarab在dist目录下面,直接执行

java -jar ./webscarab-selfcontained-[numbers].jar

就可以运行了。

 

修正的问题:

在src\org\owasp\webscarab\plugin\fuzz\Parameter.java, 第125行代码如下:

if (contentType.equals("application/x-www-form-urlencoded"))

这边是判断如果一个HTTP请求的HTTP content-type头是form请求,那么会试图解析HTTP body里面的参数,但是根据RFC2616 (http://www.ietf.org/rfc/rfc2616.txt):

Content-Type   = "Content-Type" ":" media-type

media-type     = type "/" subtype *( ";" parameter )

在后面还可以跟其他参数的,典型的例子是编码(如下图),按照代码里面的完全匹配的方式,这样会导致HTTP Body里面的参数无法被解释出来。

修正采用了一个很简单的办法,使用不完全匹配:

if (contentType.indexOf("application/x-www-form-urlencoded") >= 0)

虽然可能会有其他问题,但是至少我自己使用没有问题了微笑