Djongo/Vue指纹识别系统

系统需求分析

  • 这部分是对于一个:Djongo/Vue指纹识别系统的相关情况分析
    • 方便更好地了解一个指纹系统的大概功能需求和架构

需求分析

  • 需求分析:
    • 识别网站的前端架构、CMS、服务器
    • 自定义添加指纹
    • 用户管理(权限管理)
  • Todo
    • 识别处理
      • 识别后端编程语言
      • 识别数据库版本
      • 识别服务器系统版本
    • 集成:集成第三方 api
    • 端口扫描
    • ai:加入机器学习的识别接口
  • 重构:
    • 目前项目是 vue2+Django(很多依赖都是很老的版本)
    • 计划开发后:重构为 vue3+Django
    • 把前面的 Todo 全部完成

角色分析

  • 系统管理员:系统用户管理、规则编辑
  • 普通管理员:规则编辑
  • 普通用户:指纹识别功能

开发工具

  • Windows 下开发,使用 python
    • Pycharm:支持 Djongo 框架
    • SQLite:轻型内置数据库
      • 本地创建文件即可,后缀:db/sqlite都可以
    • Navicat:数据库管理工具
    • Vscode:写 vue2
    • Vision:office 办公组件、用来绘制图形

技术栈

B/S 架构(Browser、Server),使用 Djongo&Vue3

  • Djongo:python 开发 Web 应用的框架
  • Requests:python 爬虫工具包
  • Vue2:前端框架
    • ElementUI:前端的 UI 框架

项目结构

后端

前端

数据库分析

  • 指纹信息:
    • 出现位置:title、返回包、页面 html…

数据库设计

系统用户表

应用信息表

指纹表

用户管理

系统管理员、普通管理员(由系统管理员添加)、普通用户(直接注册)

页面展示

主页

用户管理

用户管理页面(注意有个+号,超级员可以添加用户)

添加用户(注意账号需要唯一)

应用管理

应用管理页面

添加应用

可以选择应用类型(应用名称不能重复)

  • 应用的删除和修改
    • 修改:可以修改应用相关信息
    • 删除:如果存在和指纹相关联的内容则无法删除

指纹管理

可以选择指纹出现的位置进行筛选

也可以根据应用类型进行筛选

添加指纹

指纹查询

网站请求的时候:注意随机选择生成 UA 头,避免人机检测(从准备好的文本随机选择)

指纹识别:根据指纹出现的不同位置,去应用信息里查询其对应应用

指纹识别学习

Web指纹识别技术的研究与实现(参考文档)

TideFinger

常见指纹间检测对象

1、CMS信息:比如大汉CMS、织梦、帝国CMS、phpcms、ecshop等;

2、前端技术:比如HTML5、jquery、bootstrap、pure、ace等;

3、Web服务器:比如Apache、lighttpd, Nginx, IIS等;

4、应用服务器:比如Tomcat、Jboss、weblogic、websphere等;

5、开发语言:比如PHP、Java、Ruby、Python、C#等;

6、操作系统信息:比如linux、win2k8、win7、kali、centos等;

7、CDN信息:是否使用CDN,如cloudflare、360cdn、365cyd、yunjiasu等;

8、WAF信息:是否使用waf,如Topsec、Jiasule、Yundun等;

9、IP及域名信息:IP和域名注册信息、服务商信息等;

10、端口信息:有些软件或平台还会探测服务器开放的常见端口。

常见指纹识别方式

  • 1 特定文件 md5:选取网站中特定图片、js、css 等静态文件
    • 如:favicon.ico、css、logo.ico、js 等一般不会修改的文件
    • 通过爬虫抓取这些文件、并和规则库中的对比

  • 2 正常页面/错误页面中包含的关键字
    • 首页/特定页面:robots.txt 中,然后用正则匹配关键字
      • Powered by Discuz、dedecms
    • fuzz 报错,根据报错信息判断 CMS 或中间件信息
      • eg:tomcat 报错页面

  • 3 请求头关键字匹配:根据这些 banner 识别
    • 效率很高、但是搜集规则很耗时、而且容易被改掉
  • 识别方式:
    • X-Powered-By
    • Cookie:一些 Waf 会包含 360wzws、Safedog、yunsuo
    • Server:DVRDVS-Webs、yunjiasu-nginx、Mod_Security、nginx-wallarm
    • WWW-Authenticate:一些路由交换设备可能存在这个字段,如NETCORE、huawei、h3c等设备

  • 4URL 中的关键字:wp-includes、dede 等
    • 规则库探测对应目录、爬虫分析链接 url、robots.txt、sitemap.xml 分析
      • 通过 url 地址判别是否使用了对应 CMS
      • eg:wordpress默认存在wp-includes和wp-admin目录,织梦默认管理后台为dede目录,solr平台可能使用/solr目录,weblogic可能使用wls-wsat目录等

  • 5 开发语言:web开发语言一般常见的有PHP、jsp、aspx、asp等
    • 通过爬虫获取动态链接进行直接判断是比较简便的方法。
      • asp规则<a[^>]*?href=('|")[^http][^>]*?\.asp(\?|\#|\1),其他语言可替换相应asp即可
    • 通过X-Powered-By进行识别
      • 比较常见的有X-Powered-By: ASP.NET或者X-Powered-By: PHP/7.1.8
    • 通过Set-Cookie进行识别
      • 这种方法比较常见也很快捷,比如Set-Cookie中包含PHPSSIONID说明是php、包含JSESSIONID说明是java、包含ASP.NET_SessionId说明是aspx等

W11scan

w11scan的github

docker 安装

1
2
3
4
5
1从官方镜像源拉取
docker pull boyhack/w11scan
2因为在启动docker的时候会向mongodb添加指纹信息,所以速度会比较慢。用下面的命令查看进度。
docker run -it -p 666:8000 boyhack/w11scan:latest
3打开127.0.0.1:666

项目架构

项目重构

  • 计划使用 Django+Vue3 重构复现该项目,并实现下列功能:
  • 本来的功能
    • 需求分析:
    • 识别网站的前端架构、CMS、服务器
    • 自定义添加指纹
    • 用户管理(权限管理)
  • Todo
    • 识别处理
      • 识别后端编程语言
      • 识别数据库版本
      • 识别服务器系统版本
      • 批量识别并导出
    • 端口扫描
    • *集成:集成第三方 api
    • *ai:加入机器学习的识别接口

创建 git 项目

在本地生成公钥,上传到 github

测试是否成功ssh -T git@github.com

随便创建一个文件夹,作为项目文件夹

初始化 gitgit init

创建 readme 文件vim readme.md

查看未被 git 收录的文件git status

加入收录范围git add .

保存当前版本git commit -m "创建项目"

上传 gitgit push

Django

直接 pycharm 安装后,启动python manage.py runserver即可

创建 apppython manage.py startapp ocr

之前只浅学过 spring、裸写 Django 确实不会,感觉得学一下,又开新坑,详见我博客

分类——

vue3

全局安装 vue3npm install -g @vue/cli

全局升级最新版npm update -g @vue/cli

查看版本vue -v

启动vue ui

访问端口创建项目(不选择初始化 git)