Metasploit Telnet_Login运行报错:USER_FILE、PASS_FILE验证失败
Telnet_login模块USER_FILE/PASS_FILE校验失败问题排查与解决
报错本质
本次触发的Msf::OptionValidateError不属于目标连通性、网络可达性类问题,是Metasploit在启动模块前的参数校验阶段,对用户提供的字典文件读取逻辑判断失败,和RHOSTS配置、目标端口开放状态无直接关联。由于使用的校方定制环境无法升级Metasploit版本,所有排查步骤均针对4.16.18-dev版本的已知特性设计。
常见成因与对应解决方法
- 相对路径识别错位
Metasploit的相对路径基准是自身安装根目录(通常为/usr/share/metasploit-framework/),不是当前msfconsole启动时的终端工作目录。直接配置set USER_FILE users.txt这类相对路径时,系统会在Metasploit安装目录下寻找对应文件,而非你存放字典的桌面、用户目录等位置。
排查方法:优先使用Metasploit自带的内置字典路径替换自定义相对路径,验证是否能通过校验:
如果替换内置路径后不再报校验错误,即可确认是之前的自定义路径无法被Metasploit识别。使用自定义字典时必须填写从根目录开始的完整绝对路径,不要用桌面、用户目录的相对路径。set USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt - 字典文件权限不足或内容为空
校方定制的实验环境通常会对虚拟机的用户权限做限制,如果msfconsole不是以root权限启动,而你存放的字典文件设置了仅所有者可读的权限(如600权限),Metasploit进程会因为无法读取文件内容触发校验失败。如果字典文件本身为空,也会被模块判定为无效路径。
排查方法:- 给自定义字典文件开放全局可读权限:
chmod 644 /path/to/your/users.txt chmod 644 /path/to/your/passwords.txt- 确认文件内存在实际内容,使用
wc -l /path/to/your/users.txt检查文件行数,避免空文件触发校验错误。
- 版本已知校验逻辑bug
使用的4.16.18-dev开发版存在模块校验逻辑缺陷:当模块的单值凭据选项(USERNAME、PASSWORD)为空,且未显式设置所有凭据来源相关的开关选项时,模块会错误判定有效字典路径无效。
绕开方法:在配置完字典路径后,显式补全所有凭据来源的开关配置,触发模块的正常校验逻辑:set BLANK_PASSWORDS false set USER_AS_PASS false set DB_ALL_USERS false set DB_ALL_PASS false set DB_ALL_CREDS false - 凭据文件类型配置混淆
telnet_login模块同时支持单独用户文件、单独密码文件、组合凭据文件(USERPASS_FILE)三类凭据来源。当前配置中USERPASS_FILE为空,模块会强制校验USER_FILE、PASS_FILE的有效性,不能通过留空这类选项跳过敏捷校验。
可直接复用的正常运行配置
以下配置可在4.16.18-dev版本下通过校验并执行Telnet凭据探测:
use auxiliary/scanner/telnet/telnet_login set RHOSTS 10.139.46.121 set RPORT 23 # 替换为你实际使用的字典绝对路径 set USER_FILE /usr/share/metasploit-framework/data/wordlists/unix_users.txt set PASS_FILE /usr/share/metasploit-framework/data/wordlists/unix_passwords.txt # 绕过版本bug的开关配置 set BLANK_PASSWORDS false set USER_AS_PASS false set DB_ALL_USERS false set DB_ALL_PASS false set DB_ALL_CREDS false set STOP_ON_SUCCESS true set THREADS 5 set VERBOSE true run
内容的提问来源于stack exchange,提问作者Roosterx86
相关产品推荐
相关产品推荐

