内容简介:VER-OBSERVER 一个可以探测框架及依赖版本的命令行工具
项目地址: https://github.com/neargle/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
for django v1.9:
python vobserver.py -u https://www.xxx.com/ -d django -v
一个更加浅显易懂的视频(可能需要翻墙),从头新建一个 Django 网站,并使用 ver-server 探测 Django 版本。
视频中所用到的命令:
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/
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 作为最优秀的版本控制工具帮我们做了很多事情。简要的介绍一下逻辑:
生成各个版本指纹的逻辑:
- 使用
git tag
和git log
获取项目所有的版本。(如果一个工程没有严格的按照 git 工作流的话,这里可能会出现问题。) -
git diff --name-only
获取静态目录下各个版本的文件变化并记录。 -
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 京东毫秒级热key探测框架设计与实践,已实战于618大促
- 渗透&&探测 (之UDP探测篇)
- 渗透测试之子域名探测指南
- 使用 JavaScript 探测网络状态
- WebP 可用性探测
- XSS WAF规则探测与绕过
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Node.js开发指南
郭家寶(BYVoid) / 人民邮电出版社 / 2012-7 / 45.00元
Node.js是一种方兴未艾的新技术,诞生于2009年。经过两年的快速变化,Node.js生态圈已经逐渐走向稳定。Node.js采用了以往类似语言和框架中非常罕见的技术,总结为关键词就是:非阻塞式控制流、异步I/O、单线程消息循环。不少开发者在入门时总要经历一个痛苦的思维转变过程,给学习带来巨大的障碍。 而本书的目的就是帮助读者扫清这些障碍,学会使用Node.js进行Web后端开发,同时掌握事件驱......一起来看看 《Node.js开发指南》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
SHA 加密
SHA 加密工具