八、解析应用程序——分析应用程序(1)

news2024/10/7 16:22:57

文章目录

  • 一、确定用户输入入口点
    • 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/870685.html

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

相关文章

Leetcode35 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 解析:以示例2来举例,left 0,right 3,mid 1…

【CSS】CSS 布局——弹性盒子

Flexbox 是一种强大的布局系统,旨在更轻松地使用 CSS 创建复杂的布局。 它特别适用于构建响应式设计和在容器内分配空间,即使项目的大小是未知的或动态的。Flexbox 通常用于将元素排列成一行或一列,并提供一组属性来控制 flex 容器内的项目行…

SpringMVC的异常处理机制

1、简介 系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后 者主要通过规范代码开发、测试等手段减少运行时异常的发生。 系统的Dao、Service、Controller出现都通过throws Exception向上抛出…

BFS 五香豆腐

题目描述 经过谢老师n次的教导,dfc终于觉悟了——过于腐败是不对的。但是dfc自身却无法改变自己,于是他找到了你,请求你的帮助。 dfc的内心可以看成是5*5个分区组成,每个分区都可以决定的的去向,0表示继续爱好腐败&…

【图像分类】CNN + Transformer 结合系列.4

介绍两篇利用Transformer做图像分类的论文:CoAtNet(NeurIPS2021),ConvMixer(ICLR2022)。CoAtNet结合CNN和Transformer的优点进行改进,ConvMixer则patch的角度来说明划分patch有助于分类。 CoAtN…

多目标优化算法之樽海鞘算法(MSSA)

樽海鞘算法的主要灵感是樽海鞘在海洋中航行和觅食时的群聚行为。相关文献表示,多目标优化之樽海鞘算法的结果表明,该算法可以逼近帕雷托最优解,收敛性和覆盖率高。 通过给SSA算法配备一个食物来源库来解决第一个问题。该存储库维护了到目前为…

el-select 动态添加多个下拉框

实现的效果如下: 主要的代码如下: 这是formdata 的结构 主要的逻辑 在这个 methods

ubuntu supervisor 部署 python 项目

ubuntu supervisor 查看系统是否可用 cuda 初环境与设备安装 supervisor 环境创建 Supervisor 配置文件启动 Supervisor 服务管理项目 本篇文章将介绍 ubuntu supervisor 部署 python 项目 Supervisor 是一个用于管理和监控进程的系统工具。它的主要功能是确保系统中的进程持续…

Stable Diffusion WebUI 从零基础到入门

本文主要介绍Stable Diffusion WebUI的实际操作方法,涵盖prompt推导、lora模型、vae模型和controlNet应用等内容,并给出了可操作的文生图、图生图实战示例。适合对Stable Diffusion感兴趣,但又对Stable Diffusion WebUI使用感到困惑的同学&am…

在CentOS 8系统下搭建LNMP环境

操作场景:LNMP 环境是指在 Linux 系统下,由 Nginx MySQL/MariaDB PHP 组成的网站服务器架构。本文档介绍如何在腾讯云云服务器(CVM)上手动搭建 LNMP 环境。 进行手动搭建 LNMP 环境,您需要熟悉 Linux 命令&#xff0…

游戏行业实战案例 5 :玩家在线分布

【面试题】某游戏数据后台设有“登录日志”和“登出日志”两张表。 「登录日志」记录各玩家的登录时间和登录时的角色等级。 「登出日志」记录各玩家的登出时间和登出时的角色等级。 其中,「角色 id 」字段唯一识别玩家。 游戏开服前两天( 2022-08-13 至…

【深度学习 | 反向传播】释放反向传播的力量: 让训练神经网络变得简单

🤵‍♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…

快速上手PyCharm指南

PyCharm简介 PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动…

为什么String要设计成不可变的

文章目录 一、前言二、缓存hashcode缓存 三、性能四、安全性五、线程安全 一、前言 为什么要将String设计为不可变的呢?这个问题一直困扰着许多人,甚至有人直接向Java的创始人James Gosling提问过。在一次采访中,当被问及何时应该使用不可变…

Axure RP9小白安装教程

第一步: 打开:Axure中文学习网 第二步: 鼠标移动软件下载,点击Axure RP 9下载既可 第三步: 注意:Axure RP 9 MAC正式版为苹果版本,Axure RP 9 WIN正式版为Windows版本 中文汉化包&#xff…

春秋云镜 CVE-2022-0410

春秋云镜 CVE-2022-0410 WordPress plugin The WP Visitor Statistics SQLI 靶标介绍 WordPress plugin The WP Visitor Statistics (Real Time Traffic) 5.6 之前存在SQL注入漏洞,该漏洞源于 refUrlDetails AJAX 不会清理和转义 id 参数。 登陆账户:u…

windows环境下打印机无法打印的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

js 使用 AES对字节数组进行加密

AES 分组密码算法和所有常见操作模式(CBC、CFB、CTR、ECB 和 OFB。 js实现 aes 对字符串进行加密解密,网上有很多实现demo,但是对字节数组进行加密,找了很久都没找到合适的代码。我这次开发使用的场景是微信小程序直接解析ble协议…

力求超越ChatGPT,谷歌加入人工智能新项目

受到新贵OpenAI的威胁,谷歌承诺快速跟踪新的人工智能项目。 ChatGPT吓坏了谷歌。周五,纽约时报据报告的谷歌创始人拉里佩奇和谢尔盖布林与公司高管就OpenAI召开了几次紧急会议新聊天机器人谷歌认为这可能威胁到其价值1490亿美元的搜索业务。 由OpenAI创…

String为什么设计成不可变的?

为什么要把 String 设计成不可变的呢?有什么好处呢? 这个问题,困扰过很多人,甚至有人直接问过 Java 的创始人 James Gosling。 在一次采访中 James Gosling 被问到什么时候应该使用不可变变量,他给出的回答是&#xff…