{"id":13842981,"url":"https://github.com/smallcham/sec-admin","last_synced_at":"2026-01-16T06:53:55.509Z","repository":{"id":40621040,"uuid":"253002208","full_name":"smallcham/sec-admin","owner":"smallcham","description":"分布式资产安全扫描核心管理系统(弱口令扫描，漏洞扫描)","archived":false,"fork":false,"pushed_at":"2022-12-08T03:59:02.000Z","size":62,"stargazers_count":601,"open_issues_count":19,"forks_count":118,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-21T14:38:11.823Z","etag":null,"topics":["exploits","infosec","python","scanner","security","security-audit","vulnerability-scanners"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smallcham.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-04T13:20:34.000Z","updated_at":"2024-11-19T01:24:55.000Z","dependencies_parsed_at":"2023-01-25T07:31:07.364Z","dependency_job_id":null,"html_url":"https://github.com/smallcham/sec-admin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/smallcham/sec-admin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallcham%2Fsec-admin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallcham%2Fsec-admin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallcham%2Fsec-admin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallcham%2Fsec-admin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smallcham","download_url":"https://codeload.github.com/smallcham/sec-admin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smallcham%2Fsec-admin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264862563,"owners_count":23674996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["exploits","infosec","python","scanner","security","security-audit","vulnerability-scanners"],"created_at":"2024-08-04T17:01:52.752Z","updated_at":"2026-01-16T06:53:55.497Z","avatar_url":"https://github.com/smallcham.png","language":"Python","readme":"# SEC-分布式资产安全扫描（弱口令、系统漏洞、WEB漏洞扫描）\n----------\n **SEC (SEC Is Elastic Controller)** 可用于企业对服务器资源安全进行扫描排查，可控性强、可停止运行中的扫描任务、支持分布式多节点部署，更快的扫描进度 + 节点执行信息动态反馈，快速定位漏洞。\n\n 作者开源此应用的目的是为了方便企业管理自身的服务器资产，提高安全性，以避免不必要的损失；同时也能与大家一起探讨学习，请使用者不要用于非法目的，自觉遵守 [**《中华人民共和国网络安全法》**](http://www.cac.gov.cn/2016-11/07/c_1119867116.htm) ，一起为祖国的网络安全做贡献。\n\n----------\n\n## 流程演示视频\n\n[![](https://smallcham.github.io/static/img/sec-demo.png)](https://smallcham.github.io/static/video/sec-demo.mp4)\n\n----------\n\n## 版本更新\n#### 最初版:\n* 目标端口服务发现\n* 目标系统识别\n* 漏洞扫描\n* 用户管理\n* 自定义扫描插件\n* 字典\n\n#### 2.0：\n* 子域名识别自动添加扫描任务\n* DNS获取、CDN厂商识别（可在字典追加特征记录）\n* 对暴露Web服务目标进行网页标题以及关键字抓取\n* 支持对任务的批量处理操作、对结果集操作\n* 支持对资产的批量处理操作、对结果集操作\n* 优化删除任务速度\n\n----------\n\n## 系统组成介绍\n\nSEC共分为三个项目\n* [前端WEB项目](https://github.com/smallcham/sec-admin-web.git)\n* [中央控制系统](https://github.com/smallcham/sec-admin.git)\n* [任务执行系统](https://github.com/wanzywang/sec-scannode.git)\n\n\u003e **前端WEB系统**\n使用动静分离的方式部署， WEB页面部分使用 Vue + ElementUI 编写，所有的UI都在这个项目中。\n\n\u003e **中央控制系统**\n使用Python3 + Flask编写，负责录入资产的端口服务发现、任务执行统计、资产管理、数据字典、漏洞插件管理、用户管理、扫描任务下发以及同步等后台实现，添加的IP会立即进行端口服务以及系统探测。\n\n\u003e **任务执行系统**\n使用Python3编写，负责处理执行下发的扫描任务，并回馈处理结果。\n执行系统以进程为执行单位，可在同一台机器部署多个进程服务，**支持多节点分布式部署**。\n\n## 部署方式（共有三种部署方式）\n\n### 一、  一键部署\n\n一键部署已经将所有服务以及启动脚本打包成docker镜像， 可以直接运行，数据库以及相关公用服务直接打包在容器内部，不支持分布式节点扩展，可作为体验测试，**不建议直接作为生产环境使用**。\n1. 首先需要安装Docker服务，Ubuntu可使用以下指令直接安装（**已经安装Docker服务并启动的直接调到第 3 步**）\n\nUbuntu: \n```\nsudo apt-get -y install docker.io\n```\n\nCentOS: \n\n\u003e [请根据docker官方文档步骤进行安装] (https://docs.docker.com/engine/install/centos/)\n\n2. 启动Docker服务（**已经安装Docker服务并启动的直接调到第 3 步**）\n\n```\nsudo service docker start\n```\n\n3. 启动SEC服务(**指令中8000是后台访问端口， 可根据需求修改为其他端口，NODE_COUNT 为执行节点启动的进程数，默认为3**)\n\n```\ndocker run -d -p 8000:80 --name sec --env NODE_COUNT=3 smallcham/sec:all-in-0.3 \u0026\u0026 docker logs -f sec --tail 10\n```\n\n4. 服务启动后初始用户为：root， 初始密码将会打印在控制台，可在登录后修改。\n\n### 二、使用容器分布式部署（推荐）\n\n1. 首先需要安装Docker服务，Ubuntu可使用以下指令直接安装（**已经安装Docker服务并启动的直接调到第 3 步**）\n\nUbuntu: \n```\nsudo apt-get -y install docker.io\n```\n\nCentOS: \n```\nsudo yum -y install docker.io\n```\n\n2. 启动Docker服务（**已经安装Docker服务并启动的直接调到第 3 步**）\n\n```\nsudo service docker start\n```\n\n3. 使用容器启动并初始化MySQL数据库\n\n```\ndocker run --name sec-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secpassword -d mysql:5.7\n```\n\n```\nwget https://raw.githubusercontent.com/smallcham/sec-admin/master/pack/create_db.sql\n```\n\n等待半分钟，mysql启动完毕后执行\n\n\u003e 注意：如果你从老版本SEC升级安装到新版，也请务必再次执行SQL\n\n```\ndocker exec -i sec-mysql sh -c 'exec mysql -uroot -p\"$MYSQL_ROOT_PASSWORD\"' \u003c /你下载的目录/create_db.sql\n```\n\n\u003e 如果你要使用自己现有的数据库可以直接将[create_db.sql](https://github.com/smallcham/sec-admin/blob/master/pack/create_db.sql)中的SQL执行进行初始化，注意：如果你从老版本SEC升级安装到新版，也请务必再次执行SQL\n\n4. 使用容器启动Redis\n\n```\ndocker run -p 6379:6379 --name sec-redis -d redis\n```\n\n\u003e 你也可以使用自己现有的Redis\n\n5. 使用容器启动SEC控制系统\n\n```\ndocker run -d -p 启动端口:80 --name sec --env HOST=http://部署机器的IP:启动端口（启动后用这个URL在浏览器访问） --env DB_URL=MySQL用户名:MySQL密码@MySQLIP:数据库端口(一默认是3306)/sec --RDS_URL=Redis库号(默认写0):Redis密码(没有密码可以不写)@RedisIP:Redis端口(默认是6379) -v ~/sec-script:/var/www/html/sec-admin/static/plugin/usr smallcham/sec:core-0.1 \u0026\u0026 docker logs -f sec --tail 10\n```\n\n\u003e 例如\n\n```\ndocker run -d -p 8793:80 --name sec --env HOST=http://192.168.0.107:8793 --env DB_URL=root:abcd1234@192.168.0.107:3306/sec --env RDS_URL=0:abcd1234@192.168.0.107:6379 -v ~/sec-script:/var/www/html/sec-admin/static/plugin/usr smallcham/sec:core-0.2 \u0026\u0026 docker logs -f sec --tail 10\n```\n\n\n6. 登录SEC管理系统\n使用节点添加功能生成并拷贝到终端执行节点安装指令，节点支持分布式，只要保证部署服务器与控制系统以及Redis之间互通即可，当然也可以直接在同一台服务器部署，详细操作请查看[演示视频](https://smallcham.github.io/static/video/sec-demo.mp4)\n\n### 三、不使用容器本地部署（以下示例基于Ubuntu）\n\n1. 安装MySQL、Redis、Nodejs、npm、Nginx、Python3、pip3\n各种类的系统内的安装方法都大同小异， 这里就不作详细介绍。\n2. 编译Web页面项目\n ```\n * git clone https://github.com/smallcham/sec-admin-web.git\n * cd 你的项目路径/sec-admin-web/\n * npm install\n * npm run build\n * ln -s 你的项目路径/sec-admin-web/dist 你的Nginx网站目录/\n```\n编译好的静态文件在项目的 dist 目录\n3. 运行SEC核心控制系统\n```\n * git clone https://github.com/smallcham/sec-admin.git\n * cd 你的项目路径/sec-admin/\n * pip install -r requirements.txt // 找不到pip的尝试 pip3 install -r requirements.txt\n * git clone https://github.com/aboul3la/Sublist3r\n * python setup.py install //进入Sublist3r目录执行\n * 打开项目路径下的 src/model/enum.py 修改Env类 默认LOCAL判断内的数据库以及Redis配置为你安装的配置\n * nohup gunicorn -w 10 app:flask_app\n```\n4. 配置Nginx访问\n\u003e 以下配置模板供参考，端口或者目录不一样请自行修改。\n\n```\nserver {\n        listen 80 default_server;\n        listen [::]:80 default_server;\n\n        root /var/www/html;\n\n        index index.html index.htm;\n\n        server_name _;\n\n        location / {\n\t\troot /var/www/html/dist;\n\t\ttry_files $uri $uri/ 404;\n        }\n\n        location /api/ {\n                proxy_pass http://localhost:8000/;\n        }\n\n        location /static/plugin/usr/ {\n                proxy_pass http://localhost:8000;\n        }\n}\n```\n配置好后记得重启nginx服务\n5. 启动执行节点\n```\n* git clone https://github.com/wanzywang/sec-scannode.git\n* cd 你的项目路径/sec-scannode/\n* pip install -r requirements.txt // 找不到pip的尝试 pip3 install -r requirements.txt\n* 打开项目根目录的 config.py 修改redis配置为你安装的ip以及密码\n* python -u scan.py\n```\n\n## 功能介绍\n\n### 插件说明\n\nSEC支持添加自定义扫描插件脚本，目前仅支持Python语言，格式如下。\n```\n//target参数为扫描目标， 可以是IP也可以是域名，具体取决于资产录入的是ip还是域名\ndef do(target):\n\tif 发现漏洞:\n\t\treturn True, '发现漏洞，原因***'\n\telse:\n\t\treturn False, ''\n```\n\n可参考以下FTP弱口令扫描脚本\n其中 SEC_USER_NAME、SEC_PASSWORD 为字典功能中录入的Key值，扫描节点会自动将数据字典中添加的内容以设置的分隔符或JSON格式转化为数组或字典，可以通过字典Key值直接引入使用。\n\n```\nfrom ftplib import FTP\n\ndef do(target):\n    port = 21\n    time_out_flag = 0\n    for user in SEC_USER_NAME:\n        print(user)\n        for pwd in SEC_PASSWORD:\n            print(pwd)\n            try:\n                ftp = FTP(target, timeout=3)\n                ftp.connect(target, port, 5)\n                if ftp.login(user, pwd).startswith('2'):\n                    return True, '用户: ' + user + ' 存在弱口令: ' + pwd\n            except Exception as e:\n                if not str(e).startswith('530'):\n                    print(e)\n                if e.args[0] == 113 or e.args[0] == 111 or 'timed out' in str(e):\n                    time_out_flag += 1\n                    if time_out_flag \u003e 2:\n                        print('connection timeout , break the loop .')\n                        return False, ''\n                else:\n                    print(e)\n    return False, ''\n```\n","funding_links":[],"categories":["Python","Python (1887)","漏洞扫描"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallcham%2Fsec-admin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmallcham%2Fsec-admin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmallcham%2Fsec-admin/lists"}