XSS漏洞总结 附带burp xss检测插件使用
XSS的定义 XSS(Cross Site Script)跨站脚本攻击最常见的Web应用程序安全漏洞之一它指的是恶意攻击者往web页面中插入恶意JS代码,当用户浏览该页
XSS的定义
XSS(Cross Site Script)跨站脚本攻击最常见的Web应用程序安全漏洞之一它指的是恶意攻击者往web页面中插入恶意JS代码,当用户浏览该页面时,嵌入web页面中的JS代码就会被执行,从而产生危害。XSS属于客户端攻击,受害者最终是用户(网站管理人员也属于用户之一)
XSS产生的原因
程序对输入和输出的控制不够严格,导致“精心构造”的脚本输入后,在输到前端时被浏览器当作有效代码解析执行从而产生危害
注意:JavaScript加载外部的代码文件可以是任意扩展名(无扩展名也可以),如: XSS的危害 劫持用户cookie框架钓鱼挂马键盘记录 XSS的分类 反射型 反射型XSS也被称为非持久型xss,是现在最容易出现的一种xss漏洞。当用户访问一个带有xss代码的URL请求时,服务器端接收数据后处理,然后把带有xss代码的数据发送到浏览器,浏览器解析这段带有xss代码的收据后,最终造成xss漏洞。攻击者需要诱使用户点击该链接 存储型 存储型xss又被称为持久型xss,存储型xss是最危险的一种跨站脚本允许用户存储数据的web应用程序都可能会出现存储型xss漏洞,当攻击者提交一段xss代码后,被服务器端接收并存储,当攻击者再次访问某个页面时,这段xss代码被程序读出来响应给浏览器,造成xss跨站攻击。存储型xss相比较于反射型xss、DOM型xss,具有更高的隐蔽性,也具有更大的危害性。与其他两种xss相比最大的区别是,这种不需要用户手动触发。 DOM型 DOM的全称为 Document Object Model,即文档对象模型,DOM通常用于代表在HTML、XHTML和XML中的对象使用DOM可以允许程序和脚本动态的访问和更新文档的内容、结构和样式。DOM规定 整个文档是一个节点 每个HTML标签是一个元素节点 包含在HTML元素中的文本是文本节点 每个HTML属性是一个属性节点 节点与节点之间都有等级关系DOM型XSS和反射型XSS、存储型XSS的差别在于DOM型XSS的代码并不需要服务器参与,触发XSS靠的是浏览器端的DOM解析,完全是客户端的事情 XSS的可能出现的地方 HTML contextAttribute ContextURL ContextStyle ContextScript Context XSS的测试方法 手工检测 选择有特殊意义的的字符‘“<>()等 提交后查看源代码,看是否被转义最重要的是考虑哪里有输入,输入的数据在什么地方输出 自动化工具 burp插件 xssValidator XSS的绕过方式 前端限制绕过大小写绕过拼凑绕过编码绕过注释干扰后台绕过 修复建议 对输入进行过滤,输出进行html实体编码java第三方组件支持过滤xss漏洞在 cookie 中设置 HttpOnly 属性,使用js脚本将无法读取到 cookie 信息使用白名单机制 xssValidator的使用 1.需要先安装环境 Phantomjs 下载:Download PhantomJS 下载xss.js:NetSPI/xssValidator: This is a burp intruder extender that is designed for automation and validation of XSS vulnerabilities. (github.com) 上边的两个链接都要下载~(两个文件放在同一个文件夹下) 下载好之后把phantomjs.exe加入变量(步骤:1.右击此电脑(我的电脑),选择属性。 2.点击高级系统设置3.选择环境变量4.点击Path选项,并进行编辑。 5.选择新建。 6.添加环境变量所在路径,点击确定即可。) 在这里输入‘cmd 并回车打开命令行’ 执行命令 phantomjs.exe xss.js(这一步很重要,执行之后不要关闭窗口) burp里边安装这个插件 安装完成之后就可以使用了 使用方法 1.把数据包右键发送到 intruder 2.加入想要测试的位置 3.调整配置 选择xss 这里随机加入一串字符 这里也修改一下,和上边的字符串保持一致 修改完之后点击start attack开始扫描 如果成功的话,这里会打勾 双击可以看到具体的信息