XSS注入
XSS注入
介绍:
XSS全称为Cross Site Scripting,为了和CSS分开简写为XSS,中文名为跨站脚本。该漏洞发生在用户端,是指在渲染过程中发生了不在预期过程中的JavaScript代码执行。XSS通常被用于获取Cookie、以受攻击者的身份进行操作等行为。
反射型XSS:
反射型一般通过点击链接来触发
举个栗子:代码为<?php echo "<p>hello, $_GET['a']</p>";?>
注入方式为:/?a=</p><script>alert("xss")</script><p>
通过前面的</p>来闭合代码中的<p>,在html中插入JavaScript代码<script>alert("xss")</script>来达到弹出xss的窗口,后面的<p>来闭合后面的</p>
XSS分类:
储存型XSS:
多储存在评论区,留言处。储存型XSS相对反射性XSS危害更大,攻击者可以把攻击载荷储存在数据库,造成持续攻击。
DOM XSS:
DOM型XSS不同之处在于DOM型XSS一般和服务器的解析响应没有直接关系,而是在JavaScript脚本动态执行的过程中产生的。
代码:
<html> <head> <title>DOM Based XSS Demo</title> <script> function xsstest() { var str = document.getElementById("input").value; document.getElementById("output").innerHTML = "<img src='"+str+"'></img>"; } </script> </head> <body> <div id="output"></div> <input type="text" id="input" size=50 value="" /> <input type="button" value="submit" onclick="xsstest()" /> </body> </html>
注入方式:x' onerror='javascript:alert(/xss/)
Blind XSS:
Blind XSS是储存型XSS的一种,它保存在某些存储中,当一个“受害者”访问这个页面时执行,并且在文档对象模型(DOM)中呈现payload。 它被称为Blind的原因是因为它通常发生在通常不暴露给用户的功能上。
XSS注入的危害:
- 用户的Cookie被获取,其中可能存在Session ID等敏感信息。若服务器端没有做相应防护,攻击者可用对应Cookie登陆服务器。
- 攻击者能够在一定限度内记录用户的键盘输入。
- 攻击者通过CSRF等方式以用户身份执行危险操作。
- XSS蠕虫。
- 获取用户浏览器信息。
- 利用XSS漏洞扫描用户内网。
XSS注入的一些绕过姿势:
1、大小写绕过 如:<sCrIpT>alert(1)</sCrIpT>
2、利用其他标签进行注入 如:<audio src=x onerror=alert(47)>
<img src=document.domain onerror=alert(document.domain)>
<a href=javascript:alert(document.domain)>M</a>
3、编码绕过 如:%3Cscript%3Ealert(%221%22)%3C/script%3E
4、拼接 如:<script>top["al"+"ert"](1)</script>
5、伪协议 如:<a href=javascript:/0/,alert(%22M%22)>M</a>