谈谈对于XSS跨站脚本攻击的学习(1)

前言

最近学完XXE之后,对于这种恶意代码注入的漏洞提起来兴趣,想着现在正好趁热打铁,学习一下XSS,之前做题的时候看大师傅的wp一愣一愣的,不明白个所以然,这次系统的学习一下,在本文中将介绍有关XSS的知识点以及原理,也会介绍XSS的绕过姿势(这里参考了别的大师傅的思路,也给出了我自己的理解),希望给正在学习XSS的你有帮助。

1.概念

跨站脚本攻击(Cross-Site Scripting,XSS)是一种常见的Web安全漏洞,攻击者通过在受害者的浏览器中注入恶意脚本来执行恶意行为。这种攻击通常利用Web应用程序没有对用户输入的数据进行足够的过滤和验证。

2.攻击原理

XSS跨站脚本攻击的原理是利用Web应用程序对用户输入数据的不足过滤和验证,将恶意脚本注入到受害者的浏览器中,使其在浏览器中执行。
攻击者通常会将恶意脚本嵌入到Web页面中的某个位置,比如输入框、评论框、搜索框等等,然后诱使用户访问这个被注入了恶意脚本的页面。当用户访问页面时,恶意脚本就会在用户的浏览器中被执行,从而执行攻击者预先设定好的恶意行为,比如窃取用户的Cookie信息、伪造用户的网站行为等等。

3.XSS的分类

存储型XSS:

持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,插入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,用户访问该页面的时候触发代码执行。这种XSS比较危险,容易造成蠕虫,盗窃cookie

一般是将恶意代码通过交互界面上传到后端,然后从而上传到数据库中,当管理员admin查询数据库的信息时,恶意脚本又从后端到了前端,这也就是存储型XSS的数据流通。

这种XSS攻击方式相比于反射型XSS更加容易进行攻击,它可以把恶意脚本存储在数据库,实现自动化攻击

一般在做CTF题目中的具体思路就是利用GET、POST或者抓包在Referer,Cookie的地方植入我们的恶意脚本
源码示例

存储型XSS示例

欢迎使用我们的网站

请输入您的评论:

提交 <?php // 处理评论表单的提交 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $comment = $_POST['comment']; // 将评论存储到数据库中 $sql = "INSERT INTO comments (content) VALUES ('$comment')"; mysqli_query($conn, $sql); } ?>

评论区

  • <?php // 显示所有评论 $result = mysqli_query($conn, "SELECT * FROM comments"); while ($row = mysqli_fetch_assoc($result)) { echo "
  • " . $row['content'] . "
  • "; } ?>

如果我们在评论区尝试最基础的JavaScript代码,

会成功弹窗
在这里插入图片描述
在这里插入图片描述

反射型XSS:

非持久化,需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。反射型XSS大多数是用来盗取用户的Cookie信息。

一般就是题目给一个标签形成的输入框,然后我们在输入框里输入我们的恶意脚本,需要用户进行触发才能进行攻击,在前端输入恶意脚本,后端接受,然后再在前端显示,这也就是反射型XSS的数据流通。

这种XSS攻击方式是最简单的一种XSS攻击方式,它需要用户手动触发才能执行。

在CTF中,反射型XSS算是比较常见的一种XSS攻击方式了,题目会给一个输入框,然后绕过过滤,执行恶意脚本
源码示例

反射型XSS示例

欢迎使用我们的网站!

请输入您的姓名:

提交

您好,<?php echo $_GET['name']; ?>!

在接受name传参的值时,html页面是没有任何保护措施的,用户如果在这里执行了JavaScript代码,也会直接输出,从而进行XSS攻击
在这里插入图片描述在这里插入图片描述

DOM型XSS:

不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。

这种XSS攻击是不经过后端的,它也算是一种反射型XSS,但是它的数据流通过程比较简单,就是在前端url添加我们的恶意脚本,然后直接在页面输出了
源码示例

DOM-based XSS

欢迎来到我的blog!

在这里插入图片描述

可以发现我们通过name传参的JavaScript代码已经嵌入到HTML页面中了,也就

完成了DOM型XSS攻击

题外话

介绍一下我最近发现的一个比较罕见的XSS攻击方式
JSONP XSS:

这个其实也是反射型XSS的一种攻击方式。

这是一种比较罕见的一种XSS的攻击方式,它利用JSONP协议实现,一般浏览器都会设置CSP同源策略限制,不允许直接调用其他域名的API,这就出现了JSONP协议,JSONP协议通过利用浏览器对

如果我们有一个API端口为"http://Evi1s7.com/api",它返回一个JSONP响应,其中包含一个名为callback的函数,该函数将数据作为参数传递。

callback({ “name”: “John”, “age”: 30 });

攻击者可以构造一个恶意URL,以便在受害者浏览器中执行恶意脚本:

https://Evi1s7.com/api?callback=attackerFunction

这会导致我们之前的API端口返回的JSON发生了修改

attacjerFunction({ “name”: “John”, “age”: 30 });

攻击者可以在页面中定义attackerFunction,然后注入恶意脚本:

利用上述恶意脚本,我们可以获得John的sessionID值,窃取Cookie从而实现无密码登录,实现XSS攻击

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值