VER-OBSERVER 一个可以探测框架及依赖版本的命令行工具

栏目: Python · 发布时间: 8年前

内容简介:VER-OBSERVER 一个可以探测框架及依赖版本的命令行工具

项目地址: https://github.com/neargle/ver-observer

VER-OBSERVER 一个可以探测框架及依赖版本的命令行工具 )

用最著名的文学情感类博客测试一下, 看看效果。请大家测试的时候请参照这个 视频 ,自己搭建 django 环境,不要浪费博主的流量,谢谢。

简介

这个 工具 可以用来检测网站上所使用到的框架,依赖或者CMS的版本。以 Django 为例,如果我们知道一个网站是由 Django 开发的,那么知道所用的 Django 版本可以定位一些可能存在的问题, 例如,使用版本小于 Django v1.10.7 的网站很有可能存在任意URL跳转漏洞(详情见:文章)。

原则上,这个工具实现了一个较为通用的检测方法和较为方便的指纹生成。但是在有些框架和依赖里并不适用。

使用方法

几个探测 Django 版本的例子

for django v2.0.1:

python vobserver.py -u https://www.xxx.com/ -d django

VER-OBSERVER 一个可以探测框架及依赖版本的命令行工具

for django v1.9:

python vobserver.py -u https://www.xxx.com/ -d django -v

VER-OBSERVER 一个可以探测框架及依赖版本的命令行工具

一个更加浅显易懂的视频(可能需要翻墙),从头新建一个 Django 网站,并使用 ver-server 探测 Django 版本。

VER-OBSERVER 一个可以探测框架及依赖版本的命令行工具

视频中所用到的命令:

python vobserver.py -a
pip freeze | grep Django
django-admin startproject vobserver_test
python vobserver_test/manage.py runserver > /dev/null 2>&1 &
python vobserver.py -u http://127.0.0.1:8000/ -d django -v

如何支持一个新的框架\CMS\依赖的版本检测

假如需要创建一个新的插件,支持一个新的框架\CMS\依赖的版本检测,需要系统里支持 git 命令行和该框架的 git 项目。

还是以 Django 为例,另一个浅显易懂的视频,生成的命令其实没有视频里面那么复杂,视频里只是为了演示各个参数的作用,实际只需要两个参数即可:

python vobserver.py new -d /tmp/django -s /tmp/django/django/contrib/admin/static -w /static/

VER-OBSERVER 一个可以探测框架及依赖版本的命令行工具

USAGE

英文版的 Usage 可以执行 python vobserver.py -h 查看。这里贴中文的 Usage。

usage: vobserver.py [-h] [-u URL] [-d DEPEND] [--depth DEPTH] [-a] [-v]
                    [--logfile LOGFILE] [--level LEVEL]
                    {new} ...

A tool to detect that which version of web framework using on the target
website.

positional arguments:
{new}                 sub-command help
    new                 新增一个Web框架和依赖的版本探测支持插件

optional arguments:
-h, --help            显示帮助信息
-u URL, --url URL     目标地址. 如 http://blog.neargle.com
-d DEPEND, --depend DEPEND
                        依赖名,可使用(-a/--all)参数查看,如"django"
--depth DEPTH         这个数值越大扫描的url就越多,默认值0会扫描最多的url。
-a, --all             显示当前支持的所有框架信息。
-v, --verbose         设置日志等级为 "VERBOSE", 会打印更多的日志信息。
--logfile LOGFILE     设置日志文件路径。默认为 observer.log.
--level LEVEL         日志等级, 有 "CRITICAL, ERROR, WARNING,INFO, VERBOSE, DEBUG, TRACE, NOISE, LOWEST" 这些等级可随便设置。越往后,日志越多。

子命令 new 的 Usage:

usage: vobserver.py new [-h] [-n FRAMEWORK_NAME] -d DIR -s STATIC_PATH
                        [-w WEB_STATIC_ROOT] [--alias ALIAS [ALIAS ...]]
                        [--dis-suffix DIS_SUFFIX [DIS_SUFFIX ...]]

optional arguments:
-n FRAMEWORK_NAME, --framework-name FRAMEWORK_NAME
                        设置框架或者依赖的名字, 如 django,可不设置,会自动生成
-d DIR, --dir DIR       设置框架的GIT项目本地路径
-s STATIC_PATH, --static-path STATIC_PATH
                        设置项目下的静态文件路径
-w WEB_STATIC_ROOT, --web-static-root WEB_STATIC_ROOT
                        设置框架的静态文件在 WEB 站点上的根目录
--alias ALIAS [ALIAS ...]
                        设置别名,如: `--alias laravel-php laravel`,可用于探测的 -d 参数
--dis-suffix DIS_SUFFIX [DIS_SUFFIX ...]
                        设置不计入静态文件的后缀名,带有该后缀的文件会被忽略。 如:
                        `--dis-suffix php asp

实现逻辑

逻辑上 git 作为最优秀的版本控制工具帮我们做了很多事情。简要的介绍一下逻辑:

生成各个版本指纹的逻辑:

  1. 使用 git taggit log 获取项目所有的版本。(如果一个工程没有严格的按照 git 工作流的话,这里可能会出现问题。)
  2. git diff --name-only 获取静态目录下各个版本的文件变化并记录。
  3. git show 和 少量的 git checkout 获取各个版本的变化的文件内容。

根据这个逻辑最终生成最初的版本和最新的版本中,所有的静态文件hash,和各个版本中静态文件的变化。最终可以得到每个版本下,该框架静态文件的hash值。根据这些进行版本探测和大小比较。

ver-observer 的第三方依赖

除了 requirements.txt 中的依赖外, ext/ 目录下也有一些第三方依赖。

Third-party from great developer and friends in etx/ .

  • err_hunter & version_utils by @aploium
  • terminaltables by @robpol86

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning Vue.js 2

Learning Vue.js 2

Olga Filipova / Packt Publishing / 2017-1-5 / USD 41.99

About This Book Learn how to propagate DOM changes across the website without writing extensive jQuery callbacks code.Learn how to achieve reactivity and easily compose views with Vue.js and unders......一起来看看 《Learning Vue.js 2》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具