👏 Hi! 我是 Yumuing,一个技术的敲钟人
👨💻 每天分享技术文章,永远做技术的朝拜者
📚 欢迎关注我的博客:Yumuing's blog
你还在手动测试网站 XSS 安全漏洞检查吗?那么麻烦,又不一定全面解决,为了你的产品,为了在公司摸点鱼,不如尝试一下 XSS 自动扫描工具,为你的产品、工作保驾护航,减低你的工作压力,一起来试试吧!
XSpear
一款基于 RubyGems 的 XSS 漏洞扫描器。能够进行常见的 XSS 扫描测试以及参数分析。
项目地址:hahwul/XSpear: 强大的XSS扫描和参数分析工具&gem (github.com)
主要特点:
基于模式匹配的XSS扫描
检测无头浏览器的alert、confirm、prompt事件
针对XSS保护绕过来测试请求与响应
测试XSS盲注(XSS Hunter、ezXSS、HBXSS)
动态/静态分析:寻找SQL错误模式、分析安全Header、分析其他Header、测试URI路径
扫描元文件
基于Ruby开发(GEM库)
显示table base cli-report、filtered rule和testing raw query(url)
测试选中的参数
支持命令行JSON输出格式
支持Verbose 0-3级
支持Config文件
针对任意攻击向量支持自定义回调代码
安装工具(Linux)
Gem 是一个管理 Ruby 库和程序的标准包,它通过 Ruby Gem 源来查找、安装、升级和卸载软件包,非常的便捷。
- ruby 是一种语言,是某些软件包代码的执行环境。而gem是管理这些基于ruby程序的程序。
- Mac 自带 gem
我们将采用以上工具协助安装 XSpear ,其工具安装使用教程如下:
- yum 安装:
yum install rubygems -y
安装源配置:
- 列出安装源:
gem sources -l
- 添加安装源 XXX:
gem sources -a XXX
,如:https://gems.ruby-china.com - 删除安装源 XXX:
gem sources -r XXX
- 更新安装源缓存:
gem sources -u
- 列出安装源:
更新 gem 本身:
gem update --system
- 更新 gem 所有软件包:
gem update
完成 gem 安装之后,就可以开始尝试安装 XSpear,步骤如下:
安装相关依赖:
gem install colorize gem install selenium-webdriver gem install terminal-table gem install progress_bar
安装最新版本:
gem install XSpear
安装特定版本:
- 到 GitHub 下载对应版本项目
- 跳转(cd)到项目下载文件夹:
gem install XSpear-{version}.gem
将此行添加到应用程序的 Gemfile:
gem 'XSpear'
- 执行工具:
bundle
XSpear cli使用
Usage: xspear -u [target] -[options] [value]
[ e.g ]
$ ruby a.rb -u 'https://www.hahwul.com/?q=123' --cookie='role=admin'
[ Options ]
-u, --url=target_URL [required] Target Url
-d, --data=POST Body [optional] POST Method Body data
--headers=HEADERS [optional] Add HTTP Headers
--cookie=COOKIE [optional] Add Cookie
--raw=FILENAME [optional] Load raw file(e.g raw_sample.txt)
-p, --param=PARAM [optional] Test paramters
-b, --BLIND=URL [optional] Add vector of Blind XSS
+ with XSS Hunter, ezXSS, HBXSS, etc...
+ e.g : -b https://hahwul.xss.ht
-t, --threads=NUMBER [optional] thread , default: 10
-o, --output=FILENAME [optional] Save JSON Result
-v, --verbose=1~3 [optional] Show log depth
+ Default value: 2
+ v=1 : quite mode
+ v=2 : show scanning log
+ v=3 : show detail log(req/res)
-h, --help Prints this help
--version Show XSpear version
--update Update with online
输出结果说明:
- (I)NFO:获取信息(例如sql错误,过滤规则,反射的参数等...)
- (V)UNL:易受攻击的XSS,已检查警报/提示/确认与Selenium
- (L)OW:低级问题
- (M)EDIUM:中等水平问题
- (H)IGH:高级别问题
扫描模式:
0:完全模式(仅显示结果)
1:显示进度条
[*] analysis request.. [*] used test-reflected-params mode(default) [*] creating a test query [for reflected 2 param + blind XSS ] [*] test query generation is complete. [249 query] [*] starting XSS Scanning. [10 threads] [#######################################] [249/249] [100.00%] [01:05] [00:00] [ 3.83/s] ... you see report
2:显示扫描日志
[*] analysis request.. [I] [22:42:41] [200/OK] [param: cat][Found SQL Error Pattern] [-] [22:42:41] [200/OK] 'STATIC' not reflected [-] [22:42:41] [200/OK] 'cat' not reflected <script>alert(45)</script> [I] [22:42:41] [200/OK] reflected rEfe6[param: cat][reflected parameter] [*] used test-reflected-params mode(default) [*] creating a test query [for reflected 2 param + blind XSS ] [*] test query generation is complete. [249 query] [*] starting XSS Scanning. [10 threads] [I] [22:42:43] [200/OK] reflected onhwul=64[param: cat][reflected EHon{ any} pattern] [-] [22:42:54] [200/OK] 'cat' not reflected <img/src onerror=alert(45)> [-] [22:42:54] [200/OK] 'cat' not reflected <svg/onload=alert(45)> [H] [22:42:54] [200/OK] reflected <script>alert(45)</script>[param: cat][reflected XSS Code] [V] [22:42:59] [200/OK] found alert/prompt/confirm (45) in selenium!! '"><svg/onload=alert(45)>[param: cat][triggered <svg/onload=alert(45)>] ... you see report
3:显示扫描详细日志
[*] analysis request.. [-] [22:56:21] [200/OK] http://testphp.vulnweb.com/listproducts.php?cat=123 in url [ Request ] { "accept-encoding"=>["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"], "accept"=>["*/*"], "user-agent"=>["Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0"], "connection"=>["keep-alive"], "host"=>["testphp.vulnweb.com"]} [ Response ] { "server"=>["nginx/1.4.1"], "date"=>["Sun, 29 Dec 2019 13:53:23 GMT"], "content-type"=>["text/html"], "transfer-encoding"=>["chunked"], "connection"=>["keep-alive"], "x-powered-by"=>["PHP/5.3.10-1~lucid+2uwsgi2"]} [-] [22:56:21] [200/OK] 'STATIC' not reflected [-] [22:56:21] [200/OK] cat=123rEfe6 in url ... [*] used test-reflected-params mode(default) [*] creating a test query [for reflected 2 param + blind XSS ] [*] test query generation is complete. [249 query] [*] starting XSS Scanning. [10 threads] ... [ Request ] { "accept-encoding"=>["gzip;q=1.0,deflate;q=0.6,identity;q=0.3"], "accept"=>["*/*"], "user-agent"=>["Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0"], "connection"=>["keep-alive"], "host"=>["testphp.vulnweb.com"]} [ Response ] { "server"=>["nginx/1.4.1"], "date"=>["Sun, 29 Dec 2019 13:54:36 GMT"], "content-type"=>["text/html"], "transfer-encoding"=>["chunked"], "connection"=>["keep-alive"], "x-powered-by"=>["PHP/5.3.10-1~lucid+2uwsgi2"]} [H] [22:57:33] [200/OK] reflected <keygen autofocus onfocus=alert(45)>[param: cat][reflected onfocus XSS Code] ... you see report
以上参数可在此命令后添加:xspear -u "网站地址" -v {扫描模式}
测试基本使用结束,具体详细使用教程可看下一篇文章,我将以实例进行说明,欢迎关注本博主。