一、子域名介绍
域名是个相对的概念,是相对父域名来说的。域名有很多级,中间用点分开。例如公司的顶级域名是以"com"结尾的,所有以 com 结尾的域名便都是它的子域。例如:voice.baidu.com便是"baidu.com"的子域,而 "baidu.com"是"com"的子域。
1.在渗透测试中收集子域名可以发现更多的资产,如果渗透的目标面大了也增大了会有漏洞了概率
2.探测到更多隐藏或遗忘的应用服务,可能这些应用服务有严重漏洞
二、子域名收集方法
1.谷歌黑暗语法
可以直接通过浏览器来搜索一些敏感信息,比如浏览器输入:site:baidu.com就会出现百度的子域名。
相关语法:
site:限制搜索范围的域名
inurl:用于搜索网页上包含的url
intext:搜索网页
部分包含的文字,忽略标题URL等文字
intitle:搜索关键词的页面,和网页标题
filetype:搜索文件的后缀或扩展名
link:搜索一个包含了某个指定url的页面
2.layer子域名挖掘机
3.在线搜索
网址:在线子域名查询
4.自己造工具
其实子域名的工具都是一个原理,用一个字典去拼接域名然后访问是否能得到200的状态码,若得到则证明存在子域名。用python写方便又简单,重要的是如何多线程跑。
这是我自己写的脚本,使用方法-u url -t 线程数 -d 字典
import requests
import math
import threading
import sys
import getopt
def start():
if len(sys.argv)==7:
opts,args=getopt.getopt(sys.argv[1:],"u:t:d:")
for k,v in opts:
if k=='-u':
url=v
elif k=='-t':
threads=v
elif k=='-d':
dic=v
multi_scan(url,threads,dic)
else:
print("Error Argument!")
sys.exit()
def multi_scan(url,threads,dic):
#第一步读取字典文件
result_list=[]
threads_list=[]
with open(dic,"r") as f:
dic_list=f.readlines()
#第二步 确定读取的行数
threads_read_line_num=math.ceil(len(dic_list)/int(threads))
#第三步制作每一个线程读取的字典列表[[t1],[t2],[t3]]
i=0
temp_list=[]
for line in dic_list:
i=i+1
if i%threads_read_line_num==0:
temp_list.append(line.strip())
result_list.append(temp_list)
temp_list=[]
else:
temp_list.append(line.strip())
for i in result_list:
#target定义一个要执行的函数scan,args为要向函数里面传递的参数
threads_list.append(threading.Thread(target=scan,args=(url,i)))
for t in threads_list:
#对应的调用线程,执行对应的功能
t.start()
def scan(url,dic):
#实现扫描功能
for line in dic:
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3877.400 QQBrowser/10.8.4507.400",
"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
"Accept-Encoding": "gzip, deflate",
"Content-Type": "application/x-www-form-urlencoded",
"Content-Length": "99",
"Origin": "http://hds2nm1.bjgff32jk.cn",
"Connection": "close",
"Referer": "http://hds2nm1.bjgff32jk.cn/wap/login.php?type=qq",
"Cookie": "PHPSESSID=f8nd6ldiif9m7drrjlvnd9gle4",
"Upgrade-Insecure-Requests": "1",
}
r=requests.get(url=line+'.'+url,headers=headers)
if r.status_code==200:
print(r.url+":"+str(r.status_code))
if __name__=="__main__":
print("*"*50)
print("*"*2+" "*16+"子域名扫描 v1.0"+" "*17+"*"*2)
print("*"*50)
print("author:Edward Hopper")
start()
注意先安装对应的包