十一、避开客户端控件——收集用户数据

文章目录

  • 一、HTML表单
    • 1.1 长度限制
    • 1.2 基于脚本的确认
    • 1.3 禁用的元素
  • 二、浏览器拓展
    • 2.1 常见的浏览器拓展技术
    • 2.2 攻击浏览器扩展的方法

一、HTML表单

  应用程序使用客户端控件限制客户端提交的数据的另一个主要控制对象,是由客户端计算机自己收集的数据。

  HTML表单是一种最简单、最常用的机制,主要用于从用户收集输入并将其提交给服务器。用户在已命名的文本字段中输入数据,再将它们以名/值对的形式提交给服务器,是这种方法的最基本应用。但是,表单还有其他用法,即对用户提交的数据施加限制或执行确认检查

1.1 长度限制

  以下图表单代码为例:

在这里插入图片描述

  规定quantity字段的最大长度为1。浏览器将阻止用户在输人字段中输入任何超过1个字符的值,而且服务器端应用程序也认为它收到的quantity参数将小于1。但是,通过拦截提交表单的请求,并在其中输人任意值;或拦截包含表单的响应,并删除maxlength属性,就可以轻易避开这种限制

  渗透测试步骤:

  • 寻找包含maxlength属性的表单元素。提交大于这个长度但其他格式合法的数据(例如,如果应用程序要求数字,则提交一个数值)。
  • 如果应用程序接受这个超长的数据,则可以据此推断出服务器并没有采用客户端确认机制。
  • 根据应用程序随后对参数进行的处理,可以通过确认机制中存在的缺陷利用其他漏洞,如SQL注入、跨站点脚本或缓冲区溢出。

1.2 基于脚本的确认

  HTML表单内置的输入确认机制极其简单,不足以对各种输人执行相关确认。例如,用户注册表单中可能包含姓名、电子邮件地址、电话号码和邮政编码字段,所有这些字段都要求不同的输人。因此,开发者通常在脚本中执行定制的客户端输人确认。例如:

在这里插入图片描述
  form标签的onsubmit属性指示浏览器在用户单击“提交”按钮时运行ValidateForm函数,并且只有在该函数返回“真”时才提交表单。这种机制帮助客户端阻止提交表单的企图,对用户的输入执行定制的确认检查,进而决定是否接受该输入。上面示例中采用的确认机制极其简单,只检查在amout字段中输入的数据是否为介于1到50之间的整数。

  这种类型的客户端控制非常容易解除,但通常足以禁用浏览器中的JavaScript。如果是这样,并且忽略onsubmit属性,那么,不需要任何定制确认就可以提交表单。

  但是,如果应用程序依靠客户端脚本执行正常操作(如构造部分用户界面),完全禁用JavaScript可能会终止应用程序。另一种更加合理的办法是在浏览器的输人字段中输入一个良性(已知无恶意)值,然后用代理服务器拦截确认后提交的表单,并将其中的数据修改成想要的值。这是解除基于JavaScript的确认的最简单有效的方法

  另外,可以拦截包含JavaScript确认程序( validation routine)的服务器响应,修改其脚本使其失效——在前面的示例中,更改每一个ValidateForm函数使其返回“真”即可。


  渗透测试步骤

  • 确定任何在提交表单前使用客户端JavaScript进行输入确认的情况。
  • 通过修改所提交的请求,在其中插人无效数据,或修改确认代码使其失效,向服务器提交确认机制通常会阻止的数据。
  • 与长度限制一样,确定服务器是否采用了和客户端相同的控件;如果并非如此,确定是否可利用这种情况实现任何恶意意图。
  • 注意,如果在提交表单前有几个输人字段需要由客户端确认机制检验,需要分别用无效数据测试每一个字段,同时在所有其他字段中使用有效数据。如果同时在几个字段中提交无效数据,可能服务器在识别出第一个无效字段时就已经停止执行表单,从而使测试无法到达应用程序的所有可能代码路径。

1.3 禁用的元素

  如果HTML表单中的一个元素标记为禁用,它会在屏幕上出现,但以灰色显示,并且无法像常规控件那样编辑或使用。而且,提交表单时,表单也不向服务器传送这个元素。以下面的表单为例:

在这里插入图片描述

  这个表单中的产品价格位于禁用的文本字段中,并出现在屏幕上,如下图所示。

  提交该表单时,应用程序只向服务器传送quantity参数。但是,存在禁用字段表示应用程序最初可能已经使用过price参数(可能在开发阶段用于测试目的)。这个参数很可能已经提交给服务器并经过应用程序处理了。在这种情况下,应当测试服务器端应用程序是否仍然会处理这个参数。如果确实如此,可以尝试对这种情况加以利用。


渗透测试步骤

  • 在应用程序的每一个表单中寻找禁用的元素。尝试将发现的每一个元素与表单的其他参数一起提交给服务器,确定其是否有效。
  • 通常,如果提交元素被标记为禁用,其按钮即以灰色显示,表示相关操作无效。这时应该尝试提交这些元素的名称,确定应用程序是否在执行所请求的操作前执行服务器端检查。
  • 注意,在提交表单时,浏览器并不包含禁用的表单元素;因此,仅仅通过浏览应用程序的功能以及监控由浏览器发布的请求并不能确定其中是否含有禁用的元素。要确定禁用的元素,必须监控服务器的响应或在浏览器中查看页面来源
  • 还可以使用Burp Proxy中的HTML修改功能自动重新启用应用程序中的任何禁用的字段。

二、浏览器拓展

  除HTML表单外,另一种收集、确认并提交用户数据的主要方法是使用在浏览器扩展中运行的客户端组件(如Java或Flash)。浏览器扩展可以通过输入表单、或者在某些情况下通过与客户端操作系统的文件系统或注册表交互,以各种不同的方式收集数据。在将收集到的数据提交给服务器之前,它们可以对这些数据执行任何复杂的确认和处理。

2.1 常见的浏览器拓展技术

  常见的浏览器扩展技术包括Java applet、Flash和Silverlight。由于这些技术的用途基本相同,因此,它们也提供类似的安全功能:

  • 它们均编译成中间字节码;
  • 它们在提供沙盒执行环境的虚拟机中运行;
  • 它们可能会使用远程框架,这类框架采用序列化来传输复杂数据结构,或通过HTTP传送对象。

(1)Java
  Java applet在Java虚拟机(JVM)中运行,并采用由Java安全策略应用的沙盒。因为Java在Web发展的早期就已存在,并且其核心概念仍基本不变,因此,有大量知识和工具可用于对Java applet实施攻击或进行防御。
(2)Flash
  Flash对象在Flash虚拟机中运行。和Java applet一样, Flash也要在主机上的沙盒中运行。此前,Flash主要用于传送动画内容。但随着较新版本的推出,现在Flash已经能够传送成熟的桌面应用程序。
3.Silverlight
  Silverlight是微软开发的与Flash类似的产品。同样,该产品主要用于启动各种桌面应用程序,允许Web应用程序在浏览器内的沙盒环境中提供精简的.NET体验。从技术上讲,任何兼容.NET的语言,从C#到Python,都可用于开发Silverlight,但C#是开发Silverlight最常用的语言。

2.2 攻击浏览器扩展的方法

  针对使用浏览器扩展组件的应用程序实施攻击时,需要采用以下两种常用的技巧。

  • 可以拦截并修改浏览器扩展组件提出的请求及服务器的响应。在许多情况下,这是对浏览器扩展组件进行测试的最简单也是最快速的方法,但这时你可能会遇到各种限制。正在传输的数据可能经过模糊处理或加密,或者使用专门针对所用技术的方案进行了序列化。仅仅查看组件生成的流量,可能会忽略一些关键的功能或业务逻辑,而这些功能或逻辑只需对组件本身进行分析就可以发现。另外,在正常使用拦截代理服务器时也可能会遇到障碍,但是,通常情况下,通过仔细配置,完全可以克服这些障碍。
  • 可以直接针对组件实施攻击,并尝试反编译它的字节码,以查看其源代码;或者使用调试器与组件进行动态交互。这种方法的优点在于,如果进行得非常彻底的话,将能够确定组件支持或引用的所有功能。还能修改组件向服务器提交的请求中的关键数据,而无论这些数据采用何种模糊处理或加密机制。其缺点在于,这种方法可能相当费时,并且需要深入了解浏览器扩展组件所使用的技术和编程语言。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python-OpenCV中的图像处理-图像直方图

Python-OpenCV中的图像处理-图像直方图 图像直方图统计直方图绘制直方图Matplotlib绘制灰度直方图Matplotlib绘制RGB直方图 使用掩膜统计直方图直方图均衡化Numpy图像直方图均衡化OpenCV中的直方图均衡化CLAHE 有限对比适应性直方图均衡化 2D直方图OpenCV中的2D直方图Numpy中2D…

Medical Isolated Power Supply System in Angola

安科瑞 华楠 Abstract: Diagnosis and treatment in modern hospitals are inseparable from advanced medical equipment, which are inseparable from safe and reliable power supply. Many operations often last for several hours, and the consequences of a sudden pow…

欢迎光临,博客网站

欢迎光临:YUNYE博客~https://yunyeblog.com/更多的文章,供大家参考学习!!!

Mybatis 源码 ④ :TypeHandler

文章目录 一、前言二、DefaultParameterHandler1. DefaultParameterHandler#setParameters1.1 UnknownTypeHandler1.2 自定义 TypeHandler 三、DefaultResultSetHandler1. hasNestedResultMaps2. handleRowValuesForNestedResultMap2.1 resolveDiscriminatedResultMap2.2 creat…

VSCode使用SSH无密码连接Ubuntu

VSCode使用SSH无密码连接Ubuntu 前提条件: 1. 能够正常使用vscode的Remote-ssh连接Ubuntu 2. Ubuntu配置静态ip(否则经常需要修改Remote-ssh的配置文件里的IP) 链接-> ubuntun 18.04设为静态ip(.net模式,可连接…

初学HTML:在线简易画板设计。

最近在HTML&#xff0c;记录下一点点成果。 设计了一个简易画板&#xff0c;通过HTML的Canvas元素实现一个在线画板&#xff0c;用户可以在上面绘制图形或涂鸦。 下面是运行效果&#xff1a; 下面是代码&#xff1a; <!DOCTYPE html> <html> <head><ti…

蓝绿灰度发布的介绍

背景介绍 蓝绿灰度发布 介绍 蓝绿部署中&#xff0c;一共有两套系统&#xff1a;一套是正在提供服务系统(也就是上面说的旧版)&#xff0c;标记为绿色&#xff1b;另一套是准备发布的系统&#xff0c;标记为蓝色。两套系统都是功能完善的&#xff0c;并且正在运行的系统&…

安全 1自测

常见对称加密算法&#xff1a; DES&#xff08;Data Encryption Standard&#xff09;&#xff1a;数据加密标准&#xff0c;速度较快&#xff0c;适用于加密大量数据的场合&#xff1b; 3DES&#xff08;Triple DES&#xff09;&#xff1a;是基于DES&#xff0c;对一块数据用…

C语言刷题训练【第11天】

大家好&#xff0c;我是纪宁。 今天是C语言笔试刷题训练的第11天&#xff0c;加油&#xff01; 文章目录 1、声明以下变量&#xff0c;则表达式: ch/i (f*d – i) 的结果类型为&#xff08; &#xff09;2、关于代码的说法正确的是&#xff08; &#xff09;3、已知有如下各变…

linux——MongoDB服务

目录 一、MongoDB概述 相关概念 特性 应用场景 二、目录结构 三、默认数据库 admin local config 四、数据库操作 库操作 文档操作 五、MongoDB数据库备份 一、备份 mongodump mongoexport 二、恢复 mongorestore mongoimport ​编辑 一、MongoDB概述 MongoDB是…

Live Market是如何做跨境客户服务的?哪些技术赋能?

在面对不同的海外市场和用户群体时,如何进行有效地出海营销是跨境商家面临的挑战。其中消费者服务管理和卖家保障尤其关键&#xff0c;如何做好客户服务管理?包括处理好客户投诉,提升消费者满意度是所有跨境商家和品牌独立站卖家非常重视的问题。 在数字化浪潮席卷之下&#…

VictoriaMetrics部署及vmalert集成钉钉告警

1、部署VictoriaMetrics cd /usr/local wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.65.0/victoria-metrics-amd64-v1.65.0.tar.gz mkdir victoria-metrics && tar -xvzf victoria-metrics-amd64-v1.65.0.tar.gz && \ mv …

【视频笔记】解密RWKV线性注意力的进化过程

from&#xff1a; https://www.bilibili.com/video/BV1zW4y1D7Qg/?spm_id_from333.999.0.0&vd_source21cce77bb69d40a81e0d37999f2da0c2 文章目录 向量版 Self-attentionAFT 的线性AttentionRWKV的线性Attention 向量版 Self-attention 手动实现&#xff0c;可以看出 时间…

jpg图片太大怎么压缩?这样做轻松压缩图片

图片太大会给存储、分享带来麻烦&#xff0c;但其实现在压缩图片大小也不是什么难事&#xff0c;下面就给大家分享几个一直用的图片压缩方法&#xff0c;包含批量压缩、在线压缩、免费压缩等多种方式&#xff0c;大家按需自取哈~ 方法一&#xff1a;嗨格式压缩大师 这是一个可…

深入理解 go协程 调度机制

Thread VS Groutine 这里主要介绍一下Go的并发协程相比于传统的线程 的不同点&#xff1a; 创建时默认的stack大小 JDK5 以后Java thread stack默认大小为1MC 的thread stack 默认大小为8MGrountine 的 Stack初始化大小为2K 所以Grountine 大批量创建的时候速度会更快 和 …

phpstorm添加vue 标签属性绑定提示和提示vue的方法提示

v-text v-html v-once v-if v-show v-else v-for v-on v-bind v-model v-ref v-el v-pre v-cloak v-on:click v-on:keyup.enter v-on:keyup click change input number debounce transition :is :class把上面这些文字粘贴到点击右下角放大按钮 后的文本框里&#xff0c;然后保存…

【BASH】回顾与知识点梳理(二十二)

【BASH】回顾与知识点梳理 二十二 二十二. Linux 账号管理22.1 Linux 的账号与群组使用者标识符&#xff1a; UID 与 GID使用者账号/etc/passwd 文件结构/etc/shadow 文件结构 关于群组&#xff1a; 有效与初始群组、groups, newgrp/etc/group 文件结构有效群组(effective grou…

岛屿的最大面积(力扣)递归 JAVA

给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&#xff08;代表水&#xff09;包围着。 岛屿的面积是岛上值为 1 的…

前端:Vue.js学习

前端:Vue.js学习 1. 第一个Vue程序2. Vue指令2.1 v-if、v-else-if、v-else2.2 v-for2.3 事件绑定 v-on:2.4 v-model 数据双向绑定2.5 v-bind 绑定属性 3. Vue组件4. Vue axios异步通信5. 计算属性6. 插槽 slots7. 自定义事件内容分发 1. 第一个Vue程序 首先把vue.js拷贝到本地…

学习笔记|printf函数的实现|不同操作系统中的换行|数的进制:2进制、10进制、16进制转换|STC32G单片机视频开发教程(冲哥)|第五集:C语言基础

文章目录 1.C语言 printf函数的实现Tips&#xff1a;ASCII码表Tips&#xff1a;找不到头文件怎么办&#xff1f;主函数添加程序:常规用法:Tips&#xff1a;不同操作系统中的换行 ⒉数的进制:2进制、10进制、16进制.常见的对应&#xff1a;应用&#xff1a;整体端口的操作 3.C语…