八、解析应用程序——分析应用程序

news2025/1/16 16:05:06

文章目录

  • 一、确定用户输入入口点
    • 1.1 URL文件路径
    • 1.2 请求参数
    • 1.3 HTTP消息头
    • 1.4 带外通道
  • 二、确定服务端技术
  • 2.1 提取版本信息
    • 2.2 HTTP指纹识别
    • 2.3 文件拓展名
    • 2.4 目录名称
    • 2.5 会话令牌
    • 2.6 第三方代码组件
  • 小结

  枚举尽可能多的应用程序内容只是解析过程的一个方面。分析应用程序的功能、行为及使用的技术,确定它暴露的关键受攻击面,并开始想出办法探查其中可供利用的漏洞,这项任务也同样重要。值得研究的一些重要方面如下。

  • 应用程序的核心功能:用于特定目的时可利用它执行的操作。
  • 其他较为外围的应用程序行为,包括站外链接、错误消息、管理与日志功能、重定向使用等。
  • 核心安全机制及其运作方式,特别是会话状态、访问控制以及验证机制与支持逻辑(用户注册、密码修改、账户恢复等)。
  • 应用程序处理用户提交的输入的所有不同位置:每个URL、查询字符串参数、POST数据、cookie以及类似内容。
  • 客户端使用的技术,包括表单、客户端脚本、厚客户端组件(Java applet、ActiveX控件和Flash)和cookie。
  • 服务器端使用的技术,包括静态与动态页面、使用的请求参数类型、SSL使用、Web服务
    器软件、数据库交互、电子邮件系统和其他后端组件。
  • 任何可收集到的、关于服务器端应用程序内部结构与功能的其他信息(客户端可见的功能和行为的后台传输机制)

一、确定用户输入入口点

  在检查枚举应用程序功能时生成的HTTP请求的过程中,可以确定应用程序获取用户输人(由服务器处理)的绝大部分位置。需要注意的关键位置包括以下几项。

  • 每个URL字符串,包括查询字符串标记。
  • URL查询字符串中提交的每个参数。
  • POST请求主体中提交的每个参数。
  • 每个cookie。
  • 极少情况下可能包括由应用程序处理的其他所有HTTP消息头,特别是user-Agent、Referer、Accept、Accept-Language和Host消息头。

1.1 URL文件路径

  通常,查询字符串之前的URL部分并不被视为是进入点,因为人们认为它们只是服务器文件系统上的目录和文件的名称。但是,在使用REST风格的URL的应用程序中,查询字符串之前的URL部分实际上可以作为数据参数,并且和进入点一样重要,因为用户输入就是查询字符串本身。

典型的REST风格的URL可以采用以下格式:
http://eis/shop/browse/electronics/iPhone3G/
在这个示例中,字符串electronics和iPhone3G应被视为存储搜索功能的参数。

1.2 请求参数

  多数情况下,在URL查询字符串、消息主体和HTTP cookie中提交的参数都是明显的用户输入进入点。但是,一些应用程序并不对这些参数使用标准的name=value格式,而是使用定制的方案。定制方案采用非标准查询字符串标记和字段分隔符,甚至可能在参数数据中嵌入其他数据方案(如XML)。例如:

  • /dir/file;foo=bar&foo2=bar2;
  • /dir/file?foo=bar$foo2=bar2;
  • /dir/file/foo%3dbar%26foo2%3dbar2;
  • dir/foo.bar/file;
  • /dir/foo=bar/file;
  • /dir/file?param=foo:bar;
  • /dir/file?data=83cfoo%3ebar%3c*2ffoo%3e%3cfoo2%3ebar2%3c82ffoo2%3e。

1.3 HTTP消息头

  许多应用程序执行定制的日志功能,并可能会记录HTTP消息头(如Referer和User-Agent )的内容。应始终将这些消息头视为基于输入的攻击的可能进入点。

  一些应用程序还对Referer消息头进行其他处理。例如,应用程序可能检测到用户已通过搜索引擎到达,并提供针对用户的搜索查询的定制响应。一些应用程序可能会回应搜索术语,或者尝试突出显示响应中的匹配表达式。一些应用程序则通过动态添加HTML关键字等内容,并包含搜索引擎中最近的访问者搜索的字符串,以提高它们在搜索引擎中的排名。

  应用程序向通过不同设备(如笔记本电脑、移动电话、平板电脑)进行访问的用户呈现不同的内容,应用程序通过检查user-Agent消息头实现这一目的。通过伪造流行移动设备的user-Agent消息头,攻击者可以访问其行为与主要界面不同的简化用户界面。由于这种界面通过服务器端应用程序中的不同代码路径生成,并且可能并未经过严格的安全测试。

1.4 带外通道

  最后一类用户输入进入点是带外通道,应用程序通过它接收攻击者能够控制的数据。如果只是检查应用程序生成的HTTP流量,攻击者可能根本无法检测到其中一些进入点,发现它们往往需要全面了解应用程序所执行的各种功能。通过带外通道接收用户可控制的数据的Web应用程序包括:

  • 处理并显示通过SMTP接收到的电子邮件消息的Web邮件应用程序;
  • 具有通过HTTP从其他服务器获取内容功能的发布应用程序;
  • 使用网络嗅探器收集数据并通过Web应用程序界面显示这些数据的入侵检测应用程序;
  • 任何提供由非浏览器用户代理使用的API接口(如果通过此接口处理的数据与主Web应用程序共享)的应用程序,如移动电话应用程序。

二、确定服务端技术

2.1 提取版本信息

  许多Web服务器公开与Web服务器软件本身和所安装组件有关的详细版本信息。例如,HTTPServer消息头揭示大量与安装软件有关的信息:

在这里插入图片描述

  除server消息头外,下列位置也可能揭露有关软件类型和版本的信息:

  • 建立HTML页面的模板;
  • 定制的HTTP消息头;
  • URL查询字符串参数。

2.2 HTTP指纹识别

  从理论上说,服务器返回的任何信息都可加以定制或进行有意伪造,Server消息头等内容也不例外。大多数应用程序服务器软件允许管理员配置在server HTTP消息头中返回的旗标。但,蓄意破坏的攻击者仍然可以利用Web服务器的其他行为确定其所使用的软件。Httprecon工具是一款HTTP指纹识别工具,以不同的可信度报告各种可能的Web服务器。

2.3 文件拓展名

  URL中使用的文件扩展名往往能够揭示应用程序执行相关功能所使用的平台或编程语言。例如:

  • asp——Microsoft Active Server Pages
  • aspx——Microsoft ASP.NET
  • jsp—Java Server Pages
  • cfm—Cold Fusion
  • php—PHP语言
  • d2w—WebSphere
  • pl-—Perl语言
  • py-Python语言
  • dll—-—通常为编译型本地代码(C或C++)
  • nsf或ntf————Lotus Domino。

  即使应用程序在它公布的内容中并不使用特定的文件扩展名,但我们一般还是能够确定服务器是否执行支持该扩展名的技术。例如,如果应用程序上安装有ASP.NET,请求一个不存在的.aspx文件将返回一个由ASP.NET框架生成的错误页面。

在这里插入图片描述

  但是,请求一个扩展名不同的不存在的文件将返回一个由Web服务器生成的常规错误消息。
在这里插入图片描述

  之所以出现上述不同的行为,是因为许多Web服务器将特殊的文件扩展名映射到特定的服务器端组件中,不同的组件处理错误的方式(包括请求不存在的内容)也各不相同。

2.4 目录名称

  一些子目录名称常常表示应用程序使用了相关技术。例如:

  • servlet—Java servlet
  • pls—Oracle Application Server PL/SQL网关
  • cfdocs或cfide—-Cold Fusion
  • SilverStream —- SilverStream Web服务器
  • WebObjects或{function}.woa----Apple webObjects
  • rails——-Ruby on Rails。

2.5 会话令牌

   许多Web服务器和Web应用程序平台默认生成的会话令牌名称也揭示其所使用技术的信息,例如:

  • JSESSIONID———Java平台
  • ASPSESSIONID——Microsoft IIS服务器
  • ASP.NET_Sessionld——Microsoft ASP.NET
  • CFID/CFTOKEN ——Cold Fusion
  • PHPSESSID——PHP。

2.6 第三方代码组件

  许多Web应用程序整合第三方代码组件执行常见的功能,如购物车、登录机制和公告牌。这些组件可能为开源代码,或者从外部软件开发者购买而来。如果是这样,那么相同的组件会出现在因特网上的大量其他Web应用程序中,可以根据这些组件了解应用程序的功能。通常,其他应用程序会利用相同组件的不同特性,确保攻击者能够确定目标应用程序的其他隐藏行为和功能。而且,软件中可能包含其他地方已经揭示的某些已知漏洞,攻击者也可以下载并安装该组件,对它的源代码进行分析或以受控的方式探查其中存在的缺陷。

小结

  渗透测试步骤

  • 确定全部用户输入入口点,包括URL、查询字符串参数、PosT数据、cookie和其他由应用程序处理的HTTP消息头。

  • 分析应用程序使用的查询字符串格式。几乎所有定制方案仍然使用名/值模型的某种变化形式,因此要设法了解名/值对如何被封装到已经确定的非标准URL中。

  • 确定任何向应用程序处理过程引入用户可控制或其他第三方数据的带外通道。

  • 查看应用程序返回的HTTP服务器旗标。

    注意,在某些情况下,应用程序的不同区域由不同的后端组件处理,因此可能会收到不同的server消息头。

  • 检查所有定制HTTP消息头或HTML源代码注释中包含的任何其他软件标识符。(6)运行Httprecon工具识别Web服务器。

  • 如果获得关于Web服务器和其他组件的详细信息,搜索其使用的软件版本,确定在发动攻击时可供利用的所有漏洞。

  • 分析应用程序URL列表,确定任何看似重要的文件扩展名、目录或其他提供服务器使用技术相关线索的内容。

  • 分析应用程序发布的全部会话令牌的名称,确定其使用的技术。

  • 使用常用技术列表或Google推测服务器所使用的技术,或者查找其他明显使用相同技术的Web站点和应用程序。

  • 在Google上搜索可能属于第三方软件组件的任何不常见的cookie、脚本、HTTP消息头名称,并进行分析

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

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

相关文章

AI绘图(3)stable diffusion如何写好prompt 一

对于大部分人来说,写出提示词就是给AI一段话,AI根据这段话生成对应的图片。其实这样是不对的,我们应该输入的是词语,而不是文本。 1、整体效果 Prompt: 1 girl, solo, whole body, long hair, blonde hair, aqua eyes, baseball…

用yolov5训练自己的数据集【绝对能学会系列】

【第一部分:环境搭建;第二部分:测试代码;第三部分:训练自己的数据集】 第一部分:环境搭建 首先确保您的电脑上面有Anaconda和PyCharm。 去一个您喜欢的地方创建一个文件夹【不创建也ok,直接打…

Jay17 2023.8.12日报

8.12 今天做了2题,CTFshow 红包挑战8(PHP create_function())和BUU [RoarCTF 2019]Easy Java(web.xml泄露)。 此外一直在打NepCTF,出了一题(ez_java_checkin)简单了解了java中shri…

智能优化算法:人类行为优化算法-附代码

智能优化算法:人类行为优化算法 文章目录 智能优化算法:人类行为优化算法1.人类行为优化2.实验结果3.参考文献4.Matlab5.python 摘要:HBBO 是 Seyed-Alireza Ahmadi 于 2017 年基于人类行为而提出的一种新型元启发式优化算法。。具有寻优能力…

EVE-NG 镜像导入

目录 1.文件构成 2.导入锐捷镜像 2.1 上传模板 2.2 上传图标 2.3上传启动镜像 2.4上传配置脚本 2.5 修复文件权限 2.6 查看​ 1.文件构成 eve-ng 镜像由4个文件构成 1.启动镜像:运行时加载的磁盘镜像文件; 2.图标:在拓扑中显示的图…

基于OFDM+QPSK的通信系统误码率matlab仿真,对比不同同步误差对系统误码率的影响

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1.1 OFDM 原理 1.2 QPSK 原理 1.3 同步误差对系统性能的影响 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 ...........................…

运维监控学习笔记3

DELL的IPMI页面的登录: 风扇的状态: 电源温度:超过70度就告警: 日志信息: 可以看到更换过磁盘。 iDRAC的设置 虚拟控制台:启动远程控制台: 可以进行远程控制。 机房工程师帮我们接远程控制&…

Confluence(wiki)搭建遇到创建的文档乱码问题的解决

在公司使用这个知识管理协同的工具的时候,感觉用起来还不错,自己就想着搭建一套玩玩; 用的是docker搭建,具体就是搞docker compose文件管理起来, 但是当我搭建完毕之后创建学习目录的时候发现全是?&#x…

leetcode---357单周赛

题目列表 2810. 故障键盘 2811. 判断是否能拆分数组 2812. 找出最安全路径 2813. 子序列最大优雅度 一、故障键盘 这题可以直接模拟&#xff0c;时间复杂度是O(n^2)&#xff0c;代码如下 class Solution { public:string finalString(string s) {string x;for(int i0;i<…

asp.net core webapi如何执行周期性任务

使用Api执行周期性任务 第一种&#xff0c;无图形化界面1.新建类&#xff0c;继承IJob&#xff0c;在实现的方法种书写需要周期性执行的事件。2.编写方法类&#xff0c;定义事件执行方式3.在启动方法中&#xff0c;进行设置&#xff0c;.net 6中在program.cs的Main方法中&#…

猿人学刷题系列(第一届比赛)——第二题( js 混淆 - 动态cookie 1)

题目&#xff1a;提取全部5页发布日热度的值&#xff0c;计算所有值的加和 地址&#xff1a;https://match.yuanrenxue.cn/match/2 思路分析 本题我们会简单说一下两种不同的方式去处理&#xff0c;一种是不还原混淆代码直接从源代码硬扣生成逻辑&#xff0c;另一种则是还原…

小程序具体开发

window 导航栏 属性名类型默认值作用navigationBarTitleText string字字符串导航栏标题内容navigationBarBackgroundColorHexcolor#000000设置导航栏背景颜色&#xff08;比如荧黄色 #ffa&#xff09;navigationBarTextStylestringwhite设置导航栏标题的颜色&#xff08;仅含有…

运维监控学习笔记2

硬件监控&#xff1a; 1&#xff09;使用IPMI 2&#xff09;机房巡检 路由器和交换机&#xff1a; 使用SNMP&#xff08;简单网络管理协议&#xff09;进行监控。 Linux 安装snmp&#xff1a; yum install -y net-snmp net-snmp-utils 说明&#xff1a;net-snmp是安装在snm…

swager web服务无法显示问题

如果指定了扫描其他包 那么web文件夹里面的就扫描不到 需要加上扫描扫描web的 &#xff0c;默认什么也没有就会扫描web文件夹 但是其他模块的扫描不到 指定了扫描其他模块就需要再次指定扫描该web文件夹

HCIP VRRP技术

一、VRRP概述 VRRP&#xff08;Virtual Router Pedundancy Protocol&#xff09;虚拟路由器冗余协议&#xff0c;既能够实现网关的备份&#xff0c;又能够解决多个网关之间互相冲突的问题&#xff0c;从而提高网络可靠性。 局域网中的用户的终端通常采用配置一个默认网关的形…

私密相册管家-加密码保护私人相册照片安全

App Store史上最安全、最强大、最卓越的私密相册App&#xff01;再也不用担心私密照片视频被别人看见了&#xff01;
私密相册为你提供多重密码保护机制、简单便捷的照片存储空间&#xff0c;完美地将你的私密照片远离一切恶意偷窥者的窥探&#xff01; 【产品功能】
 √ 支…

如何培养对技术的热爱

这篇博文主要针对计算机专业相关的同学&#xff0c;对于理工科专业的同学有一定的借鉴意义&#xff0c;对于其他专业的同学&#xff0c;还请自行取舍。 背景 初学计算机&#xff0c;可能并不是每个人都能对其产生兴趣&#xff0c;更不要说从其中获得快乐。对于如何培养兴趣&a…

Python爬虫:js逆向调式操作及调式中遇到debugger问题

Python爬虫:js逆向调式操作及调式中遇到debugger问题 1. 前言2. js逆向调式操作2.1 DOM事件断点2.2 XHR/提取断点(用于请求接口参数加密处理)2.3 请求返回的数据是加密的2.4 hook定位参数 3. 调式中遇到debugger问题3.1 解决方式(一律不在此处暂停)3.2 问题&#xff1a;点击一律…

Mac超好用软件推荐

没有广告&#xff0c;良心推荐哦 刷到有福啦 非常非常感谢一路支持的大佬&#xff0c;你们的支持是我的荣幸 目录 Keka Free Download Manager Noizio Lite Microsoft 365 ​编辑 LocalSand Hidden Bar Obsidian iWork VMware Fusion SwitchHosts Xmind Listen…