前言:
准备智警杯的过程中,也不能掉下漏洞的学习。浅浅学习一下关于xss的一些知识
何为xss?
全名跨站脚本攻击,也属于注入,属于代码注入的一种。由于未进行严格的过滤,haker可以将恶意代码注入到网页当中,其他用户在访问该网页时会执行恶意代码。
xss有什么危害?
盗取用户账号
窃取用户cookie 冒充用户身份进入网站
劫持用户会话,执行任意操作
刷流量,执行弹窗广告
传播蠕虫病毒
记录一定限度的键盘输入
xss虽然不能直接产生攻击,但是由于其攻击的对象为用户,所以可以利用其作为跳板攻击
管理员用户。xss的危害取决于两点,一是漏洞本身(xss的类型和过滤策略)二是攻击者本身所能
构造的payload
xss的验证方式:
常见的验证方式,利用js代码弹窗功能
<script>alert(/xss/)</script>
<script>confirm('xss')</script>
<script>prompt("xss")</script>
xss的分类
一般来说可以将xss分为三种类型,反射型,存储型,DOM型
反射型xss
代码不会被存储,每次攻击需要重新进行代码注入(通过get或者post方式提交数据)
使用dvwa 来理解这个选择反射型注入
使用验证payload
成功执行弹窗
说明存在xss漏洞
分析其源代码:
注入后其源代码 构造的payload被注入到源代码处
切换到其他页面后 再回到这个页面
注入的代码已经不存在了。
证明反射型xss是非持久性的。
攻击流程
对于反射型xss来说 需要攻击者构造好恶意的链接,诱使用户点击并执行链接,类似于钓鱼的方法,来窃取用户的信息
存储型xss
危害最大的xss 构造的恶意代码会被存储到数据库当中,用户每次访问这个页面都会执行恶意代码。
dvwa 存储型为例
当我们 构造好payload 点击提交
页面出现弹窗
切换到其他的页面 再次切换回来依旧出现弹窗
在页面源代码当中找到 构造的payload
说明构造的payload 被长时间存储
攻击流程:
攻击者将恶意代码 写入浏览器,浏览器返回后端将其存储到服务器当中,当其他用户访问页面时就会执行恶意攻击的代码。
DOM型xss
什么是DOM?
DOM,文档对象模型 一种api接口,让用户可以使用js对html进行修改
用于处理html和xml 可以将html和xml处理成DOM树,从而利用js对其进行修改
三大节点:
元素节点 文本节点 属性节点
直接对前端的html进行注入
如上图 利用dom向html当中写入数据,在这个过程当中。可以构造payload将恶意代码写入html当中,用户访问时就会触发恶意代码。(也是非持久型)
攻击流程:
在这个过程当中 纯前端操作没有后端的参与。
选择low难度的 DOM型xss 可以看到只有一个选择提交的功能模块,没有可以写入代码的模块。
加载url 可以看到 使用get方法提交了一个default参数
在url上构造xss的payload 出现弹窗验证存在xss漏洞
查看其页面源代码:
将get获取到的参数deault的值 进行转化之后 使用DOM写入到html当中
对于DOM类型的xss来说,可以用来获取网页当中一些存储隐私信息的节点。