Yak 命令行扫描指南

@Go0p师傅

前言

出于各种原因,很多师傅提出想要使用 yak 命令行对目标系统发起扫描,在 Yaklang v1.3.1-sp3 的版本中,我们对yak 引擎中的许多功能添加了命令行支持,比如 scan(插件扫描)/yso(yak Ysoserial Util) ,本次就大家比较关心的命令行扫描功能进行介绍,一起来看看如何使用 yak 命令行进行扫描。

命令行参数详解

执行 yak scan -h 查看参数,如下

选项

  • --templates, -t
    指定插件模板文件或目录(使用逗号分隔)。这些模板定义了扫描的具体方式和检查点,允许用户定制化扫描任务,例如:-t './templates/1.yaml,./templates/vulns/'
  • --target, --host
    指定目标主机,可以是单个主机或多个主机(使用逗号分隔)。支持域名和IP地址,甚至是IP段,例如:--target example.com,http://www2.example.com,192.168.1.2/24
  • --target-file, -f
    通过文件指定目标主机,文件中每一行包含一个主机,适用于批量扫描。
  • --raw-packet-file, --raw
    指定原始数据包文件,用于模拟网络请求,支持HTTP和HTTPS(通过--https选项指定)。
  • --keyword, --fuzz, -k
    使用模糊搜索插件关键字,适用于当你不确定使用哪个插件时。
  • --list, -l
    仅列出插件,不执行扫描。这对于了解可用插件非常有用。
  • --plugin
    通过名称执行单个插件,适用于已知具体插件时。
  • --type
    指定Yakit中插件的类型,如port-scanmitmyaml-poc等,让用户可以根据需要选择插件类型。
  • --proxy
    通过代理服务器执行扫描,支持http代理,例如:--proxy http://127.0.0.1:8083
  • --concurrent, --thread
    设置并发扫描数(线程数),默认为50,适用于调整扫描速度和系统负载。
  • --poc-timeout
    设置单个子任务的扫描超时时间,默认为30秒,可根据网络状况调整。
  • --total-timeout
    设置整体扫描的超时时间,默认为7200秒(2小时),以防长时间挂起。

yak scan 命令行的设计十分简单易懂,主要分为三块,分别是:目标的输入(target)、指定插件、扫描配置项

下载插件

当在一台全新的计算机中使用 yak 引擎进行扫描时,首要步骤就是下载插件,插件的下载可以使用 yak pull 命令。

由于会访问 github 下载 nuclei-templates,可能会出现网络不佳的情况,可以使用 yak pull --proxy http://xxx 设置代理

列出插件

首先我们先使用 list 列出所有的插件,会打印出如下插件信息,可以看见我的插件个数为 598 个

Shell
 .\yak.exe scan -list

             _    _ _
 _   _  __ _| | _(_) |_      ___  ___ __ _ _ __
| | | |/ _` | |/ / | __|____/ __|/ __/ _` | '_ \
| |_| | (_| |   <| | ||_____\__ \ (_| (_| | | | |
 \__, |\__,_|_|\_\_|\__|    |___/\___\__,_|_| |_|
 |___/
                                                --- Powered by yaklang.io

[INFO] 2024-04-02 17:44:54 [scan_pluginscan:230]
List All Matched Plugins: ""
+----------------------------------------------+-----------+-------------------+
|                 PLUGIN NAME                  |   TYPE    |      AUTHOR       |
+----------------------------------------------+-----------+-------------------+
| 开放 URL 重定向漏洞                            | mitm      | Rookie            |
| 基础 XSS 检测                                  | mitm      | 神经蛙            |
| 启发式SQL注入检测                              | mitm      | 雨过天晴&伞落人离   |
| Swagger JSON 泄漏                             | mitm      | yaklang.io        |
| SSTI Expr 服务器模版表达式注入                  | mitm      | V1ll4n            |
| SSRF HTTP Public                              | mitm      | 桔子爱吃橘子       |
........
| SQL注入-MySQL-ErrorBased                       | mitm      | yaklang.io        |
| SQL注入-UNION注入-MD5函数                       | mitm      | yaklang.io        |
| HTTP请求走私                                    | mitm      | yaklang.io        |
+-------------------------------------------------+----------+------------------+
[INFO] 2024-04-02 17:44:54 [scan_pluginscan:252] Total Matched Plugins: 598

可以使用 list 和 keyword进行模糊查询,比如查询包含shiro关键字的插件

使用插件

使用 yak 命令行进行扫描有三种指定插件的方式,分别是使用 templateskeywordplugin,接下来我们启动Yakit 中提供的 Vulinbox 靶场进行扫描。

templates参数

使用 templates可以指定一个包含.yaml.yml文件的文件夹或者以.yaml.yml结尾的文件

关于 yaml 文件可以通过使用 WebFuzzer 页面配置匹配器后自动生成模板文件,也可使用 nuclei 的Yaml 插件

部分使用Yakit WebFuzzer 生成的Yaml 插件,使用 Nuclei 进行扫描存在不兼容的情况,因此更推荐使用 yak 命令行进行相关的扫描检测

keyword 参数

使用keyword 可以使用关键字指定要扫描的插件,例如使用 "shiro" 关键字进行扫描,可以看到下面加载了五个插件,这次我们的目标输入使用 --raw-packet-file, --raw 来进行演示,我们先创建一个 packet.txt文件,内容如下

随后进行检测

plugin 参数

使用plugin 可以指定插件名进行扫描,使用 list 列出的插件名,都可以使用 plugin参数进行指定扫描

检出漏洞

当某一个插件检出了对应的漏洞或风险时,将会在控制台打印出漏洞的基本信息,如下所示

流量相关

当想查看所有插件发送的具体流量时,无需设置代理可以直接在 Yakit 在 History 中点击插件流量进行查看,如下

Tags 标识了插件名,代表该条记录是由哪一个插件产生的,并且可以在数据库的漏洞中,查看检出的漏洞或风险

最后

本次简单讲解了如何使用 yak 命令行进行漏洞扫描,对于有命令行需求的师傅,也可以多多使用,并给出宝贵建议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值