存储型XSS与DOM型XSS

本文深入讲解了存储型XSS及DOM型XSS的工作原理、测试方法及防御手段,并提供了具体的实施案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

存储型XSS:

输入的恶意代码会存到网站的数据库里,具有长久性

同源策略(Cookie是共用的):

同协议、同端口、同域名/IP

窃取Cookie流程:

读取Cookie:document.Cookie

发送Cookie:ajax异步传输(不刷新当前页面)

当然,这么搞的话,需要一点条件,你的前端技术得好,而且还需要有一个公网IP,所以前辈们搞了一个XSS平台

XSS平台:集成了XSS攻击代码和接收端的工具

在网上随便找一个XSS平台,或者你们可以自己搭建一个。找到之后,注册登录,点击我的项目、创建,名称和描述你们自己发挥,点击下一步,然后就是选择模块,基本上默认模块就够用了,然后点击下一步,就会生成一段代码,下滑到最下面,我们会看到一串JS代码,将这个代码插入到你认为存在XSS的地方,就能偷到Cookie了

 存储型XSS测试方法:

见框就插:<img src='' onerror=alert(1) />

在留言板、上传文件的文件名、或者在注册的时候、报错信息之类的,都可以插

当然,插的时候要注意闭合,不然会把页面插崩

接下来进入靶场,这里使用的是FineCMS 5.3.0版本

这个CMS会记录错误日志,假如我们访问一个不存在的页面,他就会记录下来,这个c=后面的内容,我们是可以控制的,那么我们是不是可以在这里打一个XSS呢

 我们输入c=hello&m=<script>alert(1)</script>,然后就会出现弹窗

 接下来就是利用XSS平台生成的代码,直接插进去,然后等待管理员访问,就能窃取到他的Cookie

打到Cookie之后,我们就可以进入后台,看到后台记录的错误日志了

 

 DOM型XSS:

DOM-XSS漏洞是基于文档对象模型的一种漏洞

DOM:是一个沟通的渠道,和DOM沟通可以控制浏览器,核心是JS去操纵浏览器,它是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新网页内容、结构和样式,处理后的结果能够成为显示页面的一部分

调用DOM:

document.cookie        读取当前页面的Cookie

document.lastmodified        获取当前页面的最后修改时间(识别伪静态)

document.write        向文档写入HTML或者JS代码(DOM XSS常见的存在形式)

document.domain        获取当前页面域名

网页一般分为动态、静态、伪静态

我们打开一个DOMXSS的HTML页面,查看页面源码

 

 indexOf() 可返回某个指定的字符串值在字符串中首次出现的位置

unescape() 对通过escape()编码的字符串进行解码

substring() 提取字符串中介于指定下标两者之间的字符

我们直接输入?name=<script>alert(1)<script>,页面就会弹窗,以后寻找DOMxss就可以随便输入一些东西,然后查看网页源代码,搜索有没有document.write(,如果有的话,就可能存在XSS

 

我们再打开一个HTML页面查看网页源代码

 可以看到有一个表单标签,onclick,当点击的时候触发

function  自定义一个函数

document.getElementById("zkaq")  定位id为zkaq的地方

innerHTML= Hi  将读取到的内容替换为Hi

我们输入?name=<img src="#" onerror=alert(1) />,就能弹窗了

 我们进入第三个HTML页面,查看网页源代码

 location.hash  用来获取或设置页面的标签值,获取描点后的值

# 描点 ,点击某个东西,就会跳到指定的地方,和目录差不多

 location.hash.substr(1)  获取描点的值,从第二位开始取

 eval()  将字符串当做代码执行

我们输入#alert(1),页面就会弹窗

 以上就是典型的DOMXSS

document.write(支持Native编码)

innerHTML

eval

XSS防御:

1、过滤法(过滤输入、过滤输出)

2、转义法(HTML实体化)

3、开启http-only(禁止JS读取Cookie)

http-only绕过:IE浏览器访问或者找到一个能输出cookie的点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值