Xss漏洞(跨站脚本攻击)
原理
通过网页插入恶意脚本,如前端的HTML和JavaScript。当用户浏览网页时,浏览器执行用户输入的JS代码,实现控制用户浏览器
危害
获取用户的cookie,利用cookie盗取用户对该网站的操作权限;
获取用户联系人列表,利用被攻击者的身份向特定的目标群发送垃圾信息
XSS的分类
XSS一般被分为三类:反射性XSS,存储型XSS,DOM型XSS
这三种类型的危害程度一般认为:存储型XSS>反射型XSS>DOM型XSS
反射型XSS | 反射型XSS我们可以理解为一次性的XSS,一般是通过url请求中插入JS代码,然后随着浏览器通过响应的方式传给用户,也可能是通过站内信息,比如聊天框中没有对输入过滤,输出转义,然后攻击者将恶意的JS代码发送给受害者,从而达到窃取用户信息比如cookie的目的。 反射型(非持久型):搜索框 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容) |
---|---|
存储型XSS | 存储型XSS我们可以理解为持续性的XSS,比如用户输入的信息会在服务器的后台存储,服务器并没有严格对输入过滤,输出转义的配置的话,那么一段恶意的JS将永久存储在服务器中,举个例子,我们都玩过论坛,贴吧之类的社区网站,此时有个攻击者将恶意的JS代码插入留言板内,那么只要是有人浏览至带有恶意JS代码的评论区内时,恶意的JS代码就会被浏览器信息解析,那么用户的信息就可能被攻击者窃取。如果此时管理员浏览至此,是不是cookie就会被窃取,攻击者就可以通过窃取的管理员cookie登录后台。所以XSS中存储型的危害最为致命,某歌曾经就有过存储型XSS漏洞。 存储型(持久型):发表文章的地方,留言板 代码是 存储在服务器中的,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie |
DOM型XSS | DOM型XSS是个特殊型的XSS,它是基于文档对象型Document Object Model的一种漏洞,DOM是一个与平台编程语言无关的接口,对于浏览里而言DOM文档就是一份XML文档,由客户端的脚本通过DOM动态地输出数据到页面而不是依赖于将数据提交给服务器端,而从客户端获得DOM中的数据在本地执行,因而仅从服务器端是无法防御的。 |
DOM型: 从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞 |
测试方法:
1.在数据输入界面,输入:<script>alert(/123/)</script>,保存成功后如果弹出对话框,表明此处存在一个XSS 漏洞。
2.把url请求中参数改为<script>alert(/123/)</script>,如果页面弹出对话框,表明此处存在一个XSS 漏洞。
3.使用xss平台/工具可以实现多种功能进行漏洞利用
防御:#安全修复方案
开启httponly,输入过滤,输出过滤等
1、服务端过滤用户输入的危险字符(<|>|%|#|\x|&|’|\)
2、对输出内容进行HTML实体编码(编码后类似a)
(回答输入过滤,输出编码也可以)
第一阶段:使用ESAPI
这是一个Apache开发的安全组件,主要用于解决SQL注入和恶意脚本注入。
使用ESAPI防止XSS攻击时,首先应当配置过滤器(注意在过滤器中chain.doFilter(..)方法中的Request对象进行包装,在包装类中对请求参数进行筛选操作);其次将过滤器注册到web.xml文件中;最后配置Request的包装类,在其中对请求信息进行过滤。
注意:开启ESAPI的防护功能时(value = ESAPI.encoder().canonicalize(value);),需要提前对要筛选的值进行URL解码(value = URLDecoder.decode(value);),否则会出现中文乱码。
第二阶段(可选):使用CSF(Content Security Policy)安全策略
CSF是一种白名单防御策略,所有不在名单内的资源都不被信任,有效的防止了通过外部的标签、脚本、JS文件等资源的入侵形式,详情请看http://www.ruanyifeng.com/blog/2016/09/csp.html,我也是在这位大佬的网站上学习的CSF.
使用方式:
1.通过<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">标签将CSP嵌入到页面中。但是这种做法会对所有页面添加一个过滤项,加长了页面的访问时间,降低了用户体验;我加到项目中的时候还出现了某些样式文件加载不全的现象,没有必要不建议这么做。
2.通过使用Nginx配置HTTP 头信息的Content-Security-Policy的字段,但是一般的公司都不允许更改Nginx,一旦Nginx做了某种配置,整个项目都受影响,这种方式基本没戏。
漏洞利用
XSS获取Cookie
XSS钓鱼获取用户密码
XSS获取键盘记录
XSS平台搭建xssplatform
Kali beef-xss
XSS小游戏解题思路/靶场
工具
Beef
kali自带
小旋风
xss漏洞利用平台
Xsstrike
XSStrike主要特点反射和 DOM Xss 扫描
多线程爬虫
Context分析
可配置的核心
检测和规避 WAF
老旧的 JS 库扫描
智能payload生成器
手工制作的HTML & JavaScript解析器
强大的fuzzing引擎
盲打 xss 支持
高效的工作流
完整的 HTTP 支持
Bruteforce payloads
Payload编码
漏洞容易出现的地方
留言板 评论区 订单 反馈
在有shell的情况下,如何使用xss实现对目标站的长久控制
后台登陆处加一段记录登陆账号密码的js,并判断是否登陆成功,就把账号和密码记录到一个生僻的路径文件中或者直接发到自己的网站中
标签:总结,xss,XSS,DOM,用户,JS,漏洞,过滤 From: https://www.cnblogs.com/xlvbys/p/17543352.html