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

Web安全系列(二):XSS 攻击进阶(初探 XSS Payload)

什么是 XSS Payload

上一章我谈到了 XSS 攻击的几种分类以及形成的攻击的原理,并举了一些浅显的例子,接下来,我就阐述什么叫做 XSS Payload 以及从攻击者的角度来初探 XSS 攻击的威力。

在黑客 XSS 攻击成功之后,攻击者能够对用户当前浏览的页面植入各种恶意脚本,通过恶意脚本来控制浏览器,这些脚本实质上就是 JavaScript 脚本(或者是其他浏览器可以运行的脚本),这种恶意植入且具有完成各种具体功能的恶意脚本就被称为 XSS Payload

初探 XSS Payload

一个最常见的 XSS Payload ,就是通过浏览器读取 Cookie 对象,进而发起 Cookie 劫持 攻击。

一般一个网站为了防止用户无意间关闭页面,重新打开需要重新输入账号密码繁杂的情况下,一般都会把登录信息(登录凭证)加密存储在 CooKie 中,并且设置一个超时时间,在此时间段内,用户利用自己账号信息随意进出该网站。如果该网站遭到 XSS Payload ,黑客盗取了该用户的 Cookie 信息,往往意味着该用户的登录凭证丢失了,换句话说,攻击者不需要知道该用户的账号密码,直接利用盗取的 Cookie 模拟凭证,直接登录到该用户的账户。

如下所示,攻击者先在一个社区发表一篇文章:

image

你有意无意点了一下 点我得大奖 这个时候,XSS Payload 就生效了:

image

image

XSS Payload会请求一个 img 图片,图片请求地址即为黑客的服务器地址, url 参数带上 Cookie ,我们在后台服务器接收到了这个请求:

image

这个时候,黑客就可以获取到此 Cookie,然后模拟 CooKie 登陆。

当然传输的内容可以是任何内容,只要能获取到的,全都可以传输给后台服务器。

如何利用窃取的 Cookie 登陆目标用户的账户呢?这和利用自定义Cookie访问网站的过程是一样的,参考如下:

当没有登陆的时候,Cookie 内容是空的:

image

当我们手动添加 Cookie 后,登陆的内容如下:

image

此时,我们就已经登陆上了该用户的账户。

所以,通过 XSS 攻击,可以完成 Cookie 劫持 攻击,直接登陆进用户的账户。

其实都不需要带上参数,黑客就能获取到所有数据,这是因为当前 Web 中,Cookie 一般是用户凭证,浏览器发起的所有请求都会自动带上 Cookie 。

image

image

那么该如何预防 Cookie 劫持 呢?

Cookie 的 HttpOnly 标识可以有效防止 Cookie 劫持,我们会在稍后章节具体介绍。

相关文章:

  • 3点建议:如何在面试中回答“你最大的成就”
  • 简单的node爬虫练手,循环中的异步转同步
  • 活跃银行×××之二:创新的恶意软件Osiris
  • “数据中心运维管理VIP学习群”问题汇总(一)
  • Oracle 数据文件及其管理
  • Oh!MongoDB日志从文本穿越成了图片?咋整!
  • AtCoder Grant Contest 10.F 博弈
  • Centos7安装Openresty和orange
  • 在ubuntu18实践
  • 非常全面的vim配置文件
  • EXCHANGE DAG环境如何排除ISCSI使用的网络适配器
  • PHP 的 SAPI 是个什么东西
  • 爬虫框架Scrapy入门——爬取acg12某页面
  • Seafile网盘专业版部署(debian8、ubuntu系统)
  • 七分钟理解 Java 的反射 API
  • [译]CSS 居中(Center)方法大合集
  • 0基础学习移动端适配
  • 30秒的PHP代码片段(1)数组 - Array
  • C++类的相互关联
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • JavaScript类型识别
  • Redis 中的布隆过滤器
  • Ruby 2.x 源代码分析:扩展 概述
  • 工作中总结前端开发流程--vue项目
  • 事件委托的小应用
  • 推荐一个React的管理后台框架
  • 微信支付JSAPI,实测!终极方案
  • 运行时添加log4j2的appender
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 通过调用文摘列表API获取文摘
  • #《AI中文版》V3 第 1 章 概述
  • #Java第九次作业--输入输出流和文件操作
  • #NOIP 2014#Day.2 T3 解方程
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (MATLAB)第五章-矩阵运算
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • .Family_物联网
  • .Net Memory Profiler的使用举例
  • .NET Standard 的管理策略
  • .NET导入Excel数据
  • .NET开发不可不知、不可不用的辅助类(一)
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @font-face 用字体画图标
  • [BeginCTF]真龙之力
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C++]priority_queue的介绍及模拟实现
  • [CLickhouse] 学习小计
  • [error] 17755#0: *58522 readv() failed (104: Connection reset by peer) while reading upstream
  • [HackMyVM]靶场 VivifyTech
  • [Notes]python argparse模块
  • [one_demo_16]直接插入排序的demo