前言:XSS漏洞挖掘分为:黑盒测试和白盒测试
黑盒:不断去用构造字符串来验证漏洞.白盒:分析源代码检测XSS漏洞.语法,词法,污点分析来检测漏洞
<!–more–>
一.黑盒测试
1.人工测试,在一切可以输入的地方输入“XSS payload”测试用例,提交之后,查看网站是否解析了输入的XSS payload
思路: 日常搜集XSS cheat sheet,标号之后,一一去测试,如果无效,再让输入特殊字符看过滤情况,根据页面返回值在做调整.
2.自动化工具 XSSTRIKE
DOM XSS扫描,基于正则扫描敏感函数,存在一定误判,WAF检测绕过,爬虫,HTML&JS动态解析引擎验证
工具git地址 :https://github.com/s0md3v/XSStrike
xss检测工具2: noxss结合使用
https://github.com/lwzSoviet/NoXss
DOM XSS主要是对代码分析,正则匹配,暴力枚举,
可以使用:
1)headless chrome无界面浏览器进行检测
2.)QTwebkit
3.)PhantomJS
DOMinator:在输入输出函数加HOOK 发现有用户可控数据输出到SINK漏洞就会触发警告,发现率高
二.白盒测试
污点分析原理:检测用户输入数据,去追踪传播过程,检测是否传递给危险输出函数,对XSS就是控制页面内容或者执行JS输出函数有ECHO EVAL等
污染源->检测过滤->敏感函数->漏洞告警
PHP代码审计:
$_GET $_POST $_COOKIE $_FILES 文件上传变量 $_SERVER 服务器环境 路径 $_REQUEST 包含GET POST COOKIE
XSS基本防御:
1)白名单限制/黑名单
2)把常用的XSS payload的字符串加进去检测
3)开启Httponly在一定程度上可以方式JS窃取COOKIE