单命令实现Web服务器截图:EyeWitness工具与替代方案

本文介绍了使用EyeWitness工具从Nessus扫描结果中自动获取Web服务器截图的方法,以及在无法使用该工具时的Windows命令行替代方案,包括批量URL处理和分组暂停技巧。

Web服务器截图:单命令解决方案

EyeWitness是由Chris Truncer开发的一款便捷工具,用于从URL列表中获取Web浏览器截图。对于渗透测试人员特别有用的是,它能够从Nessus扫描输出文件中创建目标URL列表。

为什么需要EyeWitness?

在对客户进行Nessus漏洞扫描时,我总是在扫描结果上运行EyeWitness。这是因为Nessus将所有检测到的Web服务器报告为信息性发现,而这些服务器可能存在对人类显而易见但难以被扫描器检测到的漏洞。

例如:

  • 一次扫描检测到多个Web服务器并将其列为信息性发现,但通过Web浏览器访问这些URL显示的是客户内部办公室的流媒体视频——这显然是一个安全问题
  • 内部网络扫描中常见的发现是嵌入式Web服务器接受默认凭据,如路由器、交换机、打印机和VOIP电话上的服务器

平台兼容性与限制

该工具可在Linux和Windows上运行,但有时可能无法使用:

  • 当只能访问Windows系统且应用白名单生效时
  • 当向系统传输文件困难时

Windows命令行替代方案

当无法使用EyeWitness时,可以使用以下Windows命令行单行代码:

第一步:生成URL列表

从Nessus扫描结果生成URL列表的两种方法:

  1. 导出CSV版本的扫描结果,在Excel中使用公式基于"服务检测"扫描结果构建URL列表
  2. 将扫描结果导出为.nessus文件,在本地Linux实例上使用EyeWitness的createtargets选项:
1
./EyeWitness.py -f internal_scan_results.nessus --createtargets URLs.txt

第二步:使用Internet Explorer打开URL

将URL列表移动到Windows环境后,运行以下命令:

1
for /F %u in (URLs.txt) do @start iexplore %u

第三步:添加暂停机制

为避免同时打开过多浏览器窗口,添加计数器和每5个URL暂停一次的功能:

首先启用延迟变量扩展:

1
cmd.exe /V:ON

然后运行主命令:

1
set /a count=1 & for /F %u in (URLs.txt) do @start iexplore %u & echo %u & set /a _result=!count!%5>NUL & @(if !_result!==0 @pause) & set /a count+=1

Linux替代方案

来自@h1ghtopfade的单行代码:

1
xargs -a URLs.txt firefox -new-tab "$line"

这种方法比手动复制粘贴URL到浏览器窗口更高效,特别是在无法使用EyeWitness的情况下。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计