批量探测IP端口检查是否有存在网站导入AWVS进行扫描

简介: 批量探测IP端口检查是否有存在网站导入AWVS进行扫描

前言

在一次渗透测试的过程中,给了几百个IP,不知道哪些IP是有网站的,以及开放网站的端口,无法使用AWVS扫描,所以就写了一个批量探测IP端口检查是否有存在网站导入AWVS进行扫描的脚本。师傅们轻喷。

使用语言

python3

脚本如下

    import win32com.clientimport timeimport socketimport requestsfrom bs4 import BeautifulSoup as bsimport csvimport osfrom multiprocessing.dummy import Pool as ThreadPoolfrom requests.packages.urllib3.exceptions import InsecureRequestWarningrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)def ip_get():    ipq = input('请输入要扫描的IP --- 1:单个IP 2:IP文件 -->')    while ipq not in ['1','2']:        ipq = input('请输入要扫描的IP --- 1:单个IP 2:IP文件 -->')    if ipq == '1':        ip_f = input('请输入IP:')        IP.append(ip_f)    elif ipq == '2':        file = input('请输入IP文件:')        f = open(file, 'r')        for i in f.readlines():            ip_f = i.strip()            IP.append(ip_f)def port_jj():    port = input('请输入要扫描的端口 --- 1:所有端口 2:指定端口,多个使用,分隔 3:指定端口范围 -->')    while port not in ['1','2','3']:        port = input('请输入要扫描的端口 --- 1:所有端口 2:指定端口,多个端口使用,分隔 3:指定端口范围 -->')    if port == '1':        for port in range(1, 65536):            PORTS.append(port)    elif port =='2':        port_s = input('请输入要扫描的端口:')        port_s = port_s.split(",")        for port in port_s:            port=int(port)            PORTS.append(port)    elif port =='3':        port_f=input('请输入要扫描的范围:')        port_f = port_f.replace('-',',')        port_f = port_f.split(",")        a = int(port_f[0])        b= int(port_f[1])        for port in range(a,b+1):            PORTS.append(port)def tcp_scan(post):    for ip in IP:        s = socket.socket(2,1)        s.settimeout(out_time)        c = s.connect_ex((ip,post))        if c == 0:            print("%s:%sopen!" % (ip,post))            IP_PORT.append({'IP':ip,'PORT':str(post)})        s.close()def web_scan(URL):    myua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36"    headers={'User-Agent':myua,'Connection': 'close'}    try:        r = requests.get(url=URL,headers=headers,timeout=5,verify=False)        soup = bs(r.text.encode('utf-8'), 'html.parser')        title = soup.find('title').text        if r.status_code == 200 and soup != '':            print(URL + ' --- 发现web --- title:'+title)            CODE.append(('URL',URL))        elif r.status_code ==200 and soup =='':            print(URL + ' --- 发现web --- title:无')            CODE.append(('URL',URL))        elif r.status_code != 200:            URL = URL.replace('http', 'https')            r1 = requests.get(url=URL, headers=headers,verify=False, timeout=5)            soup = bs(r.text.encode('utf-8'), 'html.parser')            title = soup.find('title').text            if r1.status_code == 200 and soup != '':                print(URL + ' --- 发现web --- title:' + title)                CODE.append(('URL',URL))            elif r1.status_code ==200 and soup =='':                print(URL + '--- 发现web --- title:无')            elif r.status_code != 404:                print(URL + ' --- 发现web --- title: 无')                CODE.append(('URL', URL))    except :        try:            URL=URL.replace('http','https')            r = requests.get(url=URL, headers=headers,verify=False, timeout=5)            soup = bs(r.text.encode('utf-8'), 'html.parser')            title = soup.find('title').text            if r.status_code != 404:                print(URL + ' --- 发现web --- title: 无')                CODE.append(('URL',URL))        except:            passdef wirte_file():    f = open('lemonlove7.csv','w',newline='')    write= csv.writer(f)    for i in CODE:        write.writerow(i)    f.close()
    if __name__ == '__main__':    CODE=[]    PORTS=[]    URL=[]    IP_PORT=[]    IP=[]    out_time = 1    start_time = time.time()    ip_get()    port_jj()    xc = input(('请输入进程数:'))    xc = int(xc)    pool = ThreadPool(processes=xc)    results = pool.map(tcp_scan,PORTS)    pool.close()    pool.join()    for u in IP_PORT:        a = u['IP']        b = u['PORT']        URL.append('http://'+a+':'+b)    scan=ThreadPool(processes=xc)    scan_s=scan.map(web_scan,URL)    scan.close()    scan.join()    wirte_file()    end_time = time.time()    print("耗时:",end_time - start_time)    speak = win32com.client.Dispatch('SAPI.SPVOICE')    speak.Speak('存活的url已经保存到lemonlove7.csv文件中')

    说明

    使用python的多进程模块进行检测,加快速度,要扫描的文件可以自定义

    可以扫描单个和多个ip任意端口,进行web检测,导入csv里,扔进AWVS就可以了

    这个文件是要扫描的ip文件,一个IP一行。

    640.png

    lemonlove7.csv文件为扫描后存在网站的url


    640.png

    相关文章
    |
    1月前
    |
    运维 网络性能优化 网络虚拟化
    |
    8天前
    |
    安全 Linux 网络安全
    nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
    nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
    44 5
    |
    26天前
    |
    监控 网络协议 应用服务中间件
    深入解析:如何确定网站使用的端口号
    【10月更文挑战第21天】 在网络通信中,端口号是识别特定服务的关键。一个IP地址可以有多个端口,每个端口可能运行着不同的服务。当我们在浏览器地址栏输入一个网址时,实际上是通过特定的端口与服务器进行通信。本文将探讨如何确定一个网站使用的端口号,以及端口号在网络通信中的作用。
    36 4
    |
    1月前
    |
    网络协议 安全 Linux
    阿里云国际上如何检查 Linux 上正在使用哪些端口
    阿里云国际上如何检查 Linux 上正在使用哪些端口
    |
    1月前
    |
    网络安全 Python
    Python编程--目标IP地址段主机指定端口状态扫描
    Python编程--目标IP地址段主机指定端口状态扫描
    |
    2月前
    |
    Linux Python
    用python扫描linux开放的端口(3种方式)
    这篇文章介绍了三种使用Python实现Linux端口扫描的方法,包括基础版端口扫描、全端口扫描和多线程扫描技术。
    62 15
    |
    1月前
    |
    运维 安全 网络协议
    Python 网络编程:端口检测与IP解析
    本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
    |
    3月前
    |
    网络安全 网络架构
    Nmap扫描六种端口状态介绍
    Nmap扫描六种端口状态介绍
    114 2
    |
    3月前
    |
    网络协议 Linux 网络安全
    在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
    在Linux中,如何将本地 80 端口的请求转发到 8080 端口?当前主机 IP 为10.0.0.104。
    |
    3月前
    |
    网络协议 Ubuntu Linux
    在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。
    在Linux中,如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0。

    热门文章

    最新文章

    下一篇
    无影云桌面