轻松将单线程命令行应用程序转换为支持CIDR和通配符的快速多线程应用程序。
Interlace: 无需编码即可轻松自动化和多线程渗透测试及漏洞赏金工作流的工具
使用以下命令安装:
$ python3 setup.py install
依赖项将自动安装,并且Interlace将被添加到您的路径中,作为 interlace 命令。
| 参数 | 描述 |
|---|---|
| (stdin) | 通过管道从另一个应用程序传入目标列表,格式为逗号分隔、CIDR表示法或单个主机 |
| -t | 指定一个目标或域名,格式为逗号分隔、CIDR表示法或单个主机 |
| -tL | 指定一个目标或域名列表文件 |
| -e | 指定要排除的目标列表,格式为逗号分隔、CIDR表示法或单个主机 |
| -eL | 指定要排除的目标列表文件 |
| -threads | 指定任意时刻最大运行线程数(默认值:5) |
| -timeout | 指定单个线程的超时时间(秒)(默认值:600) |
| -c | 指定要在每个目标或域名上执行的单条命令 |
| -cL | 指定要在每个目标或域名上执行的命令列表文件 |
| -o | 指定一个输出文件夹变量,可在命令中用作 _output_ |
| -p | 指定一个端口变量列表,可在命令中用作 _port_。可以是单个端口、逗号分隔列表或使用连字符表示的范围 |
| -pL | 指定代理列表文件 |
| --proto | 指定协议,可在命令中用作 _proto_ |
| -rp | 指定一个真实端口变量,可在命令中用作 _realport_ |
| -random | 指定一个文件目录,其中的文件可随机用于命令,变量为 _random_ |
| --no-bar / --sober | 设置后,进度条将不显示 |
| --no-cidr | 设置后,目标文件中的CIDR表示法将不会自动扩展为单个主机 |
| --no-color | 设置后,将去除所有前景色或背景色 |
| --silent | 设置后,仅显示重要信息,横幅和其他信息将被隐藏 |
| -v | 设置后,终端将显示详细输出 |
| 示例 | 标记类型 |
|---|---|
| 80 | 单个端口 |
| 1-80 | 连字符表示法,对从1到80的每个端口执行一次命令 |
| 80,443 | 对端口80和端口443都执行一次命令 |
-t 和 -tL 的处理方式相同。您可以像使用nmap时那样传递目标。可以使用CIDR表示法、连字符表示法或逗号分隔的目标列表。单个目标列表文件可以在不同行使用不同的表示法类型。
或者,您可以通过STDIN传递目标,此时不需要使用 -t 或 -tL。
以下变量在运行时将在命令中被替换:
| 变量 | 替换内容 |
|---|---|
| _target_ | 替换为当前线程正在处理的扩展后的目标列表 |
| _cleantarget_ | 替换为去除 http:// 或 https:// 后的目标 |
| _safe-target_ | 替换为自动对命令进行引用的目标,防止子命令执行 |
| _host_ | 与 _target_ 功能相同,可互换使用 |
| _output_ | 替换为 Interlace 中的输出文件夹变量 |
| _port_ | 替换为 Interlace 中的扩展端口变量 |
| _realport_ | 替换为 Interlace 中的真实端口变量 |
| _proxy_ | 替换为 Interlace 中的代理列表 |
| _random_ | 替换为 Interlace 中随机选择的文件 |
Interlace 还支持两个额外的功能来控制命令文件内的执行流程:_blocker_ 和 _block:<name>_。拦截器可防止其之后列出的命令执行,直到其之前的所有命令完成;而块可用于强制对某个目标按顺序执行块内列出的命令。
这些功能在每个目标级别上运行。如果可用线程并且当前目标存在拦截器,Interlace 将开始处理目标列表中的下一个目标,以最大化效率。
使用这些功能可以更直接地控制单个目标的执行流程,防止命令乱序执行。
拦截器会阻止其下方的任何命令执行,直到其上方的所有命令完成(针对当前活动的主机)。例如,在以下命令文件中:
mkdir -p _output_/_target_/scans/
_blocker_
nmap _target_ -oA _output_/_target_/scans/_target_-nmap
此处使用拦截器可防止在基础文件夹结构创建完成之前运行 nmap,从而避免 nmap 抛出异常。
块强制其中的所有命令按顺序执行。您还可以在每个命令文件中使用多个块。例如:
_block:nmap_
mkdir -p _target_/output/scans/
nmap _target_ -oN _target_/output/scans/_target_-nmap
_block:nmap_
nikto --host _target_
在此示例中,块的运行方式与之前相同,但如果线程数足够高,nikto 将立即开始运行,并将结果返回终端(而 nmap 和文件创建在后台进行)。
假设您有一个文件 targets.txt,内容如下:
bugcrowd.com
hackerone.com
您可以使用 Interlace 对该文件中的任意数量的目标运行扫描,命令如下:
➜ /tmp interlace -tL ./targets.txt -threads 5 -c "nikto --host _target_ > ./_target_-nikto.txt" -v
=========================================================================
Interlace v1.0 by Michael Skelton (@codingo_) & Sajeeb Lohani (@sml555_)
=========================================================================
[14:33:23] [THREAD] [nikto --host hackerone.com > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com > ./bugcrowd.com-nikto.txt] Added to Queue
这会针对每个主机运行 Nikto,并将结果保存到相应的文件中。注意,在上面的示例中,由于我们使用了 > 运算符,结果不会反馈到终端;但这是期望的功能,否则我们无法区分 Nikto 的结果属于哪个目标。
对于需要实时反馈的应用程序,请像平常一样传递命令(或使用 tee)。
使用上面的示例,假设您希望对同一目标在端口 80 和 443 上分别进行独立扫描。您可以使用以下命令:
➜ /tmp interlace -tL ./targets.txt -threads 5 -c "nikto --host _target_:_port_ > ./_target_-_port_-nikto.txt" -p 80,443 -v
=========================================================================
Interlace v1.0 by Michael Skelton (@codingo_) & Sajeeb Lohani (@sml555_)
=========================================================================
[14:33:23] [THREAD] [nikto --host hackerone.com:80 > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com:80 > ./hackerone.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host bugcrowd.com:443 > ./bugcrowd.com-nikto.txt] Added to Queue
[14:33:23] [THREAD] [nikto --host hackerone.com:443 > ./hackerone.com-nikto.txt] Added to Queue
在渗透测试中,经常有一组命令需要在几乎每次任务中运行。假设该列表包含 testssl.sh、nikto 和 sslscan,您可以将以下内容保存到名为 commands.txt 的命令文件中: