Zmap+python脚本+burp实现自动化Fuzzing测试

声明
学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。

笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。

✍🏻作者简介:致力于网络安全领域,目前作为一名学习者,很荣幸成为一名分享者,最终目标是成为一名开拓者,很有趣也十分有意义
🤵‍♂️ 个人主页: @One_Blanks
欢迎评论 💬点赞👍🏻 收藏 📂加关注+

Zmap

一、安装
  • 更新系统和安装基础依赖

:使用包管理工具(如apt-get)更新系统并安装必要的基础依赖。例如,在Ubuntu上,您可以使用以下命令:

sudo apt-get update

sudo apt-get install -y build-essential cmake libgmp3-dev gengetopt libpcap-dev flex byacc libjson-c-dev pkg-config libunistring-dev
  • 克隆ZMap项目仓库

:从GitHub克隆ZMap项目的源代码到本地。

git clone https://github.com/zmap/zmap.git

cd zmap  
  • 编译和安装ZMap

:进入ZMap目录后,执行以下命令来编译和安装ZMap。

mkdir build
cd build
cmake ..
make
sudo make install

此外,为了验证ZMap是否安装成功,您可以运行以下命令查看ZMap的版本信息:

zmap --version
二、全网爬取
zmap -p 80,443,1080 -o raw_ips.txt

  • 先扫上几十万条

Python脚本筛选并构建实时代理池

  • 先给数据洗一下,Zmap出来的都是逗号

Python脚本

# 读取文件并替换逗号为冒号
def replace_comma_with_colon(input_file, output_file):
    with open(input_file, 'r') as file:
        lines = file.readlines()

    # 替换逗号为冒号
    modified_lines = [line.replace(',', ':').strip() for line in lines]

    # 写入新的文件
    with open(output_file, 'w') as file:
        for line in modified_lines:
            file.write(line + '\n')

# 指定输入和输出文件路径
input_file = 'raw_ips.txt'
output_file = 'ip.txt'

# 调用函数
replace_comma_with_colon(input_file, output_file)

print(f"处理完成,结果已保存到 {output_file}")

  • 得到正常的ip就拿到验证脚本去验证
import requests

# 代理IP文件路径
proxy_file_path = 'ip.txt'
# 可用代理IP输出文件路径
available_proxy_file_path = 'available_proxies.txt'

# 测试URL,用于验证代理IP是否可用
test_url = 'http://www.baidu.com'

# 可用代理IP列表
available_proxies = []

# 读取代理IP文件
with open(proxy_file_path, 'r') as file:
    proxies = file.readlines()

# 验证每个代理IP
for proxy in proxies:
    proxy = proxy.strip()  # 移除行尾的换行符
    if not proxy:  # 跳过空行
        continue

    # 设置代理
    proxies_dict = {
        'http': f'http://{proxy}',
        'https': f'https://{proxy}'
    }

    try:
        # 发送请求,设置超时时间为5秒
        response = requests.get(test_url, proxies=proxies_dict, timeout=5)
        if response.status_code == 200:
            print(f'代理IP {proxy} 可用')
            available_proxies.append(proxy)
    except requests.RequestException as e:
        print(f'代理IP {proxy} 不可用: {e}')

# 将可用代理IP写入文件
with open(available_proxy_file_path, 'w') as file:
    for ip in available_proxies:
        file.write(f'{ip}\n')

print(f'\n可用代理IP已写入文件: {available_proxy_file_path}')

验证这里跑的会很慢,可以将输出的结果先全选复制拿过来

  • 接下来就是对这些输出内容进行筛选的脚本
# 读取原始文件
input_file = 'RIP.txt'
output_file = 'IPP.txt'

with open(input_file, 'r', encoding='utf-8') as infile, open(output_file, 'w', encoding='utf-8') as outfile:
    for line in infile:
        if '不可用' in line:
            continue  # 跳过包含“不可用”的行
        elif '可用' in line:
            # 提取 IP:Port 部分
            parts = line.split()
            for part in parts:
                if ':' in part and part.count('.') == 3:
                    outfile.write(part + '\n')
                    break

然后 IPP.txt 文件中就是我们所需要使用的脚本了

Burp插件使用

github插件地址 :BurpAutoProxySwitcher

下载之后拿到py文件,如果没有下载jython包的话先下jython包,官网https://www.jython.org/download.html

  • 然后再burp中载入

之后会出现一个 Proxy Switcher 选项,那就是插件了

先输入路径(主要文件中的数据需要是每行ip:port的形式否则解释失败),然后加载,最后启用,在后面有每次请求代理 1 就是请求一次换一个,后面还有HTTP、SOCKS5 协议,后面可以将1080端口的代理服务器筛出来用这个,我这里没筛还是比较杂。

  • 来到Intruder爆破模块下,对一个外站发送请求进行测试,200都是请求成功的,50x就是服务器不让访问的(可能是地区问题),用这些筛出来的测试成功率还可以,但是可以筛的更精细,如根据站点所在地使用不同地点国家的代理服务器(这样请求质量就会更高)

像我上面这张图就是用日本的一个代理服务器请求成功的图(因为是用Zmap全网爬的嘛)

扩展

将我写的脚本进行整合,对代理池进行持久化更新,对代理池进行严选评级分类,利用字典炮轰。

总结

更高质量的代理需要我们去进行筛选和分类的,并且自动化脚本也是需要我们不断的去优化的,我上面说的各种脚本就是分开的(暂时还没有整合),那就可以整合到一起实现完全自动化,然后每个小时更新一次代理池,再对代理池持续进行筛选,并且将代理池按照不同地区进行分类,针对站点进行测试,越高质量的代理炮轰效果越好,否则会遗漏字典的爆破数据,后面就可以直接去炮轰了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值