ウェブ列挙(Web Enumeration)の基本と効果的な方法


  1. ディレクトリブルートの列挙: ウェブサイトのディレクトリ構造を特定するため、ディレクトリブルートの列挙が行われます。これにより、隠されたページやディレクトリを発見することができます。たとえば、以下のPythonスクリプトは、指定されたURLのディレクトリをリストアップする方法を示しています。

    import requests
    def enumerate_directories(url):
       response = requests.get(url)
       if response.status_code == 200:
           directories = response.text.splitlines()
           return directories
       else:
           return []
    url = "http://example.com"
    directories = enumerate_directories(url)
    print(directories)
  2. ファイル拡張子の列挙: ウェブサイト上の特定のファイル拡張子を列挙することで、有用な情報を収集することができます。たとえば、以下のコードは、指定されたURLで使用されているファイル拡張子を列挙する方法を示しています。

    import requests
    def enumerate_file_extensions(url):
       response = requests.get(url)
       if response.status_code == 200:
           extensions = set()
           links = response.text.split('"')
           for link in links:
               if link.endswith((".pdf", ".doc", ".xls")):
                   extensions.add(link.split('.')[-1])
           return extensions
       else:
           return set()
    url = "http://example.com"
    extensions = enumerate_file_extensions(url)
    print(extensions)
  3. サブドメインの列挙: ターゲットウェブサイトのサブドメインを列挙することで、追加の攻撃対象を特定することができます。以下のコードは、指定されたドメインのサブドメインを列挙する方法を示しています。

    import dns.resolver
    def enumerate_subdomains(domain):
       subdomains = set()
       try:
           answers = dns.resolver.query(domain, 'A')
           for rdata in answers:
               subdomains.add(str(rdata))
       except dns.resolver.NXDOMAIN:
           pass
       return subdomains
    domain = "example.com"
    subdomains = enumerate_subdomains(domain)
    print(subdomains)

これらはウェブ列挙の基本的な手法の一部です。ウェブアプリケーションのセキュリティ評価やペネトレーションテストにおいて、ウェブ列挙は重要なフェーズであるため、慎重に実施する必要があります。ただし、実施する前に適切な許可を得ることを忘れないでください。