Python联合Fofa以及跑子域名
收集网站信息的时候子域名收集是非常重要的一部分,通常在一个主站进行防护完善的情况下找不到渗透点的话,我们可以考虑在子站点进行渗透爆破,通过旁站C段进行渗透,子域名收集是渗透测试中,前期信息收集必不可少的一个阶段。
Python子域名代码块 可自行添加代理:
import requests
import time
import threading
def get_info(domain,header):
try:
url=f"https://{domain}.daw.cn" #自定义目标跑格 第一处需要修改的地方 如果是http 那就改为f"https://{domain}.主域名.后缀" 列入 f"https://{domain}.baidu.com"
response=requests.get(url=url,headers=header)
if response.status_code == 200:
print(url+"\t200")
except:
print(url+"\t不存在")
return "不存在"
def start():
f = open("自定义字典", "r", encoding="utf-8") #第二处需要修改的位置
f = f.readlines()
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36"
}
print("开始判断:===========================")
for domain in f:
time.sleep(0.5) #第三处需要修改的地方 .可自定义更改短暂停止时间
domain = domain.strip()
ret = get_info(domain, header)
if ret == "不存在":
continue
print("遍历完毕:===========================")
if __name__ == '__main__':
t1 = threading.Thread(target=start)
t1.start()
子域名收集探测结果:

Fofa 是一个可怕的搜索引擎,它不同于谷歌、百度等仅搜索爬取网页信息,Fofa用于网络空间资源探测,其爬取的是互联网上所有设备的 IP 地址及其端口号.
Fofa批量探测 批量刷SRC必备技巧.
我们将搜索内容直接存储到本地文件 方便我们下一步渗透测试
import requests
from lxml import etree
import base64
#https://fofa.info/result?qbase64=eWpnai5jbg%3D%3D&page=1&page_size=10
def result_response(page,search):
url="https://fofa.info/result?"
param={
"qbase64":search,
"page":page,
"page_size":"20" #这里默认就是10 最高支持查询一页显示20条
}
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
"Cookie":"需要添加Cookie 或者Fofa API会员接口"
}
response=requests.get(url=url,headers=header,params=param)
response.encoding="utf-8"
content=response.text
return content
def parse_data(content):
parse=etree.HTML(content)
url=parse.xpath('//div[@class="hsxa-meta-data-list"]//span/a/@href')
return url
def download_data(url):
with open("ip.txt","a",encoding="utf-8") as fp:
for ip in range(len(url)):
s=str(url[ip])+"\n"
fp.write(s)
if __name__ == '__main__':
start_page=int(input("请输入起始页:")) #查询 第一页开始:
end_page=int(input("请输入结束页:")) #查询 到第几页结束:
base_url=base64.b64encode(input("Fofa搜索语句:").encode("utf-8"))
search=str(base_url,"utf-8")
for page in range(start_page,end_page+1):
content=result_response(page,search)
url=parse_data(content)
download_data(url)
从第一页到第十页 可自行选择页数
