Skip to content

Releases: zan8in/afrog

v3.3.1 轻量、快速、直击漏洞

15 Jan 01:04

Choose a tag to compare

核心变更:

  • WebProbe 存活探测改为默认关闭
  • 新增 -w 参数,按需开启资产预探测
  • 回归 afrog 核心优势:直接、快速的漏洞扫描

afrog 始终是那个 afrog:轻量、快速、直击漏洞。

v3.3.0 Afrog PoC 指纹门控:先识别,再执行

14 Jan 02:06

Choose a tag to compare

Afrog v3.3.0 主要更新内容

一、PoC 指纹门控(requires)

新增 requiresrequires-mode 机制,实现对 PoC 执行的精准控制。该机制允许 PoC 声明其依赖的指纹标签(如 nacosmysqlftp),仅当目标在指纹识别阶段匹配到对应标签时,相关 PoC 才会被执行(默认遵循严格模式)。
此功能特别适用于弱口令、爆破、默认口令等高成本检测场景,实现 “先识别,再验证”,有效减少无效请求、降低触发限流或告警的风险,同时大幅提升扫描效率与结果的准确性。
详细说明请参考:Afrog 指纹门控指南
示例 PoC:ftp-detectftp-anonymous-loginnacos-detectnacos-default-password


二、指纹识别(Fingerprint)

Fingerprint 是 Afrog 的前置资产识别能力,通过一组指纹 PoC(支持 TCP/HTTP 探测与特征匹配)快速识别目标的服务类型与关键特征。
识别结果会输出对应的产品/服务标签(tags),用于明确目标资产属性,并为后续漏洞扫描提供依据。例如,仅对识别出特定服务的目标执行相关漏洞检测,从而提升整体扫描的精准度与效率。
编写指纹 PoC 时,需在 info.tags 中包含 fingerprint 标签。


三、新增 --fingerprint-filter-mode 参数

该参数用于控制在目标缺乏指纹证据时,是否跳过依赖 info.tags 的应用类漏洞 PoC。

  • strict 模式(默认):仅对指纹匹配的目标执行相关 PoC,侧重效率与降噪。
  • opportunistic 模式:在指纹可能漏报或证据不足的场景下,仍执行相关 PoC,以降低漏扫风险,同时保留“有指纹但不匹配则跳过”的基础逻辑。

四、WebProbe 资产探测功能回归

在 WebProbe 预探测阶段完成后,系统会将探测到的站点元信息(URL、标题、Server、PoweredBy 等)汇总为一条记录,并同时写入 SQLite 数据库与 HTML 报告。
在 HTML 报告中,相关信息以可折叠列表形式展示,格式与控制台输出一致,且 URL 支持点击访问。


其他更新

行为调整

  • 端口预扫描参数 -p/--ports 的行为调整为 “自定义端口 + 常见端口(top ports)” 组合模式。

问题修复与优化

  1. 输出/存储/报告管线独立并支持刷新
    通过解耦结果处理流程,降低因异步写库或进程意外退出导致结果丢失或不完整的风险。

  2. 任务生成改为流式生产 + 背压队列
    优化大规模任务(PoC × 目标)下的内存使用与任务堆积问题,提升扫描稳定性与吞吐能力。

  3. 增强 TCP 代理/蜜罐/防火墙拦截检测机制
    提升对中间拦截节点的识别能力,减少误报与干扰。

  4. 新增 --http-default-accept 参数(默认开启)
    当 PoC 未设置 Accept 请求头时,自动添加 Accept: */*,且不会覆盖 PoC 中显式定义的 Accept 头或通过 -H 参数指定的请求头。

v3.2.9 Happy New Year 2026

03 Jan 12:17

Choose a tag to compare

afrog v3.2.9 Alpha 发布说明

版本状态:Alpha
此为 Alpha 版本,主要用于引入 PortScan 端口预扫描 功能,可在 PoC 扫描前快速识别开放端口,提升目标扫描效率与精准度。
请注意:该版本可能存在兼容性与稳定性问题,建议先在测试环境或小范围目标中验证,再用于生产环境。

🚀 使用示例

1. 单目标全端口扫描

afrog -t 1.2.3.4 -ps -p all

2. 网段扫描(主机发现 + 常见端口扫描)

afrog -t 1.2.3.4/24 -ps

3. 跳过主机发现(适用于已知存活目标或网络受限场景)

afrog -T targets.txt -ps -Pn

4. 仅扫描指定端口

afrog -t example.com -ps -p 80,443,8080

⚙️ PortScan 参数详解

参数 说明 示例
-ps / --portscan 开启端口预扫描 -ps
-p / --ports 指定端口范围(默认:top -p 80,443,8080
-p 1-1024
-p top
-p full
-p all
-Pn 跳过主机发现,直接扫描端口 -Pn
-prate 端口扫描速率限制(每秒请求数) -prate 500
-ptimeout 端口扫描超时时间(毫秒) -ptimeout 1500
-ptries 端口扫描重试次数 -ptries 2
--ps-s4-chunk ports=full 时的分片大小 --ps-s4-chunk 2048

📌 使用建议

  1. 测试环境优先:在 Alpha 阶段,建议先在内部或测试环境验证功能稳定性。
  2. 合理设置端口范围:若对全网段扫描,建议先使用 -p top(常见端口)进行快速探测,再针对开放服务深入扫描。
  3. 网络适应性调整:在受限或高延迟网络中,可适当调整 -ptimeout-prate 参数,避免误报或漏报。
  4. 结合已有目标列表:若已具备存活目标列表,使用 -Pn 可跳过发现阶段,直接进行端口扫描与漏洞检测。

欢迎反馈使用中的问题与建议,我将持续优化 PortScan 模块的稳定性与性能。

v3.2.8

29 Dec 01:03

Choose a tag to compare

1. [新增] brute 暴力扫描模式

用于目录探测、凭证枚举等场景,减少重复规则维护:

  • 两种枚举策略
    • clusterbomb:笛卡尔积组合(适合小字典)
    • pitchfork:按索引配对(适合一一对应的字典)
  • 结果提交策略
    • commit: winner/first:保留首个命中结果
    • commit: last:保留最后一次命中结果
    • commit: none:只保留请求/响应
  • 继续策略
    • continue: true/false:命中后是否继续枚举
  • 保护机制
    • --brute-max-requests 5000:限制单条规则最大请求数

Brute PoC 编写规则

2. [新增]按目标限速(--req-limit-per-target)

对每个 host:port 单独限制每秒请求数:

参数 等效设置 适用场景
--polite --req-limit-per-target=5 保守模式,怕打挂目标
--balanced --req-limit-per-target=15 默认推荐,平衡模式
--aggressive --req-limit-per-target=50 激进模式,追求速度

注意:与 -rl/--rate-limit 不冲突:

  • -rl:限制任务调度速度(PoC×Target 级别)
  • --req-limit-per-target:限制实际网络请求速度(host:port 级别)

--req-limit-per-target 参数的优点

3. [新增]实时状态监控(--live-stats)

开启后显示关键指标:

  • ta:活跃任务数
  • hi:进行中的HTTP请求数
  • tw:任务等待时间(全局限速排队)
  • rw:请求等待时间(目标限速排队)

判断依据

  • tw 大 → 被全局限速卡住
  • rw 大 → 被单目标限速卡住(同一个站点请求太密)

4. 快速配置推荐

场景A:单目标/目标很少

  • 保守--req-limit-per-target 2 + -c 5~10
  • 均衡--req-limit-per-target 5 + -c 10~20
  • 激进--req-limit-per-target 10 + -c 20~40

场景B:10~50个目标,较分散

  • 均衡--req-limit-per-target 5 + -c 40~80

场景C:50~500+个目标,很分散

  • 均衡--req-limit-per-target 5 + -c 80~200

场景D:目标集中在少数IP(CDN/反代)

  • 场景A配置

5. 使用建议

  1. 开启监控:始终添加 --live-stats
  2. 观察指标:如果 rw 持续上千ms,降低 -c
  3. 默认起手--req-limit-per-target 5 + -c 20
  4. 自动调节:可使用 --auto-req-limit 自动调参

6. [优化]Go PoC HTTP请求统一化

  • 背景:之前Go编写的PoC和YAML格式的PoC在HTTP请求处理上不一致
  • 改进内容
    1. 全局header统一合并:确保所有请求都正确应用全局设置的headers
    2. 变量回填统一:变量传递和处理逻辑保持一致
    3. 上下文贯穿:PoC级别的context贯穿整个请求流程
    4. 软收敛机制:支持Stop/超时操作时,能够优雅地取消进行中的请求
  • 效果
    • Go PoC和YAML PoC的行为完全一致
    • 更好的并发控制和资源管理
    • 避免请求泄漏或无法及时终止的问题

7. [优化]Shiro-key 支持回归

  • 功能恢复:重新支持Shiro框架的key检测

8. [优化]Backup-files 支持回归

  • 功能恢复:重新支持备份文件扫描

v3.2.7

20 Dec 08:28

Choose a tag to compare

afrog v3.2.7 新版本发布

🌟 新增功能

  • 全新底部面板与漏洞扫描:新增集成式底部任务面板,将任务发起、扫描进程与结果查看融合于同一界面,提供从启动到分析的全流程可视化体验,操作更直观,效率显著提升。

🛠️ 功能改动

  • 数据目录统一迁移:自本版本起,所有本地数据将统一迁移至 ~/.config/afrog(Windows:C:\Users\<你>\.config\afrog)。旧版位于用户家目录下的 afrog-* 目录(如 ~/afrog-pocs)不再被读取。
    如需迁移个人数据,请参见下方的迁移指南。

✅ 问题修复

  • 优化 YAML 反序列化逻辑,修复因重复键导致的数组越界异常。
  • 修复 HTTP 响应 Body 被错误解析为字符串时引发的请求无响应问题。

📦 数据迁移简要指引

自 v3.2.7(2025-12-20 发布)起,所有本地数据统一迁移至 ~/.config/afrog(Windows:C:\Users\<you>\.config\afrog)。旧版位于用户家目录下的 afrog-* 目录将不再被读取。

二、新旧目录对照表

数据类别 新路径(统一在 .config/afrog 下) 旧路径(已停用)
配置文件 afrog-config.yaml(保持不变) -
数据库 afrog.db(保持不变) -
本地 POCs pocs ~/afrog-pocs
精选 POCs pocs-curated ~/afrog-curated-pocs
我的 POCs pocs-my ~/afrog-my-pocs
资产集合 assets ~/afrog-assets

三、需用户手动迁移的数据
以下两类目录需手动复制至新位置,其余目录由程序或在线更新器自动管理:

  1. 我的 POCs
    ~/afrog-my-pocs~/.config/afrog/pocs-my

四、注意事项

  • 在线更新器会将最新 POCs 自动安装至 ~/.config/afrog/pocs
  • 旧目录不会自动删除,请确认迁移完成后自行清理,避免误删自有文件。

v3.2.6

30 Nov 11:40

Choose a tag to compare

afrog 新版本更新日志

新增功能

  • afrog Web 新增「专注模式」:一键进入编辑器全屏模式,告别干扰,高效编写与调试 PoC。

问题修复

  • 修复 SDK 在处理代理列表时的并发 channel 泄漏问题,提升稳定性
  • 修复 afrog Web 偶尔出现的白屏问题,页面加载更流畅可靠
  • 修复因URL参数重新排序问题,导致特定漏洞PoC无法被成功触发的缺陷。

感谢社区反馈,这次更新让 afrog 用得更爽了!🚀

v3.2.5

19 Nov 09:20

Choose a tag to compare

修复紧急 bug

多个协程同时修改共享map数据,导致数据混乱,程序崩溃。

v3.2.3

18 Nov 14:45

Choose a tag to compare

afrog v3.2.3 正式发布!🚀

主要更新亮点

🔥 变量系统大幅增强(set)

现在 set 支持定义多种类型变量,更加灵活:

  • intint64booleanfloat64
  • 支持随机数生成、数学运算、字符串操作等

示例:

set:
  numa: randomInt(1000, 5000)
  numb: randomInt(5000, 10000)
  x: numa * numb + 1024
  flag: true
  rand_str: randomLowercase(32)

🔥 PoC 全字段支持 CEL 表达式({{...}})

rules 的以下字段中均可使用 {{表达式}} 进行动态渲染:

  • pathheadersbodyrawdata

强大示例:

rules:
  r0:
    request:
      method: GET
      path: "/login.do?message={{numa * numb}}={{x}}"
      headers:
        Token: "{{numa + numb}}"
        Rand: "{{randomInt(99999911, 99999999)}}"
      body: |
        username=admin&code={{randomLowercase(32)}}
    expression: |
      response.status == 200 && 
      response.body.bcontains(bytes(string(numa * numb)))

📚 官方推出《Afrog PoC 规则编写权威指南》

已同步上线:

从入门到高阶,一文搞定所有 PoC 编写技巧!

🏗️ 底层重构(开发者友好)

  • 将 HTTP、Raw、Tcp/Udp、Go 等协议执行逻辑抽象为统一最小接口 Executor
  • 彻底消除各协议中重复的变量渲染、结果写入、上下文传递代码

v3.2.2 戏梦

08 Oct 08:15

Choose a tag to compare

afrog 正式发布全新版本,此次更新带来了两大实用功能升级:

一、PoC 管理与扫描优化

本地 PoC 文件夹支持:新版本新增本地文件夹 ~/afrog-my-pocs,用户可将自定义的 PoCs 存放在此。afrog 程序运行时,会自动将该文件夹中的 PoC 与内置 PoC 合并,一同用于扫描任务,让扫描更加全面灵活。
PoC 可视化管理:在可视化管理界面中,用户对 ~/afrog-my-pocs 文件夹内的 PoC 拥有完整的增删改查权限,可按需灵活管理;而 afrog 内置的 PoC 则设置为只读权限,确保系统 PoC 的安全性和稳定性。

二、安全可靠的登录机制

afrog 登录面板采用随机生成密码的方式,进一步增强了安全性。同时,系统严格限制用户登录失败次数,若登录失败超过设定次数(具体次数可查看源码),将会封禁登录一段时间。这种双重安全保障机制,让您可以放心地将 afrog web 平台长久开放使用,无需担忧安全风险。

使用方法十分简便,运行 afrog -web 命令,即可快速开启 afrog 的全新功能体验。

v3.2.0

04 Sep 10:02

Choose a tag to compare

afrog v3.2.0 版本更新说明

🔹 功能完善
afrog SDK 升级

🎨 界面优化
-web 命令报告升级

  • 采用现代化可视化漏洞报告模板
  • 支持更直观的漏洞分级展示与数据交互
image