简介
开源的一款JavaScript的模糊测试工具,由SamuelGroß编写,使用swift语言开发。
链接:https://github.com/googleprojectzero/fuzzilli/
ubuntu 16.04使用
安装swift
1 2 3
| apt-get install clang-4.0 clang++-4.0 libicu-dev ln /usr/bin/clang-4.0 /usr/bin/clang ln /usr/bin/clang++-4.0 /usr/bin/clang++
|
去官网https://swift.org下载最新的匹配ubuntu的版本,这里下载的是16.04版本,使用wget下载
1
| wget https://swift.org/builds/swift-4.2.3-release/ubuntu1604/swift-4.2.3-RELEASE/swift-4.2.3-RELEASE-ubuntu16.04.tar.gz
|
下载之后进行解压
1 2
| mkdir ~/swift tar -xvzf swift-4.2.3-RELEASE-ubuntu16.04.tar.gz -C ~/swift
|
添加环境变量路径,
1.执行如下命令
1
| export PATH=~/swift/swift-4.2.3-RELEASE-ubuntu16.04/usr/bin:$PATH
|
2.在~/.bashrc文件添加上面的代码并运行如下代码
下载编译fuzzilli
1 2 3
| git clone https://github.com/googleprojectzero/fuzzilli.git cd fuzzilli swift build -c release -Xlinker='-lrt'
|
下载编译webkit
从github上clone下载,在切换到指定提交记录了,然后打上给的patch文件
1 2 3 4 5
| git clone https://github.com/WebKit/webkit git checkout 8d7c264869ecbdd56fb46aa5762d82c318f39feb -b fuzz patch -p1 < webkit.patch cp fuzzilli/Targets/JavaScriptCore/fuzzbuild.sh . ./fuzzbuild.sh
|
如果 clone 失败可以使用如下方法,第一次只拉取最新的一次提交版本,第二次在获取全部版本,具体命令如下:
1 2
| git clone --depth=1 https://github.com/WebKit/webkit git fetch --unshallow
|
官方的编译方式可以参考如下:https://trac.webkit.org/wiki/BuildingGtk
运行fuzzilli
1 2
| sysctl -w 'kernel.core_pattern=|/bin/false' swift run -c release -Xlinker='-lrt' FuzzilliCli --profile=jsc /webkit/FuzzBuild/Debug/bin/jsc
|
总结
IL中间层语言非常简单易学,此工具可以fuzz开源的Js引擎,但是需要修改一定的源代码。
参考
- https://medium.com/@agavatar/open-source-swift-on-ubuntu-linux-cd00e697dff0
- https://trac.webkit.org/wiki/BuildingGtk