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)

从第一页到第十页 可自行选择页数