当前位置: 首页 > article >正文

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

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

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

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

目录

      • Zmap
        • 一、安装
        • 二、全网爬取
      • Python脚本筛选并构建实时代理池
      • Burp插件使用
      • 扩展
      • 总结

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全网爬的嘛)

扩展

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

总结

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


http://www.kler.cn/a/406700.html

相关文章:

  • 【MySQL】避免执行SQl文件后自动转化表名为小写字母
  • 查手机号归属地免费API接口教程
  • R语言绘图过程中遇到图例的图块中出现字符“a“的解决方法
  • 基于单片机的煤气泄漏控制器设计
  • C++ —— string类(上)
  • MATLAB 2024a安装包下载及安装教程
  • 开发 + 安全:网络安全的协作方法
  • 概念解读|K8s/容器云/裸金属/云原生...这些都有什么区别?
  • 分布式锁的实现,基于Redis实现分布式锁
  • MySQL4 内置函数(一)- 时间函数
  • 面试小札:Java的类加载过程和类加载机制。
  • python如何使用spark操作hive
  • 基于深度学习的车牌检测系统的设计与实现(安卓、YOLOV、CRNNLPRNet)+文档
  • 如何通过ChatGPT提高自己的编程水平
  • C++设计模式行为模式———中介者模式
  • STM32通过8位并口驱动TFT-1.8寸屏(ST7735)显示器
  • TESSY单元测试工具详解与操作演示:ISO 26262合规性、自定义测试用例、详细测试报告等
  • C++游戏开发详解:从核心概念到实践
  • STM32WB55RG----FUS和stack更新
  • 计算机网络socket编程(4)_TCP socket API 详解