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

news2024/11/25 14:22:41

文章目录

  • 一、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.coloradmin.cn/o/881783.html

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

相关文章

win11如何去掉桌面快捷方式的小箭头(原创)

begin 打开注册表,Windows搜索框里搜 注册表编辑器(register editor),打开.. 找到 接着跟进.. 新建一个项名, Shell Icons 继续.... 值设为29 双击开页面 输入数据 %windir%\System32\shell32.dll,-51 到此,保存,到桌面,小箭头还是没有消失 ctrl shift esc 打开 任务管理…

Java课题笔记~ SpringMVC注解式开发

2.1 Controller 传统的配置式开发中的控制器Controller类必须实现Controller接口,并实现接口中的HandleRequest()方法,还需要再配置文件中配置处理器映射,且一个处理器(控制器)只能有一个方法,为了实现程序…

创建预留成本中心与指定工厂不一致

创建预留成本中心与指定工厂不一致 这种情况SAP会警告提示,可以强制通过。 如果公司不允许跨公司领料,可以将消息号 M7517的类型从W改为为E tcode:OMCQ SPRO->物料管理->库存管理和实际库存->定义系统消息的属性->系统信息设置

如何快速便捷收集市场信息?电商API来帮你

电商API(Application Programming Interface,应用程序编程接口)是为了促进不同电商平台之间数据共享和交互而设计的一种技术。通过使用电商API,可以快速便捷地收集市场信息,提升电商运营效率,增加竞争力。 …

根据指定日期获取周,月,季度,年的第一天和最后一天

1. 根据指定日期获取周,月,季度,年的第一天和最后一天 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 根据给定时间获取周、月度、季度、年度开始结束时间*…

OSPF在广播类型的网络拓扑中DR和BDR的选举

指定路由器(DR): 一个网段上的其他路由器都和指定路由器(DR)构成邻接关系,而不是它们互相之间构成邻接关系。 备份指定路由器(BDR): 当DR出现问题,由BDR接…

数字化转型能带来哪些价值?

数字化转型可以为个人、企业和整个社会带来广泛的价值。以下是数字化转型的一些主要优势: 1.提高效率和生产力:重复任务的自动化和简化流程可以提高效率和生产力。这使员工能够专注于更具战略性和增值性的活动。 2.增强的客户体验:数字化转…

荣耀X40 GT真机调试APP,HBuilder X刷新不到设备

今天使用荣耀X40GT进行真机调试App的时候,hbuilder怎么都刷不出来设备,经历一番风雨最终连接成功,特此记录一下。 我的设备Android版本12,MagicOS版本7.0,进行了如下配置: 1、打开“设置”-》“系统和更新”…

视频批量处理利器,轻松实现高效倒放功能

亲爱的视频编辑者们,您是否曾遇到需要将大量视频进行倒放处理的情况?但是手动一个个倒放操作繁琐又耗时,让您感到头疼?现在,我们为您推出一款全新的视频批量处理利器,让您的倒放操作变得轻松高效 第一步。…

深入源码分析kubernetes informer机制(四)DeltaFIFO

[阅读指南] 这是该系列第四篇 基于kubernetes 1.27 stage版本 为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 client-go中的存储结构DeltaFIFOdelta索引 keyqueue push操作delta push 去重 queue pop操作 总结 client-go中的存储结构…

雷军的代码,成为金山火苗,WPS的逆风翻盘,却要靠工具

苦练内功 “雷军写代码”冲上热搜。 作为中国科技界的大佬,一直享有“雷布斯”的称谓。 早年的成长经历也激励着一批批年轻人,挥洒青春,艰苦奋斗。 雷军在今年的演讲上一张海报,让很多再次看到了雷军早年写的“代码”&#xf…

CRMEB商城系统:便捷、安全、多样化的购物方式

商城系统是当今社会商业发展的重要组成部分,它以数字化、网络化的方式提供商品和服务。商城系统通过互联网技术,将商品和消费者紧密连接,方便了购物的流程和效率。 商城系统的特点之一是无国界化。传统实体商店通常受限于地理位置和时间&…

4.文件操作和IO

文章目录 1.认识文件1.1树型结构组织 和 目录1.2文件路径(Path)1.3其他知识 2.Java 中操作文件2.1File 概述2.1.1属性2.1.2构造方法2.1.3方法 2.2代码示例2.2.1示例1-get 系列的特点和差异2.2.2示例2-普通文件的创建、删除2.2.3示例3-普通文件的删除2.2.…

解决“ug12.0许可证错误-97”问题

解决“UG12.0许可证错误-97”问题的具体如下: 1、以管理员的身份打开UG许可证文件"lmtools",先点击"Config Services",再点击下图中箭头指向的”Browse"按钮。 2、进入“D:\PRogram Files\UGS\UGSLicensing”文件夹…

领航优配:EFT交易是什么意思?

EFT买卖是一种电子资金搬运买卖方法,EFT代表电子资金搬运,将现金从一个银行账户搬运到另一个银行账户。尽管这种买卖方法已经存在了几十年,但随着技能的开展,越来越多的人开始使用它。 从技能视点,EFT买卖是经过计算机…

drawio----输出pdf为图片大小无空白(图片插入论文)

自己在写论文插入图片时为了让论文图片放大不模糊,啥方法都试了,最后摸索出来这个。 自己手动画图的时候导出pdf总会出现自己的图片很小,pdf的白边很大如下如所示,插入论文的时候后虽然放大不会模糊,但是白边很大会显…

企望制造ERP系统 RCE漏洞复现

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 简介 企望制造纸箱业erp系统由深知纸箱行业特点和业务流程的多位IT专…

vue + vue-office 实现多种文件(docx、excel、pdf)的预览

支持多种文件( docx、excel、pdf)预览的vue组件库,支持vue2/3。也支持非Vue框架的预览。 github: 《仓库地址》 演 示: 《演示效果》 功能特色 一站式:提供docx、pdf、excel多种文档的在线预览方案,有它就够了简单&#xff1a…

ad+硬件每日学习十个知识点(35)23.8.15 (接口电路:RS232、RS485、RS422,单线协议UART->TTL)

文章目录 1.RS232的物理层2.RS232的三种连线方式3.DB9和RJ45(网口)线定义4.RS232的电路设计(tx端需要上拉)5.RS232芯片MAX3221的引脚功能6.什么是压摆率?(压摆率越大越好)7.为什么有了RS232之后,还需要RS48…

keil5突然编译输出框build output 不见了

今天keil5突然编译输出框build output 不见了,但可以编译和下载。 首先尝试,在view里面打开和关闭build output window,没有反应; 其次,点击window-reset view to defaults,果然build output又恢复了&#…