XSS基础知识

什么是xss

XSS(Cross Site Scripting)跨站脚本,较合适的方式应该叫做跨站脚本攻击。是代码注入的一种,由于程序员在编写代码时,未对用户输入的数据进行处理、或者处理不当,从而导致恶意payload代码被执行。
简单来说是对非预期输入的过分信任!

XSS分类

反射型

攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发漏洞

在这里插入图片描述

常用语句

存储型(持久型)

payload被存储到数据库内,每次只要访问就可以被触发

语句:

在这里插入图片描述

DOM型

DOM型XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞。

在这里插入图片描述

在这里插入图片描述

XSS有什么危害?

1.钓鱼欺骗:最典型的就是利用目标网站的反射型跨站脚本漏洞将目标网站重定向到钓鱼网站,或者注入钓鱼JavaScript以监控目标网站的表单输入,甚至发起基于DHTML更高级的钓鱼攻击方式。

2.网站挂马:跨站时利用IFrame嵌入隐藏的恶意网站或者将被攻击者定向到恶意网站上,或者弹出恶意网站窗口等方式都可以进行挂马攻击。

3.身份盗用:Cookie是用户对于特定网站的身份验证标志,XSS可以盗取到用户的Cookie,从而利用该Cookie盗取用户对该网站的操作权限。如果一个网站管理员用户Cookie被窃取,将会对网站引发巨大的危害。

4.XSS蠕虫:XSS 蠕虫可以用来打广告、刷流量、挂马、恶作剧、破坏网上数据、实施DDoS攻击等

5.盗取网站用户信息:当能够窃取到用户Cookie从而获取到用户身份使,攻击者可以获取到用户对网站的操作权限,从而查看用户隐私信息。

6.劫持用户Web行为:一些高级的XSS攻击甚至可以劫持用户的Web行为,监视用户的浏览历史,发送与接收的数据等等。

常见地方如下

1、搜索框
2、URL地址栏
3、留言板
4、登录处
5.输入输出的地方

常见语句

<svgοnlοad=prompt(1);>

M

<img/src/οnerrοr=alert(1)>

<img src=x οnerrοr=alert(‘1’)>

<marquee/onstart=confirm(1)>

link

XSS绕过

1、大小写绕过
使用大小写来绕过,如script变成ScrIpT

2、双写绕过
黑名单过滤script关键字时,可以使用双写绕过<scr

3、闭合标签
有时候要关闭标签来使XSS生效。
比如:“>

4、url编码绕过

可以转换为:

%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%22%78%73%73%22%29%3b%3c%2f%73%63%72%69%70%74%3e

5、空格/回车/Tab
许多过滤匹配特殊的标签,包括起始与结束尖括号。但是,许多浏览器接受结束括号前的空白符,允许攻击者轻易避开这种过滤。例如:

6、双尖括号绕过
一些过滤匹配成对的起始与结束尖括号,提取其中的内容,并将这些内容与标签名称黑名单进行比较。可以通过使用多余的括号避开过滤。
<

7、空字节绕过
即使空字节后面的文本仍然在应用程序的响应中返回,但如果遇到空字节,一些过滤会停止处理字符串。在被过滤的表达式前插入一个URL编码的空字节即可避开这种过滤。
foo%00

8、构造事件绕过
如果不能依靠属性进行跨站,那么还可以利用事件处理函数
<input type = “button” value = “clickme” οnclick=“alert(‘click me‘)” />
事件既能让JS脚本运行,自然也可以执行跨站,另外像onerror、onMouseover等都可利用的是事件处理函数

漏洞修复

1、输入检查
白名单
同时在客户端JavaScript中和服务器端代码中实现相同的输入检查

2、输出检查
HTML编码
js转义

3、HttpOnly
浏览器禁止页面的JavaScript访问带有HttpOnly属性的cookie。HttpOnly解决的是XSS后的Cookie劫持攻击

猜你喜欢

转载自blog.csdn.net/weixin_52263461/article/details/112669786