Yasuo 是一个 Ruby 脚本,用于扫描存在漏洞的第三方 Web 应用程序。
在进行网络安全评估(内部、外部、红队任务等)时,我们经常会遇到存在漏洞的第三方 Web 应用程序或 Web 前端,这些应用允许我们通过利用公开已知的漏洞来入侵远程服务器。一些常见且受欢迎的应用程序包括 Apache Tomcat 管理界面、JBoss jmx-console、Hudson Jenkins 等。
如果你在 Exploit-db 中搜索,有超过 10,000 个远程可利用的漏洞存在于大量 Web 应用程序/前端中,这些漏洞可能允许攻击者完全攻破后端服务器。这些漏洞的范围从 RCE 到恶意文件上传、SQL 注入、RFI/LFI 等。
Yasuo 旨在快速扫描网络中是否存在此类漏洞应用程序,从而将可攻破的目标拱手相送。
你需要安装以下 gems:
bundle install --path vendor
bundler exec ./yasuo.rb -f [myfile]
Yasuo 提供以下命令行选项:
-r :: 如果你希望 Yasuo 执行端口扫描,请使用此选项提供 IP 地址或 IP 范围
-l :: 如果你希望 Yasuo 执行端口扫描,请使用此选项提供一个包含换行分隔 IP 地址的输入文件,类似于 nmap 的 -iL 选项
-s :: 提供自定义签名文件。[./yasuo.rb -s mysignatures.yaml -f nmap.xml] [默认 - signatures.yaml]
-f :: 如果你不希望 Yasuo 执行端口扫描,并且已有一个 xml 格式的 nmap 输出,请使用此选项提供该 nmap 输出
-u :: 接受一个包含换行分隔的 URL 文件,这些 URL 来自之前运行 Yasuo 时保存的。详见下文。
-n :: 告诉 Yasuo 在执行端口扫描时不 ping 主机。标准 nmap 选项。
-p :: 使用此选项提供端口号/范围
-A :: 使用此选项扫描所有 65535 个端口。标准 nmap 选项。
-b [all/form/basic] :: 如果发现的应用程序实现了身份验证,请使用此选项进行暴力破解认证。"all" 将同时暴力破解表单和 HTTP 基本认证。"form" 仅暴力破解基于表单的认证。"basic" 仅暴力破解 HTTP 基本认证。
-t :: 指定最大线程数
-h :: 嗯,猜猜看
当 Yasuo 运行时,在开始枚举易受攻击的应用程序之前,它会执行几个步骤。如果你提供一个 IP 地址或范围,它会针对提供的目标执行端口扫描。如果你向 Yasuo 提供 nmap xml 输出文件,它会解析该文件并枚举具有开放 Web 端口的主机。然后它向每个枚举的主机:IP 发送一个针对虚假(不存在)文件和目录的请求。为了减少误报,它会丢弃所有对虚假文件和目录请求返回 HTTP 200 Ok 的 IP:端口。在整个过程结束时,我们得到一份清单,比如说“好的 URL”。然后使用这些好的 URL 来枚举易受攻击的应用程序。
如果由于某种原因,你必须对同一组目标重新运行 Yasuo,以前的版本会再次经历整个流程。这完全不高效。我知道,我很笨,学得慢,但我一直在进化。无论如何,重新对同一目标运行 Yasuo 的一个好理由可能是使用不同(或自定义)的签名文件。
Yasuo 的最新版本会自动保存一个文件,savedURLstateXXXXX.out,在它运行的同一文件夹中。该文件将包含所有“好的 URL”。如果你计划在同一目标上重新运行 Yasuo,只需将该文件提供给 Yasuo,无需使用 -f 或 -r 选项。
Example: ruby yasuo.rb -s my_custom_signatures.yaml -u savedURLstateXXXXX.out
Yasuo 将解析该文件,并开始对列出的“好的 URL”进行易受攻击应用程序的枚举。Ta-Da。
./yasuo -r 127.0.0.1 -p 80,8080,443,8443 -b form
上述命令将对 127.0.0.1 执行端口扫描,扫描端口 80、8080、443 和 8443,并将对所有实现基于表单身份验证的应用程序进行暴力破解登录。
./yasuo -l /project/hosts -p 80,8080,443,8443
上述命令将对文件 /project/hosts 中的主机执行端口扫描,扫描端口 80、8080、443 和 8443,并且不会对发现的应用程序执行任何暴力破解操作。
./yasuo -f my_nmap_output.xml -b all
上述命令将解析 nmap 输出文件 "my_nmap_output.xml",并将对所有实现基于表单和 HTTP 基本身份验证的应用程序进行暴力破解登录。
