📅  最后修改于: 2023-12-03 15:00:11.209000             🧑  作者: Mango
CyberCrowl 是一款基于 Python 编程语言的 Web 路径扫描工具。它旨在帮助安全测试人员和网络管理员快速扫描 Web 应用程序的内容,并发现网站的敏感目录、文件和隐藏目录等。
git clone https://github.com/Wh0ale/CyberCrowl.git
pip install -r requirements.txt
-h, --help 帮助信息
-u URL, --url URL 扫描目标 URL
-w WORDLIST, --wordlist WORDLIST
设置扫描字典文件路径
-t THREADS, --threads THREADS
设置扫描线程数量,默认为10
-x PROXY, --proxy PROXY
设置代理服务器
-U USER_AGENT, --user-agent USER_AGENT
设置 User-Agent
-o OUTPUT, --output OUTPUT
设置扫描结果保存路径
以下是使用 CyberCrowl 工具对目标网址进行扫描的示例:
python CyberCrowl.py -u http://example.com -w dictionary.txt -t 20 -x http://127.0.0.1:8080 -U Mozilla/5.0 -o result.txt
这会扫描 http://example.com
网站,使用 dictionary.txt
字典,使用 20 个线程进行扫描,使用代理服务器 http://127.0.0.1:8080
,使用 User-Agent Mozilla/5.0
,扫描结果保存在 result.txt
文件中。
dictionaries
目录中设置,可以在 CyberCrowl.py
文件中修改字典路径。完整的 CyberCrowl 工具源码可以在 GitHub 上获取。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
import requests
import threading
import os
class CyberCrowl(object):
def __init__(self, url, dictionary, threads, proxy, user_agent, output):
self.url = url
self.dictionary = dictionary
self.threads = threads
self.proxy = proxy
self.user_agent = user_agent
self.output = output
self.lock = threading.Lock()
self.paths = self._load_dictionary()
def _load_dictionary(self):
with open('./dictionaries/' + self.dictionary, 'r') as f:
data = f.readlines()
return [x.strip() for x in data]
def scan(self):
while True:
try:
path = self.paths.pop()
except IndexError:
break
url = '{}{}'.format(self.url, path)
try:
headers = {
'User-Agent': self.user_agent
}
proxies = {
'http': self.proxy,
'https': self.proxy
}
if self.proxy:
r = requests.get(url, headers=headers, proxies=proxies)
else:
r = requests.get(url, headers=headers)
if r.status_code in [200, 301, 302, 303, 307]:
self.lock.acquire()
print('[+] Found: {}\n'.format(url))
self.lock.release()
if self.output:
with open(self.output, 'a') as f:
f.write('[+] Found: {}\n\n'.format(url))
except requests.exceptions.ConnectionError:
pass
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='CyberCrowl - A Web Path Scanner Tool in Python')
parser.add_argument('-u', '--url', help='the scan target url', required=True)
parser.add_argument('-w', '--wordlist', help='set the scan dictionary file path', default='common.txt')
parser.add_argument('-t', '--threads', help='set the number of threads used for scanning', type=int, default=10)
parser.add_argument('-x', '--proxy', help='set the proxy server', default=None)
parser.add_argument('-U', '--user-agent', help='set the User-Agent', default='Mozilla/5.0')
parser.add_argument('-o', '--output', help='set the scan result save path', default=None)
args = parser.parse_args()
print('[+] Scan start...\n')
CyberCrowl(args.url, args.wordlist, args.threads, args.proxy, args.user_agent, args.output).scan()
print('\n[+] Scan finished.')