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

文章目录

  • 一、确定用户输入入口点
    • 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.mzph.cn/news/34901.shtml

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

相关文章

小龟带你敲排序之冒泡排序

冒泡排序 一. 定义二.题目三. 思路分析(图文结合)四. 代码演示 一. 定义 冒泡排序(Bubble Sort,台湾译为:泡沫排序或气泡排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元…

【深度学习】再谈向量化

前言 向量化是一种思想,不仅体现在可以将任意实体用向量来表示,更为突出的表现了人工智能的发展脉络。向量的演进过程其实都是人工智能向前发展的时代缩影。 1.为什么人工智能需要向量化 电脑如何理解一门语言?电脑的底层是二进制也就是0和1&…

Arduino+esp32学习笔记

学习目标: 使用Arduino配置好蓝牙或者wifi模块 学习使用python配置好蓝牙或者wifi模块 学习内容(笔记): 一、 Arduino语法基础 Arduino语法是基于C的语法,C又是c基础上增加了面向对象思想等进阶语言。那就只记录没见过的。 单多…

全国各城市-货物进出口总额和利用外资-外商直接投资额实际使用额(1999-2020年)

最新数据显示,全国各城市外商直接投资额实际使用额在过去一年中呈现了稳步增长的趋势。这一数据为研究者提供了对中国外商投资活动的全面了解,并对未来投资趋势和政策制定提供了重要参考。 首先,这一数据反映了中国各城市作为外商投资的热门目…

Effective Java笔记(31)利用有限制通配符来提升 API 的灵活性

参数化类型是不变的&#xff08; invariant &#xff09; 。 换句话说&#xff0c;对于任何两个截然不同的类型 Typel 和 Type2 而言&#xff0c; List<Type1 &#xff1e;既不是 List<Type 2 &#xff1e; 的子类型&#xff0c;也不是它的超类型 。虽然 L ist<String…

Linux 文件查看命令

一、cat命令 1.cat文件名&#xff0c;查看文件内容&#xff1a; 例如&#xff0c;查看main.c文件的内容&#xff1a; 2.cat < 文件名&#xff0c;往文件中写入数据&#xff0c; Ctrld是结束输入 例如&#xff0c;向文件a.txt中写入数据&#xff1a; 查看刚刚写入a.txt的…

Yolov5(一)VOC划分数据集、VOC转YOLO数据集

代码使用方法注意修改一下路径、验证集比例、类别名称&#xff0c;其他均不需要改动&#xff0c;自动划分训练集、验证集、建好全部文件夹、一键自动生成Yolo格式数据集在当前目录下&#xff0c;大家可以直接修改相应的配置文件进行训练。 目录 使用方法&#xff1a; 全部代码…

解决监督学习,深度学习报错:AttributeError: ‘xxx‘ object has no attribute ‘module‘!!!!

哈喽小伙伴们大家好呀&#xff0c;很长时间没有更新啦&#xff0c;最近在研究一个问题&#xff0c;就是AttributeError: xxx object has no attribute module 今天终于是解决了&#xff0c;所以来记录分享一下&#xff1a; 我这里出现的问题是&#xff1a; 因为我的数据比较大…

SQL优化

一、插入数据 优化 1.1 普通插入&#xff08;小数据量&#xff09; 普通插入&#xff08;小数据量&#xff09;&#xff1a; 采用批量插入&#xff08;一次插入的数据不建议超过1000条&#xff09;手动提交事务主键顺序插入 1.2 大批量数据插入 大批量插入&#xff1a;&…

数据结构:力扣OJ题

目录 ​编辑题一&#xff1a;链表分割 思路一&#xff1a; 题二&#xff1a;相交链表 思路一&#xff1a; 题三&#xff1a;环形链表 思路一&#xff1a; 题四&#xff1a;链表的回文结构 思路一&#xff1a; 链表反转&#xff1a; 查找中间节点&#xff1a; 本人实力…

YOLOv8+ByteTrack多目标跟踪(行人车辆计数与越界识别)

课程链接&#xff1a;https://edu.csdn.net/course/detail/38901 ByteTrack是发表于2022年的ECCV国际会议的先进的多目标跟踪算法。YOLOv8代码中已集成了ByteTrack。本课程使用YOLOv8和ByteTrack对视频中的行人、车辆做多目标跟踪计数与越界识别&#xff0c;开展YOLOv8目标检测…

第一百二十七天学习记录:我的创作纪念日

机缘 今天收到CSDN官方的来信&#xff0c;想想也可以对我前面的学习记录进行一个总结。 关于来到CSDN的初心&#xff0c;也就是为了让自己养成一个良好的学习总结的习惯。这里要感谢我C语言视频教程的老师&#xff0c;是他建议学生们在技术博客中进行记录。对于技术博客&…

web-Element

在vueapp里<div><!-- <h1>{{message}}</h1> --><element-view></element-view></div> <div><!-- <h1>{{message}}</h1> --><element-view></element-view></div>在view新建个文件 <t…

vue或uniapp使用pdf.js预览

一、先下载稳定版的pdf.js&#xff0c;可以去官网下载 官网下载地址 或 pdf.js包下载(已配置好&#xff0c;无需修改) 二、下载好的pdf.js文件放在public下静态文件里&#xff0c; uniapp是放在 static下静态文件里 三、使用方式 1. vue项目 注意路径 :src"static/pd…

每日一题 206反转链表

题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; …

块、行内块水平垂直居中

1.定位实现水平垂直居中 <div class"outer"><div class"test inner1">定位实现水平垂直居中</div></div><style>.outer {width: 300px;height: 300px;border: 1px solid gray;margin: 100px auto 0;position: relative;}.te…

途乐证券-新股行情持续火爆,哪些因素影响首日表现?

全面注册制以来&#xff0c;参加打新的投资者数量全体呈现下降。打新收益下降&#xff0c;破发频出的布景下&#xff0c;投资者打新策略从逢新必打逐步向优选个股改变。 经过很多历史数据&#xff0c;从商场定价、参加者热度以及机构重视度维度揭秘了上市后股价体现优秀的个股具…

Redis 之 缓存预热 缓存雪崩 缓存击穿 缓存穿透

目录 一、缓存预热 1.1 缓存预热是什么&#xff1f; 1.2 解决方案&#xff1a; 二、缓存雪崩 2.1 缓存雪崩是什么&#xff1f;怎么发生的&#xff1f; 2.2 怎么解决 三、缓存穿透 3.1 是什么&#xff1f;怎么产生的呢&#xff1f; 3.2 解决方案 3.2.1、采用回写增强&a…

SpringBoot基础之注册Servlet三大组件

文章目录 前言一、介绍二、注入Bean2.1.ServletRegistrationBean2.2.FilterRegistrationBean2.3.ServletListenerRegistrationBean 三.演示结果总结 前言 本文章将介绍SpringBoot注册Servlet的三大组件 一、介绍 由于SpringBoot默认是以jar包的方式运行嵌入式Servlet容器来启…

Protues如何安装下载使用:STM32利用Protues进行仿真

文章目录&#xff1a; 一&#xff1a;Proteus仿真的使用步骤 第一步&#xff1a;Proteus新建项目 第二步&#xff1a;Proteus设计电路图&#xff08;选取元器件、摆放元器件、编辑元器件属性、原理图布线&#xff09; 第三步&#xff1a;程序代码编写 第四步&#xff1a;…