域名可以分为顶级域名、一级域名、二级域名等。子域名(subdomain)是顶级域名(一级域名或父域名)的下一级。例如,mail.example.com和calendar.example.com是example.com的两个子域,而example.com则是顶级域.com的子域。在测试过程中,测试目标主站时如果未发现任何相关漏洞,此时通常会考虑挖掘目标系统的子域名。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
   | import requests from bs4 import BeautifulSoup from urllib.parse import urlparse
 
  def bing_search(site, pages):     Subdomain = []     headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',                'Accept': '*/*',                'Accept-Language': 'en-US,en;q=0.5',                'Accept-Encoding': 'gzip,deflate',                'referer': "http://cn.bing.com/search?q=email+site%3abaidu.com&qs=n&sp=-1&pq=emailsite%3abaidu.com&first=2&FORM=PERE1"                }     for i in range(1,int(pages)+1):         url = "https://cn.bing.com/search?q=site%3a"+site+"&go=Search&qs=ds&first="+ str((int(i)-1)*10) +"&FORM=PERE"         conn = requests.session()         conn.get('http://cn.bing.com', headers=headers)         html = conn.get(url, stream=True, headers=headers, timeout=8)         soup = BeautifulSoup(html.content, 'html.parser')         job_bt = soup.findAll('h2')         for i in job_bt:             link = i.a.get('href')             domain = str(urlparse(link).scheme + "://" + urlparse(link).netloc)             if domain in Subdomain:                 pass             else:                 Subdomain.append(domain)                 print(domain) if __name__ == '__main__':     site='baidu.com'      page = 15                                   Subdomain = bing_search(site, page)
   |