snuck是一款自动化的漏洞扫描工具,它可以帮助你扫描Web应用中存在的XSS漏洞。snuck基于Selenium开发,并且支持Firefox、Chrome和IE浏览器。
snuck与传统的Web安全扫描工具有显著的区别,它会尝试利用特殊的注入向量来破坏网站的XSS过滤器,并通过这种方法提高漏洞的检出成功率。基本上说,snuck所采用的检测方法与iSTAR漏洞扫描工具的检测方法较为相似,但snuck针对的是特定的XSS过滤器。
snuck是一款采用Java编程语言开发的开源软件,该工具遵循Apache2.0许可证,你可以使用svn下载该工具。
svn checkout https://github.com/mauro-g/snuck snuck
下载完成之后,你可以使用build.xml文件来让Ant帮你编译源文件,并生成一个jar文件。
cd snuck ant jar
运行完上面这两个命令之后,你就可以得到一个可执行的jar文件了。
除此之外,你也可以直接下载一个可执行的jar文件【 传送门 】。但是这个文件是2012年10月份发布的,所以它可能不支持新版的浏览器。
snuck不需要特定的依赖环境,你只需要安装一个JVM和Firefox浏览器即可。如果你想用Chrome/Chromium来进行测试的话,你需要下载一个特定的服务器【 传送门 】,这个服务器将作为Web浏览器和snuck扫描引擎之间的通信桥梁。对于IE浏览器也是一样,你也需要下载一个服务器【 传送门 】。当前版本的snuck可以在IE9上正常工作,但是在旧版本的IE浏览器中可能会出现问题,开发小组目前也正在努力解决这些问题。当然了,snuck采用Java编写,因此你可以在任何平台上使用它。
当你下载或生成了这个jar文件之后,你需要熟悉一下snuck的命令行选项,具体如下所示:
> java -jar snuck.jar Usage: snuck [-start xmlconfigfile ] -config xmlconfigfile-report htmlreportfile [-d # ms_delay] [-proxy IP:port] [-chrome chromedriver ] [-ie iedriver][-remotevectors URL] [-stop-first] [-reflected targetURL -p parameter_toTest] [-no-multi] Options : -start path to login use case (XML file) -config path to injection use case (XML file) -report report file name (html extension isrequired) -d delay (ms) between each injection -proxy proxy server (IP: port) -chrome perform a test with Google Chrome,instead of Firefox. It needs the path to the chromedriver -ie perform a test with InternetExplorer, instead of Firefox. Disable the built in XSS filter in advance -remotevectors usean up-to-date online attack vectors source instead of the local one -stop-first stop the test upon a successful vector isdetected -no-multi deactivate multithreading for the reverseengineering process - a sequential approach will be adopted -reflected perform a reflected XSS test (withoutwriting the XML config file) -p HTTP GET parameter to inject(useful if -reflected is set) -help show this help menu
该工具自带了一套XSS攻击向量集,你可以直接在项目目录下的paylaods文件夹中找到这些测试向量。该目录包含下列四个文件:
1. html_payloads:它存储了用于生成警告弹窗的HTML标签。你可以直接在向量集中使用占位符,比如说,测试用例为<scriptsrc=data:,%alert%></script>,该工具便会随机选择一个javascript alert来替代攻击向量中的%alert%。同理,类似<svgonload=%uri%>这样的向量也是类似的。
2. js_alert:存储了大量的javascript代码来触发警告弹窗,例如alert(1)或eval(alert(2))等等。
3. uri_payloads:存储了大量恶意URI,例如javascript:alert(1)。
4. expression_alert_payloads:它存储了大量恶意payload。例如expression(URL=0),此时,snuck会强制生成一个以字符“0”结尾的重定向URL,并用它来尝试捕获漏洞。