Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
Autumn-27 committed Jun 5, 2024
0 parents commit a589d47
Show file tree
Hide file tree
Showing 1,722 changed files with 216,206 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.idea
__pycache__/
__pycache__
config.yaml
113 changes: 113 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<div align=center>
<img src="docs/images/favicon.ico"/>
</div>

中文 | [English](./README_EN.md)

## 网址

- 官网:[https://www.scope-sentry.top](https://www.scope-sentry.top)
- Github: [https://github.com/Autumn-27/ScopeSentry](https://github.com/Autumn-27/ScopeSentry)
- 扫描端源码:[https://github.com/Autumn-27/ScopeSentry-Scan](https://github.com/Autumn-27/ScopeSentry-Scan)

## 介绍
Scope Sentry是一款具有资产测绘、子域名枚举、信息泄露检测、漏洞扫描、目录扫描、子域名接管、爬虫、页面监控功能的工具,通过构建多个节点,自由选择节点运行扫描任务。当出现新漏洞时可以快速排查关注资产是否存在相关组件。



## 目前功能
- 子域名枚举
- 子域名接管检测
- 端口扫描
- 资产识别
- 目录扫描
- 漏洞扫描
- 敏感信息泄露检测
- URL提取
- 爬虫
- 页面监控
- 自定义WEB指纹
- POC导入
- 资产分组
- 多节点扫描
- webhook

## To DO
- 插件系统
- 弱口令爆破
- 数据清洗
- 数据共享?
- ~

## 安装

安装教程见[官网](https://www.scope-sentry.top)

## 交流

Discord:

[https://discord.gg/agsYdAyN](https://discord.gg/agsYdAyN)

QQ:

<img src="docs/images/qq.png" alt="QQ" width="200"/>

WX:

<img src="docs/images/wx.png" alt="WX" width="200"/>

## 截图

### 登录

![alt text](docs/images/login.png)

### 首页面板
![alt text](docs/images/index-cn.png)

## 资产数据
### 资产
![alt text](docs/images/asset-cn.png)

### 子域名
![alt text](docs/images/subdomain-cn.png)

### 子域名接管
![alt text](docs/images/subt-cn.png)

### URL
![alt text](docs/images/url-cn.png)

### 爬虫
![alt text](docs/images/craw-cn.png)

### 敏感信息
![alt text](docs/images/sns-cn.png)

### 目录扫描
![alt text](docs/images/dir-cn.png)

### 漏洞
![alt text](docs/images/vul-cn.png)

### 页面监控
![alt text](docs/images/page-cn.png)

## 项目

![](docs/images/project-cn.png)

## 任务

![](docs/images/task-cn.png)

## 任务进度

![](docs/images/task-pg-cn.png)

## 节点

![](docs/images/node-cn.png)


101 changes: 101 additions & 0 deletions README_EN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<div align=center>
<img src="docs/images/favicon.ico"/>
</div>


## Website

- Official Website: [https://www.scope-sentry.top](https://www.scope-sentry.top)
- Github: [https://github.com/Autumn-27/ScopeSentry](https://github.com/Autumn-27/ScopeSentry)
- Scanner source code: [https://github.com/Autumn-27/ScopeSentry-Scan](https://github.com/Autumn-27/ScopeSentry-Scan)

## Introduction
Scope Sentry is a tool with functions such as asset mapping, subdomain enumeration, information leakage detection, vulnerability scanning, directory scanning, subdomain takeover, crawler, and page monitoring. By building multiple nodes, users can freely choose nodes to run scanning tasks. When new vulnerabilities emerge, it can quickly check whether the concerned assets have related components.

## Current Features
- Subdomain Enumeration
- Subdomain Takeover Detection
- Port Scanning
- Asset Identification
- Directory Scanning
- Vulnerability Scanning
- Sensitive Information Leakage Detection
- URL Extraction
- Crawler
- Page Monitoring
- Custom WEB Fingerprint
- POC Import
- Asset Grouping
- Multi-Node Scanning
- Webhook

## To Do
- Plugin System
- Weak Password Cracking
- Data Cleaning
- Data Sharing?
- ~
## Installation

For installation instructions, see the [official website](https://www.scope-sentry.top)

## Communication

Discord:

[https://discord.gg/agsYdAyN](https://discord.gg/agsYdAyN)


## Screenshots

### Login

![alt text](docs/images/login.png)

### Homepage Dashboard
![alt text](docs/images/index-en.png)

## Asset Data
### Assets
![alt text](docs/images/asset-en.png)

### Subdomains
![alt text](docs/images/subdomain-en.png)

### Subdomain Takeover
![alt text](docs/images/subt-en.png)

### URL
![alt text](docs/images/url-en.png)

### Crawler
![alt text](docs/images/craw-en.png)

### Sensitive Information
![alt text](docs/images/sns-en.png)

### Directory Scanning
![alt text](docs/images/dir-en.png)

### Vulnerabilities
![alt text](docs/images/vul-en.png)

### Page Monitoring
![alt text](docs/images/page-en.png)

## Projects

![](docs/images/project-cn.png)

## Tasks

![](docs/images/task-en.png)

## Task Progress

![](docs/images/task-pg-en.png)

## Nodes

![](docs/images/node-cn.png)

70 changes: 70 additions & 0 deletions api/SubdoaminTaker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# -------------------------------------
# @file : SubdoaminTaker.py
# @author : Autumn
# @contact : rainy-autumn@outlook.com
# @time : 2024/4/27 15:41
# -------------------------------------------
from fastapi import APIRouter, Depends
from motor.motor_asyncio import AsyncIOMotorCursor
from pymongo import DESCENDING
from api.users import verify_token
from core.config import POC_LIST
from core.db import get_mongo_db
from core.util import search_to_mongodb
from loguru import logger
router = APIRouter()

@router.post("/subdomaintaker/data")
async def get_subdomaintaker_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
try:
search_query = request_data.get("search", "")
page_index = request_data.get("pageIndex", 1)
page_size = request_data.get("pageSize", 10)
# MongoDB collection for SensitiveRule
# Fuzzy search based on the name field
keyword = {
'domain': 'input',
'value': 'value',
'type': 'cname',
'response': 'response',
'project': 'project',
}
query = await search_to_mongodb(search_query, keyword)
if query == "" or query is None:
return {"message": "Search condition parsing error", "code": 500}
query = query[0]
# Get the total count of documents matching the search criteria
total_count = await db.SubdoaminTakerResult.count_documents(query)
if total_count == 0:
return {
"code": 200,
"data": {
'list': [],
'total': 0
}
}
# Perform pagination query
cursor: AsyncIOMotorCursor = db.SubdoaminTakerResult.find(query).skip((page_index - 1) * page_size).limit(page_size)
result = await cursor.to_list(length=None)
# Process the result as needed
response_data = []
for doc in result:
data = {
"host": doc["input"],
"value": doc["value"],
"type": doc["cname"],
"response": doc["response"],
}
response_data.append(data)
return {
"code": 200,
"data": {
'list': response_data,
'total': total_count
}
}

except Exception as e:
logger.error(str(e))
# Handle exceptions as needed
return {"message": "error","code":500}
3 changes: 3 additions & 0 deletions api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# -*- coding:utf-8 -*-  
# @name: __init__.py
# @version:
Binary file added api/__pycache__/__init__.cpython-37.pyc
Binary file not shown.
Binary file added api/__pycache__/configuration.cpython-37.pyc
Binary file not shown.
Binary file added api/__pycache__/dictionary.cpython-37.pyc
Binary file not shown.
Binary file added api/__pycache__/fingerprint.cpython-37.pyc
Binary file not shown.
Binary file added api/__pycache__/node.cpython-37.pyc
Binary file not shown.
Binary file added api/__pycache__/poc.cpython-37.pyc
Binary file not shown.
Binary file added api/__pycache__/sensitive.cpython-37.pyc
Binary file not shown.
Binary file added api/__pycache__/users.cpython-37.pyc
Binary file not shown.
Loading

0 comments on commit a589d47

Please sign in to comment.