EasyScanは、指定されたWebサイトのHTTPヘッダー、DNSレコード、その他の設定を検査してセキュリティを分析するPythonスクリプトです。このスクリプトは、スコア、グレード、および潜在的な脆弱性に対処するための推奨事項を含むセキュリティレポートを生成します。
このスクリプトは以下のテストケースをカバーしています。
Referrer-Policyヘッダーとメタタグを確認します。/admin、/wp-admin、/phpmyadmin、/cpanel)をスキャンします。/images、/uploads、/filesなど)で公開ディレクトリリスティングがないか確認します。Set-CookieヘッダーでSecure、HttpOnly、SameSite属性および__Secure-/__Host-プレフィックスを確認します。Server、X-Powered-By、X-AspNet-Versionヘッダーを確認します。Access-Control-Allow-Origin設定とワイルドカードと資格情報の競合を確認します。Content-Typeヘッダーの欠落を確認します。robots.txtをスキャンして、潜在的に機密性の高い禁止パスを検出します。OPTIONSリクエストを送信して、危険な動詞(TRACE、DELETE、PUT、CONNECT)を検出します。.git/config、.env、.htaccess、backup.sql、wp-config.php.bakなどをプローブします。<script>および<link>タグでintegrity属性が欠落していないかスキャンします。http://リソースURLを検出します。X-Frame-OptionsとCSPのframe-ancestorsの両方をチェックして、クリックジャッキング対策を確認します。Hostヘッダーがリダイレクトまたはレスポンス本文に反映されるかテストします。url、next、redirect、returnなど)をテストして、オープンリダイレクトの脆弱性を確認します。EasyScanはPython 3.6以上と以下のライブラリが必要です。
requestsbeautifulsoup4dnspythoncertifiこれらの依存関係は、提供されているrequirements.txtファイルを使用してインストールできます。
pip install -r requirements.txt
EasyScanスクリプトを使用するには、以下の手順に従ってください。
easyscan.pyというファイルに保存します。pip install -r requirements.txt
python3 easyscan.py [url]
基本スキャン:
python3 easyscan.py example.com
JSON出力をファイルに保存してスキャン:
python3 easyscan.py example.com --json --output report.json
より長いタイムアウトと詳細ログでスキャン:
python3 easyscan.py https://example.com --timeout 20 --verbose
--jsonフラグを使用すると、構造化されたJSON出力が得られ、他のツールとの統合に便利です。
python3 easyscan.py example.com --json
JSONレポートには、集計スコア(0-100)、文字グレード(A-F)、重要度カウント、およびすべての調査結果を含むscoreオブジェクトが含まれます。
================================================================================================================================================================
SECURITY REPORT
================================================================================================================================================================
Header Status Severity Recommendation
================================================================================================================================================================
[CRI] SSL/TLS Missing Critical The site is not using HTTPS. Implement SSL/TLS to encrypt data in transit.
[HI] Clickjacking No Protection High Set 'X-Frame-Options: DENY' or CSP 'frame-ancestors' directive to prevent clickjacking.
[HI] Public Admin Page (/admin) Accessible High Restrict access to /admin to specific IP addresses and/or enable authentication.
[MED] Content-Security-Policy Missing Medium Implement a Content Security Policy (CSP) to prevent XSS and code injection attacks.
[MED] Strict-Transport-Security Missing Medium Implement Strict Transport Security (HSTS) to enforce secure connections.
[MED] Permissions-Policy Missing Medium Set a 'Permissions-Policy' header to restrict browser features (camera, microphone, geolocation).
[LOW] SPF Record Missing Low Add an SPF record to your domain's DNS settings to help prevent email spoofing.
[INF] Meta Referrer Missing Low Add a 'referrer' META tag with 'no-referrer' to prevent leaking referrer information.
============================================================
SECURITY SCORE: 55/100 (Grade: C)
============================================================
Total Issues : 8
Critical : 1
High : 2
Medium : 4
Low : 1
Info : 0
============================================================
このスクリプトはすべてのセキュリティシナリオを網羅しているわけではないことに留意し、ウェブサイトに対して徹底的なセキュリティ評価を実施することをお勧めします。
EasyScanはhttps://easyscan.onrender.com/ でも利用可能です。
ご質問や完全なセキュリティ監査が必要な場合は、Twitter @0xdevrel までお問い合わせください。
| フラグ | 説明 |
|---|
url | 位置引数。スキャンするURL(例:example.com または https://example.com)。 |
--json | 結果をJSONとしてstdoutに出力します。 |
--output FILE / -o FILE | レポートを特定のファイルに保存します。 |
--timeout SECS / -t SECS | リクエストのタイムアウトを秒単位で設定します(デフォルト:10)。 |
--verbose / -v | デバッグレベルのログ出力を有効にします。 |