目录
一、导图
二、口令猜解-Hydra-FTP&RDP&SSH
1、协议介绍
2、Hydra工具介绍
3、实例演示
三、配置不当-未授权访问-Rsync 文件备份
1、Rsync介绍
2、漏洞成因——配置不当
3、实例演示
四、协议漏洞-应用软件-FTP&ProFTPD搭建
1、引入
2、ProFTPD介绍
3、实例演示
五、协议漏洞-应用软件-SSH&libssh&Openssh
1、引入
2、libssh和Openssh介绍
3、存在的漏洞
4、Openssh漏洞演示
5、libssh漏洞演示
一、导图
二、口令猜解-Hydra-FTP&RDP&SSH
1、协议介绍
▶FTP(传文件---21端口)
FTP(File Transfer Protocol)是一种用于在计算机之间传输文件的协议。它允许用户通过网络将文件从一个计算机传输到另一个计算机。
FTP协议有两个组件:FTP客户端和FTP服务器。FTP客户端是用户使用的软件,它允许用户从服务器上下载文件或将文件上传到服务器。FTP服务器则是一台计算机,它运行FTP服务软件,允许用户通过FTP客户端访问它上面的文件。
FTP协议使用两个端口来传输数据。FTP客户端使用端口21与FTP服务器建立连接,这是控制连接(control connection)。一旦控制连接建立,FTP客户端和FTP服务器将使用不同的端口传输数据,称为数据连接(data connection)。数据连接通常使用端口20或其他随机端口。
▶RDP(远程操控---3389端口)
RDP(Remote Desktop Protocol)是一种用于远程访问Windows操作系统的协议。
RDP协议在Windows中得到广泛支持,包括Windows XP、Windows 7、Windows 8和Windows 10等版本。此外,许多第三方软件和工具也支持使用RDP协议进行远程访问,例如远程桌面软件和远程管理工具等。
需要注意的是,为了使用RDP协议进行远程访问,必须在远程计算机上启用远程桌面功能,并在本地计算机上使用RDP客户端软件。另外,为了保证安全,建议在使用RDP协议进行远程访问时采取一些安全措施,例如使用强密码、启用双重身份验证等。
▶SSH(远程操控---22端口)
SSH(Secure Shell)是一种网络协议,用于在不安全的网络中为计算机之间的加密通信提供安全性。SSH最初是由Tatu Ylönen于1995年开发的,旨在解决传统的Telnet和FTP协议的安全性问题。
SSH协议通过加密传输来保护数据的安全性,包括传输的命令、数据和文件等。它还提供了身份验证功能,以确保只有经过授权的用户才能访问计算机。SSH协议通常用于通过终端访问远程计算机、远程执行命令和传输文件等。
SSH协议的工作原理如下:当客户端尝试连接到SSH服务器时,它会向服务器发送其公共密钥。服务器使用此公共密钥来生成一个会话密钥,并将其发送回客户端。客户端使用其私有密钥来解密会话密钥,并使用该密钥加密和解密所有数据。
SSH协议通常使用22号端口进行通信,但是也可以通过更改SSH服务器的配置来使用其他端口。
总的来说,SSH协议是一种非常安全和灵活的协议,被广泛用于远程管理和传输文件等场景。SSH协议的许多实现和客户端软件都可以免费获取和使用,例如OpenSSH和PuTTY等。
2、Hydra工具介绍
▶工具下载地址:
https://github.com/vanhauser-thc/thc-hydra
▶工具简介:
Hydra是一种强大的网络登录破解工具,它可以尝试多种用户名和密码组合来尝试登录网络服务,例如SSH、FTP、Telnet、SMTP、POP3等等。
Hydra支持多线程并发登录尝试,并能自动处理输入和输出,使其成为自动化扫描和攻击测试的理想工具。此外,Hydra还支持使用代理服务器、设置超时时间、支持多种协议等高级功能。
Hydra通常被用于渗透测试和网络安全评估,以检测目标系统中可能存在的弱点和安全漏洞。但是需要注意的是,Hydra的使用也可能违反法律和道德规范,因此在使用Hydra时需要遵守法律法规和道德标准,以避免不必要的风险和后果。
总的来说,Hydra是一款非常强大的网络登录破解工具,可以帮助网络安全专业人员在渗透测试和安全评估中发现潜在的安全漏洞,从而提高系统和网络的安全性。
▶使用命令:
-s PORT 可通过这个参数指定非默认端口。
-l LOGIN 指定破解的用户,对特定用户破解。
-L FILE 指定用户名字典。
-p PASS 小写,指定密码破解,少用,一般是采用密码字典。
-P FILE 大写,指定密码字典。
-e ns 可选选项,n:空密码试探,s:使用指定用户和密码试探。
-C FILE 使用冒号分割格式,例如“登录名:密码”来代替-L/-P 参数。
-M FILE 指定目标列表文件一行一条。
-o FILE 指定结果输出文件。
-f 在使用-M 参数以后,找到第一对登录名或者密码的时候中止破解。
-t TASKS 同时运行的线程数,默认为 16。
-w TIME 设置最大超时的时间,单位秒,默认是 30s。
-v / -V 显示详细过程。
3、实例演示
首先用到两台主机。
在命令提示符里输入下面内容来调用远程连接,输入服务器ip地址后点击下面的连接。
在弹出的窗口内写入当前电脑的密码然后点击确定即可远程连接到服务器。
成功连接到了服务器。
此时利用到的就是3389端口的RDP协议,这里验证了计算机的用户和密码,计算机的默认用户就是administrator,密码如果我们未知,就可以使用hydra来进行爆破。
这里我们使用的是kali内自带的hydra。
连接到kali。
执行下面的命令即可开始爆破,等待其爆破成功即可。
hydra -l administrator -P 10top1K.txt 47.110.53.159 rdp -V
可以看到成功爆破出了密码。
我们对其进行端口扫描,来查看有没有其它可以利用的端口。
在上面我们发现了21端口也处于开启状态,所以我们考虑对21端口进行爆破。
执行下面的命令(因为我们爆破的是ftp,其用户名可能是随机的,所以我们对用户名也设置一个字典)。
hydra -L 10top1K.txt -P 10top1K.txt 47.110.53.159 ftp -V #比较花时间
hydra -l test -P 10top1K.txt 47.110.53.159 ftp -V #这里为了节省时间指定了正确的用户名
爆破成功。
前面的两个爆破都是对windows进行的爆破,下面尝试对Linux进行爆破。
首先扫描其端口,可以看到22号端口打开,因此可以尝试对ssh协议的爆破。
执行下面的命令来进行爆破。
hydra -l root -P 10top1K.txt 47.110.53.159 ssh -V
可以看到成功爆破出了密码。
三、配置不当-未授权访问-Rsync 文件备份
1、Rsync介绍
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
已支持跨平台,可以在Windows与Linux间进行数据同步。
对应端口号为:873。
2、漏洞成因——配置不当
rsync是Linux下一款数据备份工具,支持通过rsync协议、ssh协议进行远程文件传输。其中rsync协议默认监听873端口,如果目标开启了rsync服务,并目没有配置ACL或访问密码,我们将可以读写目标服务器文件。
3、实例演示
找到对应的靶场环境。
将环境启动。
接下来我们来对其进行测试,测试使用的命令是rsync这条命令,这条命令在Windows内没有,所以需要使用Linux来进行测试。
<判断>
执行下面的命令来进行测试,如果返回下面的内容,则说明存在安全问题——未授权访问,反之,则没有未授权访问。
<利用>
此时我们执行下面的命令就可以看到文件夹下的内容了。
执行下面的命令后成功将文件下载到了本地的当前目录下。
执行下面的命令后成功将文件进行了上传。
四、协议漏洞-应用软件-FTP&ProFTPD搭建
1、引入
有一些服务是需要用 软件或者应用来搭建起来的,比如FTP服务可以使用软件ProFTPD来搭建起来。
FTP的默认控制连接端口号是21,用于建立客户端与FTP服务器之间的连接。
FTP的默认数据连接端口号是20,用于在客户端和服务器之间传输文件和目录等数据。
2、ProFTPD介绍
ProFTPD是一个开源的FTP服务器软件,它可以在Linux、Unix、Windows等操作系统上运行,适用于多种场景,并且易于配置和扩展。
ProFTPD的安装和配置相对容易,并且具有良好的性能和可靠性,因此它广泛用于Web主机、FTP服务提供商和企业网络等场景。
3、实例演示
找到对应靶场。
将靶场环境启动。
从网上下载exp,下载地址为:https://github.com/tOkx/exploit-CVE-2015-3306。
运行py文件。
这个exp会上传一个文件到网站,首先来验证文件不存在。
执行下图所示的命令。
执行后刷新页面,发现文件存在了。
查看exp源码可以看到其可以执行cmd命令。
借下来我们尝试执行,可以看到执行成功了。
五、协议漏洞-应用软件-SSH&libssh&Openssh
1、引入
有一些服务是需要用软件或者应用来搭建起来的,比如ssh服务可以使用软件Openssh或者libssh来搭建起来。
Linux内自带OpenSSH。
SSH默认端口号为:22。
2、libssh和Openssh介绍
libssh和OpenSSH都是SSH(Secure Shell)客户端和服务器的实现,提供了加密的远程登录和文件传输功能。它们的主要区别在于使用的编程语言和应用场景不同。
libssh是用C语言编写的SSH客户端和服务器库,它可以嵌入到其他应用程序中,为应用程序提供SSH功能。它主要用于开发自定义SSH客户端和服务器应用程序,并且可以轻松地与其他C语言代码集成。libssh提供了与OpenSSH类似的功能,包括基于口令和密钥的身份验证、SSH连接的创建和管理、文件传输和端口转发等。
OpenSSH是一种完整的SSH解决方案,包括SSH客户端、SSH服务器和其他一些辅助工具。OpenSSH是用C语言编写的,主要运行在Unix和类Unix系统上。OpenSSH提供了一种安全的远程登录和文件传输方式,能够抵御网络攻击,并保证数据的机密性和完整性。OpenSSH支持基于口令和密钥的身份验证、端口转发、动态端口转发、X11转发等功能,是Unix和类Unix系统中广泛使用的SSH实现。
总的来说,libssh和OpenSSH都提供了安全的远程登录和文件传输功能,但它们的使用场景和编程语言不同。如果需要将SSH功能嵌入到其他应用程序中,可以选择使用libssh,而如果需要一个完整的SSH解决方案,可以使用OpenSSH。
3、存在的漏洞
4、Openssh漏洞演示
找到对应靶场。
将靶场环境启动。
下载exp,下载地址为:GitHub - Rhynorater/CVE-2018-15473-Exploit: Exploit written in Python for CVE-2018-15473 with threading and export formats
使用exp执行下面的命令,可以看到成功枚举出了用户名。
真鸡肋...
5、libssh漏洞演示
找到对应靶场。
将靶场环境启动。
下载exp,下载地址为:https://www.seebug.org/vuldb/ssvid-97614
使用exp执行下面的命令。
可以看到获取到了root权限。
执行下面的命令——whoani。
可以看到成功执行了命令并得到了返回值。