Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
apache__mina-sshd_CVE-2023-35887_2-9-2 — 纯Java SSH客户端/服务器库,实现SSH-2协议,支持多种加密算法、密钥交换、认证方法、SFTP、SCP和端口转发,用于安全远程访问。 | Kitploit
工具/GitHubGitHub/shoucheng3/apache__mina-sshd_cve-2023-35887_2-9-2
加密/解密工具漏洞分析网络安全密码学渗透测试实用工具与框架身份验证远程访问工具

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
shoucheng3/apache__mina-sshd_cve-2023-35887_2-9-2

apache__mina-sshd_CVE-2023-35887_2-9-2

纯Java SSH客户端/服务器库,实现SSH-2协议,支持多种加密算法、密钥交换、认证方法、SFTP、SCP和端口转发,用于安全远程访问。

查看仓库
21年前尚未审核

Apache MINA SSHD

Apache MINA SSHD

Apache MINA SSHD 是一个 100% 纯 Java 库,用于在客户端和服务器端支持 SSH 协议。它并不 旨在替代 Unix 操作系统的 SSH 客户端或 SSH 服务器,而是为需要 SSH 支持的基于 Java 的应用程序提供支持。

该库可以利用多种 I/O 后端:

  • 默认传输是内置的,使用 Java 的 AsynchronousSocketChannel。
  • Apache MINA,一个可扩展的高性能异步 I/O 库,也可以使用,或者
  • Netty 异步事件驱动的网络框架也受支持。

受支持的标准

参考实现文档

  • RFC 4251 - 安全外壳(SSH)协议架构
  • RFC 4252 - 安全外壳(SSH)认证协议
  • RFC 4253 - 安全外壳(SSH)传输层协议
  • RFC 4254 - 安全外壳(SSH)连接协议
  • RFC 4256 - 安全外壳协议(SSH)的通用消息交换认证
  • RFC 4335 - 安全外壳(SSH)会话通道中断扩展
  • RFC 4344 - 安全外壳(SSH)传输层加密模式
  • RFC 4345 - 安全外壳(SSH)传输层协议的改进 Arcfour 模式
  • RFC 4419 - 安全外壳(SSH)传输层协议的 Diffie-Hellman 组交换
  • RFC 4716 - 安全外壳(SSH)公钥文件格式
  • RFC 5208 - 公钥密码标准(PKCS)#8 - 版本 1.2
  • RFC 5480 - 椭圆曲线密码学主体公钥信息
  • RFC 5647 - 安全外壳传输层协议的 AES 伽罗瓦/计数器模式
  • RFC 5656 - 椭圆曲线算法集成到安全外壳传输层中
  • RFC 5915 - 椭圆曲线私钥结构
  • RFC 6668 - 安全外壳(SSH)传输层协议的 SHA-2 数据完整性验证
  • RFC 8160 - 安全外壳(SSH)中的 IUTF8 终端模式
  • RFC 8268 - 安全外壳(SSH)的更多模幂(MODP)Diffie-Hellman(DH)密钥交换(KEX)组
  • RFC 8308 - 安全外壳(SSH)协议中的扩展协商
    • 注意: - 代码包含用于实现该 RFC 的 钩子,并为 server-sig-algs 扩展提供了默认的客户端和服务器实现。
  • RFC 8332 - 在安全外壳(SSH)协议中使用 RSA 密钥与 SHA-256 和 SHA-512
    • 注意: - 服务器端默认支持这些签名。客户端需要特定的初始化——参见 第 3.3 节 以及上述 RFC 8308 的钩子。
  • RFC 8731 - 使用 Curve25519 和 Curve448 的安全外壳(SSH)密钥交换方法
  • 密钥交换(KEX)方法更新与安全外壳建议
  • OpenSSH 对 U2F/FIDO 安全密钥的支持
    • 注意: - 服务器端默认支持这些密钥。客户端需要特定的初始化。
  • OpenSSH 公钥证书认证系统,供 SSH 使用
  • SSH 代理跳转
  • SFTP 版本 3-6 + 扩展
    • supported - DRAFT 05 - 第 4.4 节
    • supported2 - DRAFT 13 第 5.4 节
    • versions - DRAFT 09 第 4.6 节
    • vendor-id - DRAFT 09 - 第 4.4 节
    • acl-supported - DRAFT 11 - 第 5.4 节
    • newline - DRAFT 09 第 4.3 节
    • md5-hash, md5-hash-handle - DRAFT 09 - 第 9.1.1 节
    • check-file-handle, check-file-name -
  • 无尽陷阱 - 参见 HOWTO(s) 章节。

已实现/可用支持

认证方法

  • hostbased, publickey, OpenSSH 基于主机的公钥, keyboard-interactive, password

密码

  • aes128cbc, aes128ctr, aes192cbc, aes192ctr, aes256cbc, aes256ctr, arcfour128, arcfour256, blowfish-cbc, [email protected], [email protected], [email protected], 3des-cbc

摘要

  • md5, sha1, sha224, sha256, sha384, sha512

MAC

  • hmacmd5, hmacmd596, hmacsha1, hmacsha196, hmacsha256, hmacsha512, [email protected] , [email protected], [email protected]

密钥交换

  • diffie-hellman-group1-sha1, diffie-hellman-group-exchange-sha256, diffie-hellman-group14-sha1, diffie-hellman-group14-sha256 , diffie-hellman-group15-sha512, diffie-hellman-group16-sha512, diffie-hellman-group17-sha512, diffie-hellman-group18-sha512 , ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, curve25519-sha256, [email protected], curve448-sha512
    • 在 Java 11 之前的 Java 版本上,需要使用 Bouncy Castle 来支持 curve25519-sha256、[email protected] 或 curve448-sha512。

压缩

  • none, zlib, [email protected]

签名/密钥

  • ssh-dss, ssh-rsa, rsa-sha2-256, rsa-sha2-512, nistp256, nistp384, nistp521 , ssh-ed25519(需要 eddsa 可选模块), [email protected], [email protected] , [email protected], [email protected], [email protected] , [email protected], [email protected], [email protected]

注意: 以上列表包含了代码中支持的所有安全设置。然而,根据最新建议,默认客户端/服务器设置仅包含当前认为安全可用的设置。希望包含不安全设置的用户必须显式进行设置。以下设置已被弃用,不再包含在默认设置中:

  • RFC 8758 - 弃用安全外壳(SSH)中的 RC4
  • RFC 8429 - 弃用 Kerberos 中的 Triple-DES (3DES) 和 RC4
    • 虽然该 RFC 针对 Kerberos,但也提到了 DES 的弱点。
  • OpenSSH 发布说明 - 通常是实际实践的很好指示。
  • 基于 SHA-1 的密钥交换和签名
  • 基于 MD5 和截断的 HMAC 算法
  • RFC 8270 - 将安全外壳最低推荐 Diffie-Hellman 模数大小增加到 2048 位 注意: 仍然可以通过编程方式或系统属性将其初始化为 1024 来使用它——参见 安全提供者设置。代码中仍然包含 1024 的模数,如果用户显式将默认最小值降低到 1024,则会使用它们。

警示: 根据 RFC 8332 - 第 3.3 节

实施经验表明,存在一些服务器会对尝试 SSH 服务器不支持的公钥算法的客户端施加认证惩罚。

当使用 RSA 密钥向未实现 "server-sig-algs" 扩展的服务器进行认证时,客户端可能默认使用 "ssh-rsa" 签名以避免认证惩罚。当新的 rsa-sha2-* 算法得到足够广泛的采用并且有必要禁用 "ssh-rsa" 时,客户端可能默认使用其中一种新算法。

这意味着遇到此问题(及相关问题)的用户必须显式修改支持的安全设置以避免该问题。

特别声明: ssh-rsa 被保留在默认设置中,因为仍有许多系统/用户在使用它。然而,在未来的版本中,它将被从默认设置中移除。因此,我们强烈建议用户尽快迁移到其他密钥(例如 ECDSA、ED25519)。

发布说明

问题报告

错误报告以及改进或功能请求可以提交到 GitHub 问题跟踪器 或 Apache 问题跟踪器。

敏感问题(如安全漏洞)必须通过 私人渠道 报告,而不要通过任一问题跟踪器。

核心要求

  • Java 8+(从版本 1.3 开始)

  • Slf4j

代码仅需要核心抽象的 slf4j-api 模块。可以从众多现有适配器中选择实际的日志 API 实现。

基本构件结构

  • sshd-common - 包含整个项目使用的基本类,以及不需要客户端或服务器网络支持的代码。

  • sshd-core - 包含基本的 SSH 客户端/服务器代码,实现了连接、传输、通道、转发等功能。

    • sshd-mina, sshd-netty - 默认 NIO2 连接器的替代品,分别使用 MINA 和/或 Netty 库来建立和管理网络连接。
  • sshd-sftp - 包含服务器端 SFTP 子系统和 SFTP 客户端代码。

    • sshd-spring-sftp - 包含与 Spring Integration 兼容的 SFTP 适配器。
  • sshd-scp - 包含服务器端 SCP 命令处理器和 SCP 客户端代码。

  • sshd-ldap - 包含使用 LDAP 服务器的服务器端密码和公钥认证器。

  • sshd-git - 包含 JGit SSH 会话工厂的替代品。

  • sshd-osgi - 包含一个结合了 sshd-common 和 sshd-core 的构件,以便在 OSGi 环境中部署。

  • sshd-putty - 包含用于解析 PUTTY 密钥文件的代码。

  • sshd-openpgp - 包含用于解析 OpenPGP 密钥文件的代码(存在一些限制——参见相关章节)。

  • sshd-cli - 包含用于命令行客户端/服务器的简单模板,提供与 Linux ssh/sshd 命令相似的观感。

  • sshd-contrib - 实验性代码,目前正在审查中,可能会被移入其他构件(或成为一个全新的构件——例如,sshd-putty 就是如此演进的)。

可选依赖项

快速参考

构建代码

包含测试:

root@kitploit:~
mvn clean install

不带测试:

root@kitploit:~
mvn -Pquick clean install

5 分钟内设置 SSH 客户端

5 分钟内嵌入 SSHD 服务器实例

SSH 功能分解

安全提供者设置

命令基础设施

SCP

SFTP

端口转发

内部支持类

事件监听器和处理器

命令行客户端

GIT 支持

配置/数据文件解析支持

扩展模块

HOWTO(s)

技术文档

SSH 密钥交换

TCP/IP 端口转发

全局请求

下载工具
DRAFT 09 - 第 9.1.2 节
  • copy-file, copy-data - DRAFT 00 - 第 6、7 节
  • space-available - DRAFT 09 - 第 9.2 节
  • filename-charset, filename-translation-control - DRAFT 13 - 第 6 节 - 仅客户端
  • 多个 OpenSSH SFTP 扩展