[理论-学习]Web安全-XSS-基础01

声明:

由于笔者能力有限,难免出现各种错误和漏洞。全文仅作为个人笔记,仅供参考。

笔记内容来源于各类网课。

环境:

DVWA的XSS(low)

一、XSS漏洞定义

跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

XSS可能存在的位置:

  • GET,POST中的参数
  • HTTP的头部
  • JSON数据中

二、XSS漏洞的分类

1. 反射型XSS

又称为非持久性XSS,这种攻击往往具有一次性。

攻击者通过邮件等形式将包含XSS代码的链接发送给正常用户,当用户点击时,服务器接受该用户的请求并进行处理,然后把带有XSS的代码发送给用户。用户浏览器解析执行代码,触发XSS漏洞。
例如:

<?php
echo $_ GET["uname"];
?>

当用户访问url?uname=<script> alert("hello' );</script>时,触发代码,弹出对话框。

在DVWA的XSS(Reflected)中。

我们输入用户名jack。 

会将用户名解析、展示出来,我们可以尝试构建JS语句,看是否有XSS存在。

?name=<img src=x onerror=alert(1);>#

可以成功被执行。我继续尝试获取Cookie。

?name=<img src=x onerror=alert(document.cookie);>#

2. 存储型XSS

存储型XSS又称持久型XSS,攻击脚本存储在目标服务器的数据库中,具有更强的隐蔽性
攻击者在论坛、博客、留言板中,发帖的过程中嵌入XSS攻击代码,帖子被目标服务器存储在数据库中。当用户进行正常访问时,触发XSS代码。

在DVWA的XSS(Stored)中:

我们输入一组正常的数据。是使用POST提交数据。

txtName=jack&mtxMessage=hi%2Cjack

分析发现,我们再次刷新页面,或者关闭浏览器重新打开这个页面,数据依然存在。

可以判断这里提交的数据会存储在服务器上。我们可以尝试构建JS语句,实现存储型XSS。

但是Name有输入限制,最多10个字符,我们打开F12,定位到Name后的输入框,将maxlength属性删除或置空即可。

这样就没有输入限制了。

txtName = <img src=x onerror=alert(document.cookie);>
mtxMessage = <img src=x onerror=alert(1);>

3. DOM型XSS

DOM型XSS全称Document Object Model,使用DOM动态访问更新文档的内容、结构及样式。

DOM结构图:

HTML标签都是节点,节点组成了节点树。通过HTML DOM可以对树上的所有节点进行修改。
服务器响应不会处理攻击者脚本,而是用户浏览器处理这个响应时,DOM对象就会处理XSS代码,触发XSS漏洞。
在DVWA的XSS(DOM)中:

正常使用,测试一下。

 我们的选择,会被传人到default的参数中。我们修改default参数的值。

?default=test

输入的参数值会被反弹到DOM中。我们尝试将JS代码弹入DOM中。

?default=<script>alert(1);</script>

可以发现我们的js代码,插入到DOM中了并且被成功执行。

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值