• 【web-解析目标】(1.2.1)解析应用程序:确定用户输入入口


    目录

    一、解析应用程序

    1.1、简介:

    1.2、核心:

    二、确定用户输入入口

    2.1、简介:

    2.2、关键位置:

    2.3、URL文件路径

    简介:

    示例:

    2.4、请求参数

    概述:

    示例:

    2.5、HTTP消息头

    简介:

    2.6、带外通道

    概述:


    一、解析应用程序

    1.1、简介:

    一个方面,枚举尽可能多的应用程序内容

    另一方面,分析应用程序的功能、行为及使用的技术, 确定它暴露的关键受攻击面, 并探查其中可供利用的漏洞

    1.2、核心:

    核心功能:特定目的时可利用来执行相关的操作(比如文件上传等)


    外围的应用程序:站外链接、错误消息、管理与日志功能、重定向等


    核心安全机制及运作方式:会话状态、访问控制、验证机制与逻辑(注册、修改密码、找回密码等)


    存在用户输入位置:每个URL 、参数、POST、cookie等的不同位置


    前端使用的技术:表单、脚本、组件(Javaapplet 、AcliveX控件和Flash)和cookie等

    服务端使用的技术: 静态与动态页面、请求参数类型、SSL使用、Web服务器软件、数据库交互、电子邮件系统和其他后端组件等


    任何可收集到的关于服务器端应用程序内部结构与功能的其他信息(客户端可见的功能和行为的后台传输机制)



    二、确定用户输入入口

    2.1、简介:

    在检查枚举应用程序功能时生成的HTI下请求的过程中可以确定应用程序获取用户输入(由服务器处理)的绝大部分位置

    2.2、关键位置:

    每个URL字符串, 包括查询字符串标记

    URL查询字符串中提交的每个参数

    POST请求主体中提交的每个参数

    每个cookie

    HTTP消息头(User-Agent 、Referer 、Accept 、Accept-Language和Host消息头)

    2.3、URL文件路径

    简介:

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

    用户与应用程序的交互方式由应用程序的开发者决定


    示例:

    REST风格的URL:

    http://eis/shop/buy/clothes/nike

    其中clothes和nike就相当于是参数(就相当于规定功能之后,根据用户选择而变的)

    2.4、请求参数

    概述:

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

    示例:

    例如(网上随机的幸运观众):

    /?qd=36010&plan=office&unit=office%2B下载&keyword=下载office2010&e_matchtype={matchtype}&e_creative={creative}&e_adposition={adposition}&e_pagenum={pagenum}&e_keywordid=50953479013


    如果应用程序使用非标准的查询字符串格式, 那么在探查其中是否存在各种常见的漏洞时必须考虑到这种情况。

    如果忽略定制格式, 认为其仅包含一个名为xx的参数,因而提交各种攻击有效载荷作为这个参数的值, 对其进行简单处理,那么可能会遗漏处理查询字符串过程中存在的许多漏洞。相反, 如果详细分析它使用的定制格式并将有效载荷提交到嵌入的XML数据字段中, 立即就会发现严重缺陷, 如SQL注人或路径遍历

    2.5、HTTP消息头

    简介:

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


    一些应用程序还对Referer消息头进行其他处理

    eg:应用程序可能检测到用户已通过搜索引擎到达, 并提供针对用户的搜索查询的定制响应。一些应用程序可能会回应搜索术语, 或者尝试突出显示响应中的匹配表达式。一些应用程序则通过动态添加HTML关键字等内容, 井包含搜索引擎中最近的访问者搜索的字符串, 以提高它们在搜索引擎中的排名。通过提出大量包含经过适当设计的Referer URL的请求, 就可以不断在应用程序的响应中注入内容。


    1、应用程序向通过不同设备(如笔记本电脑、移动电话、平板电脑)进行访问的用户呈现不同的内容。应用程序通过检查User-Agent消息头实现这一目的

    2、能直接在User-Agent消息头本身中实施的基于输入的攻击提供”便利” 外,还可以揭示应用程序中的其他受攻击面。通过伪造流行移动设备的User-Agent消息头,攻击者可以访问其行为与主要界面不同的简化用户界面。由于这种界面通过服务器端应用程序中的不同代码路径生成,并且可能并未经过严格的安全测试,攻击者就可以确定主要应用程序界面中并不存在的漏洞(如跨站脚本)


    Bp lntruder提供了一个内置的有效载荷列表. 其中包含大量针对不同类型设备的用户代理字符串。攻击者可以执行一次简单的攻击, 即向提供不同用户代理字符串的应用程序主页面提出一个GET请求, 然后检查Bp lntrude,返回的结果, 从中确定表明使用了不同用户界面的反常现象。


    1、针对浏览器默认发送或应用程序组件添加的HTTP请求消息头实施攻击

    2、通过添加应用程序可能会处理的其他消息头来实施成功的攻击

    eg:

    许多应用程序会对用户IP地址进行处理, 以执行日志、访问控制或用户地理位置定位等功能。通常应用程序通过平台API可以访问客户的网络连接IP地址。但是如果应用程序位于负载均衡器或代理服务器之后,应用程序可能会使用x-Forwarded-for请求消息头(如果存在)中指定的IP地址。然后, 开发者可能误认为该IP地址是安全的,并以危险的方式处理该地址。在这种情况下,通过添加适当设计的X-Forwarded-For消息头, 攻击者就可以实施SQL注人或持续的跨站脚本攻击。

    2.6、带外通道

    概述:

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


    通过带外通过接收用户可控制的数据的Web应用程序包括

    处理并显示通过SMTP接收到的电子邮件消息的Web邮件应用程序

    具有通过HTTP从其他版务器获取内容功能的发布应用程序

    使用网络嗅探器收集数据并通过Web应用程序界面显示这些数据的入侵检测应用程序

    任何提供由非浏览器用户代理使用的API接口(如果通过此接口处理的数据与主Web应用程序共享)的应用程序, 如移动电话应用程序

  • 相关阅读:
    驱动开发 day9
    Dockerfile 自定义镜像
    【云原生之k8s】k8s控制器
    JAVA项目-windows测试环境搭建
    JavaWeb-解析Servlet的适配器模式和Servlet配置
    vue3项目运行时解析文件的顺序
    java实现给图片添加水印(文字水印或图片水印)
    Neo4j-APOC扩展与使用
    C++设计模式-生成器(Builder)
    Java --- Spring6之Set方法注入
  • 原文地址:https://blog.csdn.net/qq_53079406/article/details/126282178