4.1.8- Web 应用程序使用的组件进行指纹识别

news2024/11/29 2:32:13

Web 应用程序使用的组件进行指纹识别

ID
WSTG-INFO-08

总结

毫不夸张地说,几乎所有可以想象的Web应用程序的想法都已经投入开发。随着全球大量自由和开源软件项目的积极开发和部署,应用程序安全测试很可能会遇到完全或部分依赖于这些知名应用程序或框架(例如WordPress,phpBB,Mediawiki等)的目标。了解正在测试的 Web 应用程序组件有助于测试过程,并且还将大大减少测试期间所需的工作量。这些众所周知的 Web 应用程序具有特定的 HTML 标头、Cookie 和目录结构,可以枚举这些标头、cookie 和目录结构来标识应用程序。大多数 Web 框架在这些位置都有几个标记,可以帮助攻击者或测试人员识别它们。这基本上是所有自动工具所做的,它们从预定义的位置查找标记,然后将其与已知签名的数据库进行比较。为了获得更好的准确性,通常使用几个标记。

测试目标

  • 对 Web 应用程序使用的组件进行指纹识别。

如何测试

黑盒测试

为了确定框架或组件,需要考虑几个常见位置:

  • HTTP 标头
  • Cookies
  • 网页源代码
  • 特定文件和文件夹
  • 文件扩展名
  • 错误消息

HTTP 标头

识别 Web 框架的最基本形式是查看 HTTP 响应标头中的X-Powered-By 字段。许多工具可用于对目标进行指纹识别,最简单的工具是netcat。

请考虑以下 HTTP 请求-响应:

$ nc 127.0.0.1 80
HEAD / HTTP/1.0

HTTP/1.1 200 OK
Server: nginx/1.0.14
[...]
X-Powered-By: Mono

X-Powered-By ,我们了解到Web应用程序框架很可能是Mono。但是,尽管这种方法简单快捷,但这种方法并非在所有情况下都有效。可以通过正确的配置轻松禁用 X-Powered-By标头。还有几种技术允许站点对 HTTP 标头进行模糊处理(请参阅修正Remediation 部分中的示例)。在上面的示例中,我们还可以注意到正在使用特定版本的 nginx 来提供内容。

在同一示例中,测试人员可能会错过 X-Powered-By 标头或获得如下所示的答案:

HTTP/1.1 200 OK
Server: nginx/1.0.14
Date: Sat, 07 Sep 2013 08:19:15 GMT
Content-Type: text/html;charset=ISO-8859-1
Connection: close
Vary: Accept-Encoding
X-Powered-By: Blood, sweat and tears

有时有更多的 HTTP 标头指向某个框架。在下面的示例中,根据来自 HTTP 请求的信息,可以看到X-Powered-By 标头包含 PHP 版本。但是,X-Generator 标题指出使用的框架实际上是 Swiftlet,这有助于渗透测试人员扩展其攻击媒介。执行指纹识别时,请仔细检查每个 HTTP 标头是否存在此类泄漏。

HTTP/1.1 200 OK
Server: nginx/1.4.1
Date: Sat, 07 Sep 2013 09:22:52 GMT
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.16-1~dotdeb.1
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Generator: Swiftlet

确定当前 Web 框架的另一种类似且更可靠的方法是特定于框架的 cookie。

请考虑以下 HTTP 请求:
在这里插入图片描述
图 4.1.8-7:Cakephp HTTP 请求

cookieCAKEPHP 已自动设置,提供有关正在使用的框架的信息。常见 Cookie 名称的列表显示在 Cookies 部分。依赖这种识别机制仍然存在局限性 - 可以更改 cookie 的名称。例如,对于选定的CakePHP框架,这可以通过以下配置来完成(摘自core.php):

/**
* The name of CakePHP's session cookie.
*
* Note the guidelines for Session names states: "The session name references
* the session id in cookies and URLs. It should contain only alphanumeric
* characters."
* @link http://php.net/session_name
*/
Configure::write('Session.cookie', 'CAKEPHP');

但是,与对标头的更改相比,进行这些更改 X-Powered-By 的可能性较小,从而使这种标识方法更加可靠。

网页源代码

此技术基于在 HTML 页面源代码中查找某些模式。通常可以找到很多信息,这些信息可以帮助测试人员识别特定组件。常见的标记之一是直接导致框架泄露的 HTML 注释。更常见的是,可以找到某些特定于框架的路径,即指向特定于框架的CSS或JS文件夹的链接。最后,特定的脚本变量也可能指向某个框架。

从下面的屏幕截图中,可以通过上述标记轻松确定正在使用的框架及其版本。注释、特定路径和脚本变量都可以帮助攻击者快速确定 ZK 框架的实例。

在这里插入图片描述

图 4.1.8-2:ZK 框架 HTML 源代码示例

通常, <head> 此类信息位于 HTTP 响应部分、 <meta> 标记或页面末尾。但是,应分析整个响应,因为它可用于其他目的,例如检查其他有用的注释和隐藏字段。有时,Web开发人员可能无法充分掩盖有关所用框架或组件的信息。仍然有可能在页面底部偶然发现这样的东西:

 Built upon the Banshee.PHP framwork v3.1

特定文件和文件夹
还有另一种方法可以极大地帮助攻击者或测试人员以高精度识别应用程序或组件。每个 Web 应用程序组件在服务器上都有其特定的文件和文件夹结构。已经注意到,人们可以从HTML页面源代码中看到特定的路径,但有时它们没有明确显示在那里,并且可能仍然驻留在服务器上。

为了发现它们,使用了一种称为强制浏览或“dirbusting”的技术。目录破坏是暴力强制使用已知文件夹和文件名的目标,并监视 HTTP 响应以枚举服务器内容。此信息既可用于查找默认文件并对其进行攻击,也可用于对 Web 应用程序进行指纹识别。目录破坏可以通过多种方式完成,下面的示例显示了在Burp Suite的定义列表和入侵者功能的帮助下,针对WordPress驱动的目标的成功删除攻击。

Figure 4.1.8-4: Dir busting with Burp
我们可以看到,对于一些特定于WordPress的文件夹(例如 /wp-admin//wp-includes//wp-content/),HTTP响应分别为403(禁止访问),302(找到,重定向到wp-login.php)和200(确定)。这是一个很好的指标,表明目标由WordPress提供支持。以同样的方式,可以处理不同的应用程序插件文件夹及其版本。在下面的屏幕截图中,可以看到Drupal插件的典型CHANGELOG文件,该文件提供了有关正在使用的应用程序的信息,并公开了一个易受攻击的插件版本。

在这里插入图片描述

图 4.1.8-5:Drupal Botcha 披露

提示:在开始目录之前,请先检查 robots.txt 文件。有时也可以在那里找到特定于应用程序的文件夹和其他敏感信息。下面的屏幕截图中提供了此类 robots.txt 文件的示例。
在这里插入图片描述

Figure 4.1.8-6: Robots 信息披露

每个特定应用程序的特定文件和文件夹都不同。如果确定的应用程序或组件是开源的,则在渗透测试期间设置临时安装可能是有价值的,以便更好地了解呈现的基础结构或功能,以及服务器上可能保留的文件。但是,已经存在几个有用的文件列表;一个值得注意的例子是可预测文件/文件夹的FuzzDB词表。

文件扩展名

URL 可能包含文件扩展名,这些文件扩展名也有助于识别 Web 平台或技术。

例如,OWASP wiki 使用 PHP:

https://wiki.owasp.org/index.php?title=Fingerprint_Web_Application_Framework&action=edit&section=4

以下是一些常见的 Web 文件扩展名和相关技术:

  • .php – PHP
  • .aspx – Microsoft ASP.NET
  • .jsp – Java 服务器页面

错误消息

如以下屏幕截图所示,列出的文件系统路径指向WordPress的使用(wp-content)。另外,测试人员应该知道WordPress是基于PHP的(functions.php)。

在这里插入图片描述

图 4.1.8-7:WordPress 解析错误

通用标识符

Cookies

FrameworkCookie name
Zopezope3
CakePHPcakephp
Kohanakohanasession
Laravellaravel_session
phpBBphpbb3_
WordPresswp-settings
1C-BitrixBITRIX_
AMPcmsAMP
Django CMSdjango
DotNetNukeDotNetNukeAnonymous
e107e107_tz
EPiServerEPiTrace, EPiServer
Graffiti CMSgraffitibot
Hotaru CMShotaru_mobile
ImpressCMSICMSession
IndicoMAKACSESSION
InstantCMSInstantCMS[logdate]
Kentico CMSCMSPreferredCulture
MODxSN4[12symb]
TYPO3fe_typo_user
DynamicwebDynamicweb
LEPTONlep[some_numeric_value]+sessionid
WixDomain=.wix.com
VIVVOVivvoSessionId

网页源代码

Application 应用Keyword 关键词
WordPress<meta name="generator" content="WordPress 3.9.2" />
phpBB<body id="phpbb"
Mediawiki<meta name="generator" content="MediaWiki 1.21.9" />
Joomla<meta name="generator" content="Joomla! - Open Source Content Management" />
Drupal<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
DotNetNukeDNN Platform - [http://www.dnnsoftware.com](http://www.dnnsoftware.com)

一般标记

  • %framework_name%
  • powered by
  • built upon
  • running

特定标记

Framework 框架Keyword关键词
Adobe ColdFusion<!-- START headerTags.cfm
Microsoft ASP.NET__VIEWSTATE
ZK<!-- ZK
Business Catalyst<!-- BC_OBNW -->
Indexhibitndxz-studio

修复
虽然可以努力使用不同的cookie名称(通过更改配置),隐藏或更改文件/目录路径(通过重写或源代码更改),删除已知标头等,但这些努力归结为“通过隐蔽性实现安全性”。系统所有者/管理员应该认识到,这种努力只会减慢最基本的对手的速度。时间和精力可能更好地用于提高利益相关者的认识和维护解决方案。

工具

下面列出了通用和众所周知的工具。还有很多其他实用程序,以及基于框架的指纹识别工具。

WhatWeb 什么网络

网站:https://github.com/urbanadventurer/WhatWeb

WhatWeb是目前市场上最好的开源指纹识别工具之一,包含在默认的Kali Linux 版本中。语言: Ruby 指纹匹配由以下方法进行:

  • 文本字符串(区分大小写)
  • 正则表达式
  • 谷歌黑客数据库查询(有限的关键字集)
  • MD5 哈希
  • 网址识别
  • HTML 标记模式
  • 用于被动和激进操作的自定义 ruby 代码

示例输出显示在下面的屏幕截图中:

在这里插入图片描述

图 4.1.8-8:输出示例

Wappalyzer

网站:https://www.wappalyzer.com/

Wappalyzer有多种使用模式,其中最受欢迎的可能是Firefox / Chrome扩展。它们主要在正则表达式匹配上工作,除了在浏览器中加载页面之外,不需要任何内容。它完全在浏览器级别工作,并以图标的形式给出结果。尽管有时它有误报,但了解在浏览页面后立即使用哪些技术构建目标站点非常方便。

插件的示例输出显示在下面的屏幕截图中。
在这里插入图片描述
图 4.1.8-9: OWASP 站点的Wappalyzer 输出

引用

白皮书

  • Saumil Shah: “HTTP 指纹识别简介”
  • Anant Shrivastava : “Web Application Finger Printing”

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

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

相关文章

vue cli npm run build打生产环境包报错Cannot read property ‘pop‘ of undefined

问题出在webpack配置的代码拆分splitChunks 解决办法&#xff1a;每个cacheGroups中配置enforce: true;

数据结构——排序算法——快速排序

快速排序算法的基本思想是 1.从数组中取出一个数&#xff0c;称之为基数&#xff08;pivot&#xff09; 2.遍历数组&#xff0c;将比基数大的数字放到它的右边&#xff0c;比基数小的数字放到它的左边。遍历完成后&#xff0c;数组被分成了左右两个区域 3.将左右两个区域视为两…

巧用Lambda表达式获取对象属性名告别魔法值

在我们日常开发中&#xff0c;使用 MyBatis-Plus 写 SQL 执行的时候&#xff0c;难免会用到表字段&#xff0c;虽然 MyBatis-Plus 提供了 LambdaQueryWrapper 帮助我们使用 Lambda 方式调用对象属性名&#xff0c;但有的时候还是不免用到魔法值&#xff0c;当对象的属性名更改了…

检索技术核心学习总结

一、学习检索技术的必要性分析 &#xff08;一&#xff09;关键原因分析 学习检索技术&#xff08;Information Retrieval&#xff0c;IR&#xff09;具有多种重要的原因&#xff0c;特别是在今天信息爆炸的数字化时代。 总的来说&#xff0c;学习检索技术有助于提高信息处理…

基于Python和mysql开发的商城购物管理系统分为前后端(源码+数据库+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python和mysql开发的商城购物管理系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过…

Elasticsearch:什么是生成式人工智能?

生成式人工智能定义 给学生的解释&#xff08;基本&#xff09;&#xff1a; 生成式人工智能是一种可以创造新的原创内容的技术&#xff0c;例如艺术、音乐、软件代码和写作。 当用户输入提示时&#xff0c;人工智能会根据从互联网上现有示例中学到的知识生成响应&#xff0c;…

记一次线上BUG排查过程

1. 线上遇到一个非常奇怪的bug&#xff0c;为一个用户分配业务线类型后&#xff0c;该用户登录时&#xff0c;提示502&#xff0c;但其它的用户登录完全是正常的 2. 问题现象 3. 排查思路 先去看线上日志&#xff0c;看是否有error&#xff0c;但日志里边这个接口200正常返回…

业务中如何拓展微前端架构

站在整体架构的角度&#xff0c;微前端可以分为以下几类拓展迭代方向。 注册更多微应用 随着业务的扩展,我们可以在主应用中注册更多的微应用。每个微应用是一个独立的子系统,只需要在主应用的注册列表中添加新的项,配置微应用的名称、入口、活动规则等信息即可。 集成微应用…

【element-ui】el-date-picker 之picker-options时间选择区间禁用效果的实现

element-ui 时间选择器的时间区间禁用dom层引入:picker-option <el-date-pickerv-model"searchFormObj.workTime"clearablevalue-formate"yyyy-MM-dd":picker-options"pickerOptions"placeholder"请选择时间" ></el-date-pi…

应用在儿童平板防蓝光中的LED防蓝光灯珠

现在电子产品多&#xff0c;手机、平板电脑、电子书等等&#xff0c;由于蓝光有害眼睛健康&#xff0c;于是市场上有很多防蓝光的眼镜、防蓝光的手机膜、防蓝光的平板&#xff0c;这些材料和设备到底有没有用&#xff1f;如何正确预防蓝光危害呢&#xff1f; 我们现在所用的灯…

借助工业PoE交换机实现智慧停车场管理

停车场是现代城市的重要基础设施&#xff0c;而且随着汽车保有量的持续增长&#xff0c;城市中也出现了数百甚至上千停车位的大型、超大型停车场&#xff0c;而这些大型停车场的管理和服务也是一个难题。 针对大型停车场的管理&#xff0c;可以借助工业PoE交换机&#xff0c;快…

postman和node.js的使用、YApi 新版如何查看 http 请求数据

一 nodejs下载 下载链接&#xff1a; nodejs官网&#xff1a; https://nodejs.org/zh-cn/download 我使用的windows .msi安装方式&#xff0c;双击一直下一步就行 当前安装完成后的版本&#xff1a;1.下载 2.安装步骤 下载完成后&#xff0c;双击安装包&#xff0c;开始安装&…

LoGoNet:基于局部到全局跨模态融合的精确 3D 目标检测

论文地址&#xff1a;https://arxiv.org/abs/2303.03595 论文代码&#xff1a;https://github.com/sankin97/LoGoNet 论文背景 激光雷达传感器点云通常是稀疏的&#xff0c;无法提供足够的上下文来区分远处的区域&#xff0c;从而造成性能次优。 激光雷达-摄像机融合方法在三…

html网页制作期末大作业-网上花店商城html+css+javascript

一、简介 html网页制作期末大作业-网上花店商城htmlcssjavascript 8个页面适用学生作业 课程设计花店、期末作业花店、毕业设计花店 ​ 二、部分网页截图 三、部分网页源码 1. 首页代码 <!DOCTYPE html> <html lang"en"> <head><meta charse…

耐蚀合金连续油管制造工艺 学习记录

声明 本文是学习GB-T 42858-2023 耐蚀合金连续油管. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 5 制造工艺 5.1 通则 本文件所包含的合金应采用吹氧转炉冶炼或电炉冶炼或高炉冶炼(仅对马氏体或马氏体/铁素体不 锈钢)或真空感应熔化工艺&#xf…

LVS负载均衡集群--nat模式

一、集群含义&#xff1a; 由多台主机构成&#xff0c;但对外只表现为一一个整体&#xff0c;只提供一个访问入口(域名或IP地址)&#xff0c;相当于一台大型计算机。 二、群集的类型&#xff1a; 1&#xff09;负载均衡群集 LB&#xff1a; 提高系统响应效率&#xff0c;处理…

通过bid爬取b站视频内容

1.B站的视频&#xff1a;音频内容和视频内容是分开的&#xff0c;爬完之后需要进行视频合成。 2.每个b站视频的bid号都是唯一的。 3.合成视频使用ffmpeg&#xff0c;通过官网下载&#xff0c;并且pip安装对应的python包&#xff0c;pip install ffmpeg-python。 win10系统下…

导出excel单元格时实现换行

上一篇&#xff1a;laravel中安装Maatwebsite/excel扩展 承接上一篇哈&#xff0c;laravel成功安装了excel的扩展&#xff0c;但是有个小的问题&#xff0c;就是每个题目有至少两个选项&#xff0c;导出到excel的时候&#xff0c;希望每个选项之间能换行展示&#xff0c;也就是…

stu04-快速生成HTML5文档结构

1.直接输入一个英文的感叹号“!”&#xff0c;然后按Tab键&#xff0c;自动生成 2.输入“html:5”&#xff0c;然后按Tab键自动生成 3.直接复制粘贴以下代码&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"UTF-8&q…

5G定位技术原理与应用场景

5G高精度定位服务不仅适用于应急&#xff0c;还可以支持大量的个人业务&#xff0c;包括室外和室内场景&#xff0c;可以在交通道路、隧道、地下停车场或室内环境中支持高精度定位服务。在这些区域中&#xff0c;由于卫星信号的覆盖范围较小&#xff0c;基于5G网络的高精度定位…