• 子域名枚举艺术深度剖析


    本文首发于Freebuf,文章链接

    子域名枚举是信息收集中关键的一步,细节很大程度决定战果。本文参考The Art of Subdomain Enumeration,加上实践运用进行总结。

    被动枚举

    一、证书透明度

    • 证书

    当通过HTTPS访问web时,网站向浏览器提供数字证书,此证书用于识别网站的主机名,由证书颁发机构(CA,Certificate Authority)颁发。

    • 证书透明度

    证书透明度(Certificate Transparency)简称CT,主要用于将证书记录到公开的CT log中,日志可以被任何人浏览。

    • 通过CT log搜索
    https://crt.sh/
    https://censys.io/
    https://developers.facebook.com/tools/ct/
    https://google.com/transparencyreport/https/ct/
    
    • 利用crt.sh,一行代码收集子域名,代码是从国外漏洞赏金猎人那里拷贝的,更多one line,后面持续更新。
    curl -fsSL -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:69.0) Gecko/20100101 Firefox/69.0" "https://crt.sh/?CN=%25.github.com" | sort -n | uniq -c | grep -o -P '(?<=<TD>).*(?=</TD>)' | sed -e '/white-space:normal/d'
    

    二、搜索引擎

    推荐DuckDuckGo,每个人都有自己用着顺手的搜索引擎,just enjoy it。

    • 谷歌
    • 必应
    • DuckDuckGo
    • 百度

    抛砖引玉:),百度子域名枚举效果如下,其实sublist3r也集成了百度、谷歌、必应,接下来会在DNS数据聚合中介绍。

    三、DNS数据聚合

    利用第三方服务进行DNS枚举,它们聚集大量DNS数据集,可以通过它们查找子域。第三方服务亲身体验过DNSdumpster和Netcraft。

    推荐Sublist3r神器,Sublist3r神器集成了Netcraft、Virustotal、ThreatCrowd、DNSdumpster和ReverseDNS,你值得拥有。

    四、ASN

    ASN(Autonomous System Numbers)自治系统编号。互联网可以认为由自治系统组成,例如一个全球公司,各国都有分公司,每个分公司都是一个自治系统,为了便于管理,需要给每个系统进行编号,对应的编号称为ASN。

    • 通过域名,可以查询ASN

    • 通过ASN,可以查询属于ASN的所有IP范围
    whois -h whois.radb.net  -- '-i origin AS36459' | grep -Eo "([0-9.]+){4}/[0-9]+" | uniq
    

    五、SAN

    SAN(Subject Alternate Name)主题备用名称,主题备用名称证书简单来说,在需要多个域名,将其用于各项服务时,可使用SAN证书。允许在安全证书中使用subjectAltName字段将多种值与证书关联,这些值被称为主题备用名称。名称可包括:IP地址、DNS名称等。

    • appsecco提供的脚本
    sed -ne 's/^( *)Subject:/1/p;/X509v3 Subject Alternative Name/{
        N;s/^.*
    //;:a;s/^( *)(.*), /12
    1/;ta;p;q; }' < <(
        openssl x509 -noout -text -in <(
            openssl s_client -ign_eof 2>/dev/null <<<$'HEAD / HTTP/1.0
    
    ' 
                -connect xx.com:443 ) )
    

    主动枚举

    字典枚举

    除了知名度很高layer,推荐一款快速基于浏览器的枚举子域名的神器

    传送门

    DNS区域传送

    这个就不用多说了,很经典的一个漏洞。

    dig @ns.example.com example=.com AXFR
    

    DNSSEC区域漫步

    DNSSEC(Domain Name System Security Extensions),DNS安全扩展,主要用于验证DNS数据来源和数据是否被篡改。

    DNSSEC通过向现有DNS记录添加签名来增强安全性,这些签名与常见记录类型一起存储。由于加密签名,DNSSEC处理不存在域时存在问题,可以区域遍历。

    对使用NSEC记录的DNSSEC区域,使用ldns-walk测试区域遍历

    ldns-walk @8.8.8.8 iana.org
    

    利用nsec3walker收集NSEC3哈希值并破解哈希值

    # Collect NSEC3 hashes of a domain
    $ ./collect insecuredns.com > insecuredns.com.collect
    # Undo the hashing, expose the sub-domain information.
    $ ./unhash < insecuredns.com.collect > insecuredns.com.unhash
    
    # Listing only the sub-domain part from the unhashed data
    $ cat icann.org.unhash | grep "icann" | awk '{print $2;}'
    del.icann.org.
    access.icann.org.
    charts.icann.org.
    communications.icann.org.
    
    ... snipped ...
    
    redis.icann.org.
    svn.icann.org.
    admin.icann.org.
    orbis.icann.org.
    jira.icann.org.
    omblog.icann.org.
    pptr.icann.org.
    splunk.icann.org.
    nomcom.icann.org.
    rssac.icann.org.
    sftp.icann.org.
    netscan.icann.org.
    

    DNS记录

    CNAME   别名记录,把一个域名解析到另一个域名 
    SPF     SPF是通过域名的TXT记录来进行设置的,SPF记录列出了所有被授权代表域名发送电子邮件的主机
    
    • CNAME

    • SPF

    利用脚本

    HTTP headers

    Content-Security-Policy     简而言之就是白名单,主要用于防范XSS
    

    利用脚本

    自动化工具

    参考

    https://appsecco.com/books/subdomain-enumeration/

  • 相关阅读:
    软件测试——C#判断密码是否符合要求
    软件测试——C#判断闰年的form小程序
    初识JUnit
    软件测试的方法一共有几种
    多个异步请求调用一个回调函数
    单元测试、集成测试、系统测试总结
    软件测试同行评审流程
    白盒测试总结
    黑盒测试总结
    闰年测试
  • 原文地址:https://www.cnblogs.com/mark-zh/p/11956872.html
Copyright © 2020-2023  润新知