2019独角兽企业重金招聘Python工程师标准>>>

在阳光下没有任何新东西,几乎每一个人们​​都可能想到开发的Web应用程序已经开发出来了。随着世界各地积极开发和部署的大量免费和开源软件项目,应用程序安全测试很可能面临完全或部分依赖于这些众所周知的应用程序的目标站点(例如Wordpress, phpBB,Mediawiki等)。了解正在测试的Web应用程序组件对测试过程有很大帮​​助,并且还将大大减少测试期间所需的工作量。这些众所周知的Web应用程序具有已知的HTML标头,cookie和目录结构,可以枚举这些标识符以识别应用程序。

测试目标

确定Web应用程序和版本,以确定已知漏洞以及在测试期间使用的相应漏洞。

如何测试

饼干

识别Web应用程序的一种相对可靠的方法是使用特定于应用程序的cookie。

请考虑以下HTTP请求:

GET / HTTP / 1.1
用户代理:Mozilla / 5.0(Windows NT 6.2; WOW64; rv:31.0)Gecko / 20100101 Firefox / 31.0
接受:text / html,application / xhtml + xml,application / xml; q = 0.9,* /*;q=0.8
接受语言:en-US,en; q = 0.5
'''Cookie:wp-settings-time-1 = 1406093286; wp-settings-time-2 = 1405988284'''
DNT:1
连接:keep-alive
主持人:blog.owasp.org

已自动设置cookie CAKEPHP,它提供有关正在使用的框架的信息。常见cookie名称列表显示在Cpmmon应用程序标识符部分中。但是,可以更改cookie的名称。

HTML源代码

此技术基于在HTML页面源代码中查找某些模式。通常,人们可以找到许多信息,这些信息可以帮助测试人员识别特定的Web应用程序。其中一个常见标记是直接导致应用程序泄露的HTML注释。更常见的是,可以找到某些特定于应用程序的路径,即指向特定于应用程序的css和/或js文件夹的链接。最后,特定的脚本变量也可能指向某个应用程序。

从下面的元标记中,可以轻松了解网站及其版本使用的应用程序。注释,特定路径和脚本变量都可以帮助攻击者快速确定应用程序的实例。

<meta name =“generator”content =“WordPress 3.9.2”/>

更频繁地,此类信息放在<head> </ head>标记之间,<meta>标记中或页面末尾。然而,建议检查整个文档,因为它可用于其他目的,例如检查其他有用的注释和隐藏字段。

特定文件和文件夹

除了从HTML源收集的信息之外,还有另一种方法可以极大地帮助攻击者高精度地确定应用程序。每个应用程序在服务器上都有自己的特定文件和文件夹结构。有人指出,人们可以从HTML页面源看到特定的路径,但有时它们没有明确地显示在那里,仍然驻留在服务器上。

为了揭示它们,使用了称为dirbusting的技术。Dirbusting强制目标具有可预测的文件夹和文件名,并监视HTTP响应以计算服务器内容。此信息既可用于查找默认文件,也可用于攻击它们,也可用于对Web应用程序进行指纹识别。Dirbusting可以通过多种方式完成,下面的示例显示了借助于Burp Suite的已定义列表和入侵者功能,对WordPress驱动的目标进行了成功的dirbusting攻击。

我们可以看到,对于一些特定于WordPress的文件夹(例如,/ wp-includes /,/ wp-admin /和/ wp-content /),HTTP响应是403(禁止),302(找到,重定向到wp-login .php)和200(OK)。这是一个很好的指标,目标是WordPress驱动的。同样可以dirbust不同的应用程序插件文件夹及其版本。在下面的屏幕截图中,可以看到Drupal插件的典型CHANGELOG文件,该文件提供有关正在使用的应用程序的信息,并公开了易受攻击的插件版本。

提示:在开始dirbusting之前,建议先检查robots.txt文件。有时也可以在那里找到特定于应用程序的文件夹和其他敏感信息。下面的屏幕截图显示了此类robots.txt文件的示例。

每个特定应用程序的特定文件和文件夹都不同。建议在渗透测试期间安装相应的应用程序,以便更好地了解所呈现的基础结构以及服务器上可能留下的文件。但是,已经存在几个好的文件列表,一个很好的例子是可预测文件/文件夹的FuzzDB单词列表(http://code.google.com/p/fuzzdb/)。

通用应用程序标识符

饼干

亚历克 phpbb3_
WordPress的 WP-设置
1C-的Bitrix BITRIX_
AMPcms AMP
Django CMS Django的
DotNetNuke的 DotNetNukeAnonymous
E107 e107_tz
EPiServer EPiTrace,EPiServer
涂鸦CMS graffitibot
Hotaru CMS hotaru_mobile
ImpressCMS ICMSession
编号Indico MAKACSESSION
InstantCMS InstantCMS [LOGDATE]
Kentico CMS CMSPreferredCulture
镆铘 SN4 [12symb]
TYPO3 fe_typo_user
Dynamicweb Dynamicweb
轻子 LEP [some_numeric_value] +的sessionid
维克斯 域名= .wix.com
VIVVO VivvoSessionId

HTML源代码

应用 关键词
WordPress的 <meta name =“generator”content =“WordPress 3.9.2”/>
亚历克 <body id =“phpbb”
Mediawiki的 <meta name =“generator”content =“MediaWiki 1.21.9”/>
的Joomla <meta name =“generator”content =“Joomla! - 开源内容管理”/>
Drupal的 <meta name =“Generator”content =“Drupal 7(http://drupal.org)”/>
DotNetNuke的 DNN平台 - http://www.dnnsoftware.com

更多信息https://www.owasp.org/index.php/Web-metadata

工具

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

WhatWeb

网站:http : //www.morningstarsecurity.com/research/whatweb
目前市场上最好的指纹识别工具之一。包含在默认的Kali Linux版本中。语言:用于指纹识别的Ruby匹配用于:

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

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

BlindElephant

网站:https ://community.qualys.com/community/blindelephant
这个伟大的工具基于静态文件校验和的版本差异原则,从而提供非常高质量的指纹识别。语言:Python

成功指纹的示例输出:

pentester $ python BlindElephant.py http:// my_target drupal
Loaded /Library/Python/2.7/site-packages/blindelephant/dbs/drupal.pkl包含145个版本,478个区分路径和434个版本组。
在http:// my_target 点击drupal版本启动BlindElephant指纹点击http://my_target/CHANGELOG.txt
文件产生不匹配。错误:检索到的文件与已知指纹不匹配。527b085a3717bd691d47713dff74acf4 点击http://my_target/INSTALL.txt
文件无法匹配。错误:检索到的文件与已知指纹不匹配。14dfc133e4101be6f0ef5c64566da4a4 点击http://my_target/misc/drupal.js
基于结果的可能版本:7.12,7.13,7.14点击http://my_target/MAINTAINERS.txt
文件产生不匹配。错误:检索到的文件与已知指纹不匹配。36b740941a19912f3fdbfcca7caa08ca 点击http://my_target/themes/garland/style.css
基于结果的可能版本:7.2,7.3,7.4,7.5,7.6,7.7,7.8,7.9,7.10,7.11,7.12,7.13,7.14 ... 指纹识别结果:
7.14 最佳猜测:7.14

Wappalyzer

网站:http: 
//wappalyzer.com Wapplyzer是一款Firefox Chrome插件。它仅适用于正则表达式匹配,除了要在浏览器上加载的页面之外不需要任何其他内容。它完全在浏览器级别工作,并以图标的形式给出结果。虽然有时会出现误报,但在浏览页面后立即使用哪些技术构建目标网站的概念非常方便。

插件的示例输出显示在下面的屏幕截图中。

参考

白皮书

  • Saumil Shah:“HTTP指纹识别简介” - http://www.net-square.com/httprint_paper.html
  • Anant Shrivastava:“Web应用程序指纹” - http://anantshri.info/articles/web_app_finger_printing.html

整治

一般建议是使用上述几种工具并检查日志,以更好地了解攻击者确切地帮助披露Web框架的内容。通过在更改隐藏框架轨道后执行多次扫描,可以实现更高级别的安全性并确保自动扫描无法检测到框架。以下是框架标记位置和一些其他有趣方法的一些具体建议。

HTTP标头

检查配置并禁用或混淆所有披露技术使用信息的HTTP标头。这是一篇关于使用Netscaler进行HTTP-header混淆的有趣文章:http: //grahamhosking.blogspot.ru/2013/07/obfuscating-http-header-using-netscaler.html

饼干

建议通过更改相应的配置文件来更改cookie名称。

HTML源代码

手动检查HTML代码的内容并删除明确指向框架的所有内容。

一般准则:

  • 确保没有透露框架的可视标记
  • 删除任何不必要的评论(版权,错误信息,特定框架评论)
  • 删除META和发电机标签
  • 使用公司自己的css或js文件,不要将它们存储在特定于框架的文件夹中
  • 如果必须使用默认脚本,请不要在页面上使用默认脚本或对其进行模糊处理。

特定文件和文件夹

一般准则:

  • 删除服务器上任何不必要或未使用的文件。这意味着文本文件也公开了有关版本和安装的信息。
  • 限制对其他文件的访问,以便在从外部访问时实现404响应。这可以通过修改htaccess文件并在那里添加RewriteCond或RewriteRule来完成。下面介绍两个常见WordPress文件夹的此类限制的示例。
RewriteCond%{REQUEST_URI} /wp-login\.php$ [OR]
RewriteCond%{REQUEST_URI} / wp-admin / $
RewriteRule $ / http:// your_website [R = 404,L]

但是,这些并不是限制访问的唯一方法。为了使该过程自动化,存在某些特定于框架的插件。WordPress的一个例子是StealthLogin(http://wordpress.org/plugins/stealth-login-page)。

其他方法

一般准则:

  • 校验和管理这种方法的目的是击败基于校验和的扫描仪,而不是让它们通过哈希来公开文件。通常,校验和管理有两种方法:

    • 更改这些文件的放置位置(即将它们移动到另一个文件夹,或重命名现有文件夹)
    • 修改内容 - 即使稍微修改也会产生完全不同的哈希值,因此在文件末尾添加单个字节不应该是一个大问题。
  • 控制混乱

    一个有趣而有效的方法,涉及从其他框架添加虚假文件和文件夹,以欺骗扫描仪和混淆攻击者。但要小心不要覆盖现有的文件和文件夹,并打破当前的框架!

转载于:https://my.oschina.net/u/3447023/blog/3017504

2019测试指南-web应用程序安全测试(二)指纹Web应用程序相关推荐

  1. 黯然微信小程序杂记(二):小程序最新版登录并进行缓存模块的实现 附源码

    黯然微信小程序杂记(二):小程序最新版登录进行缓存模块的实现 附源码 一.功能描述 二.mine.wxml界面图片 三.mine.wxml代码 四.mine.wxss代码 五.mine.js代码 六. ...

  2. 微信小程序开发系列二:微信小程序的视图设计

    大家如果跟着我第一篇文章 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 一起动手,那么微信小程序的开发环境一定搭好了.效果就是能把该小程序的体验版以二维码的方式发送给其他朋友使用. 这个系列 ...

  3. 微信小程序开发系列 (二) :微信小程序的单步调试和控制器实现步骤概述

    笔者由于工作需要,曾经参加过一个微信小程序同 SAP 系统集成的项目,因此从零开始学习了微信小程序的开发知识.这里通过系列文章把自己所学分享出来,希望对相关学习者有所帮助. 本系列的前一篇文章:微信小 ...

  4. java程序购买_JAVA(二) ——购买商品简单程序

    1. 完成一个购买商品的功能 菜单如下([]方括号中是程序提示信息): [1.程序开始运行,出现如下的菜单] "我行我素"购物管理系统 * * * * * * * * * * * ...

  5. 微信小程序开发(二)微信小程序的调试和发布

    调试 编译和预览 预览 点击预览 可以使用微信扫描二维码,在手机上安装测试版小程序 或者点击自动预览,可以连接手机微信或者直接在电脑端打开小程序预览. 发布 上传代码,发布项目 [工具]- [上传] ...

  6. 微信小程序开发系列 (四) :微信小程序的页面跳转路由设计

    笔者由于工作需要,曾经参加过一个微信小程序同 SAP 系统集成的项目,因此从零开始学习了微信小程序的开发知识.这里通过系列文章把自己所学分享出来,希望对相关学习者有所帮助. 本教程前面三篇文章: 微信 ...

  7. 微信小程序开发系列七:微信小程序的页面跳转

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  8. 微信小程序开发系列五:微信小程序中如何响应用户输入事件

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  9. 微信小程序开发系列四:微信小程序之控制器的初始化逻辑

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 这个教程的前两篇文章,介绍了如何 ...

  10. 微信小程序网悦新闻开发--小程序配置(二)

    目录 微信小程序网悦新闻开发--功能介绍(一) 微信小程序网悦新闻开发--小程序配置(二) 微信小程序网悦新闻开发--首页模块开发(三) 微信小程序网悦新闻开发--视频模块开发(四) 微信小程序网悦新 ...

最新文章

  1. linux查询首字符不是T,linux – tload输出中的不同字符是什么意思?
  2. 《iOS取证实战:调查、分析与移动安全》一3.4 数据存储方式
  3. 【转】关于MySQL权限
  4. Web API之service worker
  5. postgres外部表
  6. c# typeof 与 Type.GetType 使用与效率对比
  7. 使用Fiori elements技术开发的ui5应用,方便大家参考
  8. day11-元组与字典
  9. linux gone kde 图形程序 兼容,Oracle8i HowTo
  10. C#中LitJson的使用示例 LitJson官方下载链接
  11. 过程能力指数Cp与Cpk计算公式
  12. 系统自带命令subst.exe创建虚拟软驱
  13. pcb成型板aoi检测_PCB设备:一款新的自动光学检测(AOI)系统
  14. (转)如何使用Xcode的Targets来管理开发和生产版本的构建
  15. windowsapps文件夹无法删除_Windows实战之快速安全删除Windows.old文件夹
  16. Java:Nginx使用
  17. 图像处理----图像模糊(高斯模糊)
  18. 微距昆虫摄影的常用技巧
  19. vue前端项目启动报错,node-sass安装失败
  20. 2020华师c语言程序客观题作业和答案,18秋华师C语言程序设计B在线作业-3辅导资料.docx-资源下载在线文库www.lddoc.cn...

热门文章

  1. 安卓温升thermal介绍
  2. 英:英语面试常用口语900句
  3. sp-api对接过程详解
  4. 网络工程师考试大纲的考试要求有哪些
  5. 部署ISA2006标准版防火墙
  6. element修改图标的大小
  7. 04741<计算机网络原理> 之第二章 网络应用
  8. 几行代码,把你的小电影全部藏好了!
  9. 图片特效展示(鼠标移入移除特效)
  10. 微信美团服务器异常怎么回事,美团行为存在异常怎么解决?美团账号异常怎么回事...