XSS跨站脚本攻击
XSS漏洞原理
学习目标:
■掌握浏览器渲染前端页面的工作流程和简单的JavaScript语法。
■掌握反射型、 储存型、DOM型Xss的漏洞原理。
■掌握XSS漏洞所导致的危害。
JavaScript是一门编程语言
JavaScript (简称JS) 是- -种具有 函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。
JavaScript的常见功能:
1.嵌入动态文本于HTML页面
2.对浏览器事件做出响应
3.读写HTML元素
4.在数据被提交到服务器之前验证数据
5.检测访客的浏览器信息,控制cookies,包括创建和修改等
6.基于Node. js技术进行服务器端编程
什么是XSS漏洞
XSS全称跨站脚本(Cross Site Scripting),为了不和层叠样式表(CSS)混淆,故缩写为xSS,比较合适的方式应该叫做跨站脚本攻击。
跨站脚本攻击是一种常见的web安全漏洞, 它主要是指攻击者可以在页面中插入恶意脚本代码(Javascript代码),当受害者访问这些页面时,浏览器会解析并执行这些恶意代码,从而达到窃取用户身份/钓鱼/传播恶意代码等行为。
xss漏洞原理
与SQL注入类似,XSS的本质也是-种注入,XSS的本质其实是一种"HTML"注入,用户的输入被当做HTML代码执行,从而混淆了原本的语义,产生了新的语义。比如下图中是一个搜索框,黑客可以控制输入的内容,然后进行提交,那么实际在测试漏洞的时候,就可以把注入点的内容替换为Payload进行验证。
xss漏洞分类
存储型(持久型) 一般在留言板、用户发帖、用户回帖模块中
反射型(非持久型 一般在URL、搜索框中,也有在GET或POST的参数中
DOM型 是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种XSS漏洞
存储型xss漏洞
存储型XSS也叫持久型XSS,存储的意思就是Payload是有经过存储的,当-个页面存在存储型XSS的时候,XSS注入成功后,那么每次访问该页面都将触发XSS,如留言板:
1、插入留言=>内容存储到数据库
2、查看留言=>内容从数据库提取出来
3、内容在页面显示
反射型XSS漏洞
反射型XSS也叫非持久型XSS,反射型XSS是通过提交内容,然后不经过数据库,直接反射回显在页面上。
DOM型XSS漏洞
通过修改页面的DOM节点形成的XSS,称之为DOM Based xSS。 从效果来说,也是反射型。反射型或存储型是服务端将提交的内容反馈到了htm1源码内,导致触发xss。也就是说返回到htm1源码中可以看到触发xss的代码。
DOM型XSS只与客户端上的JavaScript交互,也就是说提交的恶意代码,被放到了JavaScript中执行,然
后显示出来。
XSS漏洞危害
●钓鱼(伪造登录框,页面)
●Cookie盗取
●获取IP段
●站点重定向
●获取客户端页面信息,例如邮件内容窃取
●XSS蠕虫
●……
XSS漏洞挖掘方式
学习目标:
■掌握XSS漏洞的挖掘方式。
■掌握挖掘xss漏洞过程中常见的绕过方式和常用的Payload。
如何寻找xss漏洞
●寻找WEB应用上的输入与输出口。例如网站输入框、URL参数等等。
●在可控参数中提交等攻击字符串,观察输出点是否对这些攻击字符串进行转义、过滤、消毒等处理。
●如果原样输出,那么必然存在XSS漏洞。
如何触发XSS漏洞
●在script标签中插入恶意代码。
●在事件中插入恶意代码。
●在协议中插入恶意代码。
●…
XSS漏洞利用方式
学习目标:
■掌握XSS攻击平 台的搭建和基础使用。
■掌握Beef平 台的搭建和基础使用。
■熟悉使用Xs漏洞盗取Cooki e伪造用户登录的攻击流程。
XSS攻击平台
创建JS代码,使用default.js作为模板, 修改URL地址为平台部署地址,点击生成Payload
XSS攻击成功后,当别人访问时触发JavaScript代码时,攻击平台就会收到客户端的相关信息。
Beef
Beef(The Browser Exploitation Framework Project )是WEB框架攻击平台。Beef利用简单的XSS漏洞, 通过一段编写好的JavaScript (hook. js)控制目标主机的浏览器,通过目标主机浏览器获得该主机的详细信息,并进一步扫描内网, 配合metasploit绝对是内网渗透一大杀器。
盗用Cookie实战
第一步:插入恶意JavaScript代码触发XSS漏洞,这里以Beef为攻击平台,DVWA作为含有漏洞的系统
第二步: Beef. 上线后查看客户端的Cookie信息,拿到代表用户身份凭证的PHPSESSID
第三步:使用一个新的浏览器或无痕模式访问DVWA,发现需要密码认证,使用F12打开浏览器开发具,修改Cookie值为第二步获取到的Cookie值,点击刷新后发现绕过登陆验证进入系统
XSS漏洞防御方式
学习目标:
掌握常见的XSS漏洞防御方式。
防御XSS漏洞的方法可以归纳为三个层面:
1、代码层面 输入过滤、输出编码(转义) ;配置Http0nly头
2、架构层面 部署安全设备,例如WAF和IDS
3、业务层面 控制客户端输入规则;控制输入的长度, 检测输入的合法性