Skip to content
forked from SiJiDo/H

H是一款强大的资产收集管理平台

Notifications You must be signed in to change notification settings

ZMR0zhangmouren/H

Repository files navigation

H

H是一款强大的资产收集管理平台,主要用于src信息收集和红蓝对抗资产收集用,采用python celery分布式实现多节点部署,提高效率

整个系统架构为 bootstrap + flask + celery(rabbitmq&redis) + mysql,实测在2核4G内存的服务器上能够独立运行,1核2G的可以试试目前没尝试,但问题应该不大

实现以下功能

  • 域名扫描
  • 端口扫描
  • web站点扫描
  • 目录扫描
  • 漏洞扫描(nuclei, 自定义poc, xray+rad)
  • host碰撞插件
  • apk域名提取插件
  • 备案信息查询
  • fofa查询
  • 多账号管理

开发日志

闲暇时间龟速开发,想起了就记录下进度

2021.1.17 -- 修复暂停(停止)进度条卡住的bug,shuffledns子域名爆破采用多线程提高效率,修复截图和指纹识别选项卡错误,修复扫描结束进度条卡在漏洞扫描处bug,修复了项目详细中域名资产统计bug,优化项目暂停时发起celery任务终止请求

2021.11.22 -- 上传到github,目前在每日新poc扫描模块和是否是新资产识别存在一定的bug,但并不影响整个项目运行

2021.11.15 -- 修复一堆bug

2021.11.8 -- 完成整体代码,打包成功运行,后续可能有bug再做调整

2021.10.29 -- 完成备案查询,一键获取域名和子公司域名

2021.10.27 -- 完成host碰撞插件,完成apk域名提取插件,完成邮件推送,完成定时任务功能

2021.10.18 -- 完成docker镜像的构建,具体细节有待调整,计划实现插件功能

2021.10.11 -- 完成简单主页,完成项目详细页面(全网段信息统计待定),站点详细页面,待完成:邮件推送功能,快捷插件

2021.9.29 -- 完成所有扫描逻辑, 完成扫描结果页面, 待完成事项:主页,项目详细页面,站点详细页面,邮件推送功能,快捷插件

2021.9.27 -- 完成资产的增删改,完成域名爆破,端口扫描,web扫描,目录扫描的扫描逻辑

2021.9.23 -- 完成资产添加,资产管理,扫描模式,扫描周期,系统配置,资产详细(25%)

2021.9.13 -- 数据库交互确认,数据渲染逻辑确认,完成资产管理页面,资产添加页面(50%),扫描模式添加页面(25%)

2021.9.10 -- 搭建好了前端,罗列好了目录,使用框架(https://github.com/app-generator/flask-datta-able)

系统搭建

git clone https://github.com/SiJiDo/H.git
cd H && docker-compose build

配置修改

注意这里个坑,目前没有解决,在腾讯云上运行正常,在华为云上会报错,如果在自己的vps上报错,注释掉下面

位置在,该文件为celery的客户端启动文件,H/client/Dockerfile, 17~19行

9.35.11

建议修改下redis和rabbitmq的密码,在H/docker-compose.yml中

version: '3'
services:
  server:
    restart: always
    build: .
    ports:
      - "5005:5005"
      - "5004:5004"
    tty: true
    restart: always
    networks:
      - H_network
  
  rabbitmq:
    image: rabbitmq:3.8.3-management
    container_name: rabbitmq
    restart: always
    ports:
      - 5672:5672
      - 15672:15672
    environment:
      - RABBITMQ_DEFAULT_VHOST=H_broker
      - RABBITMQ_DEFAULT_USER=[rabbitmq账号]
      - RABBITMQ_DEFAULT_PASS=[rabbitmq密码]
      - RABBITMQ_VM_MEMORY_HIGH_WATERMARK=2147483648
    networks:
      - H_network

  redis:
    image: redis
    container_name: redis
    command: redis-server --requirepass [redis密码]
    restart: always
    ports:
      - 6379:6379
    networks:
      - H_network

  worker:
    build: client/.
    tty: true
    environment:
      DEBUG: 'False'
      BROKER: 'amqp:https://[rabbitmq账号]:[rabbitmq密码]@rabbitmq:5672/H_broker'
      BACKEND: 'redis:https://:[redis密码]@redis:6379/2'
      TZ: Asia/Shanghai
    restart: always
    networks:
      - H_network

networks:
  H_network:
    driver: bridge

以及H/config.ini

[CELERY_CONFIG]
CELERY_BROKER_URL = amqp:https://[rabbitmq账号]:[rabbitmq密码]@rabbitmq:5672/H_broker
CELERY_RESULT_BACKEND = redis:https://:[redis密码]@redis:6379/2

[DATABASE]
DB_HOST = 127.0.0.1
DB_USER = root
DB_PASSWD = root
DB_DATABASE = H
DB_PORT = 3306

启动服务

搭建好后就是运行,服务端启动

#启动整个docker容器
docker-compose up -d

docker exec -it h_server_1 bash
cd /app && nohup python3 run.py &

客户端启动

docker exec -it h_worker_1 bash

#如果你注释了开头的那段配置文件,你需要进入容器运行那一段代码
cd /tmp && wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && apt install -y ./google-chrome-stable_current_amd64.deb

cd /app
python3 client_run.py

#需要启动哪些模块,可以在下面文件中配置
vim /app/config.ini

之后访问vps的5005端口,即可看到登录页面,默认账号为admin/123456

10.48.25

多台部署

如果你要部署多台,可以在第二台主机上这样运行,修改H/docker-compose.yml,只保留worker的配置,并且rabbitmq和redis的ip设置为主服务器(搭建了rabbitmq和redis的那台服务器的ip)

services:
  worker:
    build: client/.
    tty: true
    environment:
      DEBUG: 'False'
      BROKER: 'amqp:https://[rabbitmq账号]:[rabbitmq密码]@[rabbitmq服务器的ip]:5672/H_broker'
      BACKEND: 'redis:https://:[redis密码]@[redis服务器的ip]:6379/2'
      TZ: Asia/Shanghai
    restart: always
    networks:
      - H_network

networks:
  H_network:
    driver: bridge

使用简介