
أداة مسح شاملة مكتوبة بلغة Python3، تُستخدم أساسًا للتحقق من البقاء، كشف الملفات الحساسة (فحص الدلائل / كشف واجهات برمجة التطبيقات المسربة من JavaScript / كشف التعليقات المسربة من HTML)، التعرف على WAF/CDN، فحص المنافذ، التعرف على البصمات/الخدمات، التعرف على أنظمة التشغيل، فحص POC، حقن SQL، تجاوز CDN، الاستعلام عن المواقع المجاورة، وغيرها. تُستخدم بشكل أساسي للاختبار الذاتي من قبل العميل أو الاختبار المصرح به من قبل الطرف الثاني، يُرجى عدم استخدامها للتخريب.
English | 简体中文
أداة مسح شاملة بلغة Python3، تستخدم بشكل أساسي للكشف عن الملفات الحساسة (مسح الدليل وتسرب واجهات JS)، التعرف على WAF/CDN، مسح المنافذ، التعرف على البصمة/الخدمة، التعرف على نظام التشغيل، كشف كلمات المرور الضعيفة، مسح POC، حقن SQL، تجاوز CDN، فحص المواقع المجاورة.
2019.8.19
أضيف منع مسح نطاقات gov.cn و edu.cn، ويتوقف البرنامج فور اكتشافها
تعديل واجهة إخراج البرنامج لتكون بصيغة الوقت + الإضافة + النطاق + النتيجة
إزالة إضافة حقن SQL القديمة وإضافة إضافة كشف كلمات المرور الضعيفة (Mysql، Postgresql، SSH، إلخ)
دمج قاعدة بصمات Fofa مع WEBEYE. قاعدة بصمات 2000+
2019.7.19
إضافة وكيل عالمي socks5
تجميع طلبات requests
تحسين هيكل الدليل
حذف التقرير html القديم، واستخدام تقرير html المستخرج من Perun
إزالة إخراج نتائج json، وتعديل التخزين في قاعدة بيانات sqllite3، مع إزالة التكرار عند الإدخال، وتخطي الهدف إذا كان موجودًا بالفعل في ملف db أثناء المسح
إضافة إضافة كشف تسرب المعلومات الشائعة مثل phpinfo، leaves
إضافة واجهة viewdns.info إلى Pdns
2019.7.1
عرض المضيف الذي فشل اختبار ping
يمكن للأمر -u إضافة أهداف متعددة، مفصولة بفواصل
إصلاح خطأ في التعرف على البصمة
2019.6.18
إصلاح مشكلة خطأ التعرف على بصمة موقع iis، تعديل apps.json
إزالة بعض المكتبات والبرامج النصية التابعة المعرضة للخطأ
إذا انتهى المسح بسرعة، فذلك لأن البرنامج يقوم أولاً بفحص تحليل DNS وعملية ping
عند استخدام Vxscan لأول مرة، يقوم fake_useragent بتحميل قائمة ua من https://fake-useragent.herokuapp.com/browsers/0.1.11، وقد يحدث خطأ انتهاء مهلة التحميل.
إصدار Python > 3.6
requests
pyfiglet
fake-useragent
beautifulsoup4
tldextract
python-nmap
geoip2
lxml
pymongo
virustotal_python
dnspython
pysocks
wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
بعد فك الضغط، ضع GeoLite2-City.mmdb في vxscan/data/GeoLite2-City.mmdb
wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-ASN.tar.gz
بعد فك الضغط، ضع GeoLite2-ASN.mmdb في vxscan/data/GeoLite2-ASN.mmdb
pip3 install -r requirements.txt
python3 Vxscan.py -h
optional arguments:
-h, --help show this help message and exit
-u URL, --url URL Start scanning this url -u xxx.com
-i INET, --inet INET cidr eg. 1.1.1.1 or 1.1.1.0/24
-f FILE, --file FILE read the url from the file
1. مسح موقع ويب
python3 vxscan.py -u http://www.xxx.com/
2. مسح موقع ويب من ملف قائمة
python3 vxscan.py -f hosts.txt
3. مثال cidr 127.0.0.0/24
python3 vxscan.py -i 127.0.0.0/24
├─Vxscan.py master file
├─data
│ ├─apps.json Web fingerprint information
│ ├─apps.txt Web fingerprint information (WEBEYE)
│ ├─GeoLite2-ASN.mmdb geoip
│ ├─GeoLite2-City.mmdb asn
├─doc to store some image or document resources
├─report html report related content
├─lib
│ ├─common.py Determine CDN, port scan, POC scan, etc.
│ ├─color.py terminal color output
│ ├─cli_output.py terminal output
│ ├─active.py to judge dns resolution and ping ip survival
│ ├─save_html.py Generate html reports
│ ├─waf.py waf rules
│ ├─options.py option settings
│ ├─iscdn.py Determine whether IP is CDN based on ip segment and asn range
│ ├─osdetect.py OS version identification
│ ├─random_header.py custom header header
│ ├─settings.py setting script
│ ├─vuln.py Batch call POC scan
│ ├─url.py Deduplicate the fetched connection
│ ├─verify.py script provides verification interface
│ ├─sqldb.py All related to sqlite3 are here
│ ├─Requests.py packaged requests library, do some custom settings
├─script
│ ├─Poc.py Poc script
│ ├─......
├─Plugins
│ ├─ActiveReconnaissance
│ ├─active.py to determine host survival and verify dns resolution
│ ├─check_waf.py judge website waf
│ ├─crawk.py Crawl website links and test
│ ├─osdetect.py Operating System Identification
│ ├─InformationGathering
│ ├─geoip.py Location Search
│ ├─js_leaks.py js information disclosure
│ ├─PassiveReconnaissance
│ ├─ip_history.py pdns interface
│ ├─reverse_domain.py side station query
│ ├─virustotal.py VT Pdns query
│ ├─wappalyzer.py CMS passive fingerprint recognition
│ ├─Scanning
│ ├─dir_scan directory scan
│ ├─port_scan port scan
├─requirements.txt
├─report.py html report generation
├─logo.jpg
├─error.log
# coding=utf-8
# global timeout
TIMEOUT = 5
# Is the status to be excluded
BLOCK_CODE = [
301, 403, 308, 404, 405, 406, 408, 411, 417, 429, 493, 502, 503, 504, 999
]
# Set scan thread
THREADS = 100
# Content type to exclude
BLOCK_CONTYPE = [
'image/jpeg', 'image/gif', 'image/png', 'application/javascript',
'application/x-javascript', 'text/css', 'application/x-shockwave-flash',
'text/javascript', 'image/x-icon'
]
# Whether to skip directory scanning
SCANDIR = True
# Whether to start the POC plugin
POC = True
# Skip if it exists in the result db
CHECK_DB = False
# invalid 404 page
PAGE_404 = [
'page_404"', "404.png", '找不到页面', '页面找不到', "Not Found", "访问的页面不存在",
"page does't exist", 'notice_404', '404 not found'
]
# ping
PING = True
# socks5 proxy
# SOCKS5 = ('127.0.0.1', 1080)
SOCKS5 = ()
# shodan
SHODAN_API = ''
# VT
VIRUSTOTAL_API = ''
# cookie
COOKIE = {'Cookie': 'test'}
1. استدعاء POC بناءً على فتح المنفذ أو نتائج التعرف على البصمة
قم بإنشاء ملف بايثون جديد في دليل script، عرّف دالة check، المعاملات المرسلة هي عنوان IP، قائمة المنافذ، قائمة التعرف على البصمة، ثم أعد النتيجة:
import pymongo
from lib.verify import verify
timeout = 2
vuln = ['27017', 'Mongodb']
def check(ip, ports, apps):
# Verify is used to verify if there is a Mongodb related result in the scan list. If the port is not open, it will not be scanned.
if verify(vuln, ports, apps):
try:
conn = pymongo.MongoClient(host=ip, port=27017, serverSelectionTimeoutMS=timeout)
database_list = conn.list_database_names()
if not database_list:
conn.close()
return
conn.close()
return '27017 MongoDB Unauthorized Access'
except Exception as e:
pass
2. المرور عبر كل منفذ HTTP مفتوح للهدف
قم بإنشاء url المراد مسحه بناءً على قائمة خدمات المنفذ المرسلة، ثم قم بزيارته في كل منفذ ويب. النص التالي سيحصل على عنوان كل منفذ http للـ ip.
from lib.verify import get_list
from lib.random_header import HEADERS
from lxml import etree
import requests
def get_title(url):
try:
r = requests.get(url, headers=HEADERS, timeout=3, verify=False)
html = etree.HTML(r.text)
title = html.xpath('//title/text()')
return url + ' | ' + title[0]
except:
pass
def check(ip, ports, apps):
result = []
probe = get_list(ip, ports)
for i in probe:
out = get_title(i)
if out:
result.append(out)
return result
كيفية إضافة ميزات التعرف على البصمة
قم بتعديل محتويات ملف data/apps.txt
1. مطابقة رأس HTTP
Cacti|headers|Set-Cookie|Cacti=
2. مطابقة نص استجابة HTTP
ASP|index|index|<a[^>]?href=('|")[^http][^>]?.asp(?|#|\1)
3. تقسيم رؤوس Headers للمطابقة في k أو v
ThinkSNS|match|match|T3_lang
360
360wzws
Anquanbao
Armor
BaiduYunjiasu
AWS WAF
AdNovum
Airee CDN
Art of Defence HyperGuard
ArvanCloud
Barracuda NG
Beluga CDN
BinarySEC
BlockDoS
Bluedon IST
CacheFly CDN
ChinaCache CDN
Cisco ACE XML Gateway
CloudFlare CDN
Cloudfront CDN
Comodo
CompState
DenyALL WAF
DenyAll
Distil Firewall
DoSArrest Internet Security
F5 BIG-IP APM
F5 BIG-IP ASM
F5-TrafficShield
Fastly CDN
FortiWeb
FortiWeb Firewall
GoDaddy
GreyWizard Firewall
HuaweiCloudWAF
HyperGuard Firewall
IBM DataPower
ISAServer
Immunify360
Imperva SecureSphere
Incapsula CDN
Jiasule
KONA
KeyCDN
ModSecurity
NGENIX CDN
NSFOCUS
Naxsi
NetContinuum
NetContinuum WAF
Neusoft SEnginx
Newdefend
Palo Alto Firewall
PerimeterX Firewall
PowerCDN
Profense
Qiniu CDN
Reblaze Firewall
SDWAF
Safe3
Safedog
SiteLock TrueShield
SonicWALL
SonicWall
Sophos UTM Firewall
Stingray
Sucuri
Teros WAF
Usp-Sec
Varnish
Wallarm
WatchGuard
WebKnight
West263CDN
Yundun
Yunsuo
ZenEdge Firewall
aesecure
aliyun
azion CDN
cloudflare CDN
dotDefender
limelight CDN
maxcdn CDN
mod_security
yunsuo
فيما يلي نتائج اختبار موقع AWVS scanner

يعتمد التعرف على البصمة بشكل أساسي على Wappalyzer و WebEye:
https://github.com/b4ubles/python3-Wappalyzer
https://github.com/zerokeeper/WebEye
المراجع لـ Poc:
BBscan scanner https://github.com/lijiejie/BBScan
POC-T https://github.com/Xyntax/POC-T/tree/2.0/script
Perun https://github.com/WyAtu/Perun
المرجع لمسح المنافذ وتحديد الخدمة:
https://raw.githubusercontent.com/AnthraX1/InsightScan/master/scanner.py
استخراج التعبيرات العادية للمعلومات الحساسة من Js بالرجوع إلى:
https://github.com/nsonaniya2010/SubDomainizer
تقييم WAF باستخدام قواعد waf00f و whatwaf:
https://github.com/EnableSecurity/wafw00f
https://github.com/Ekultek/WhatWaf
تقرير html مستخدم من:
https://github.com/WyAtu/Perun
https://github.com/ly1102