目录
1. SMB (服务器消息块协议)
理解 SMB (Understanding SMB)
SMB (Server Message Block) 是一种客户端-服务器通信协议,用于在网络上共享对文件、打印机和其他资源的访问。服务器将其文件系统或资源提供给网络上的客户端。SMB 是一种请求-响应式协议,通常运行在 TCP/IP 之上。自 Windows 95 以来,所有 Windows 操作系统都内置了 SMB 支持,而在 Unix 系统上,开源的 Samba 套件提供了 SMB 协议的实现。
SMB 枚举 (SMB Enumeration)
枚举的第一步通常是端口扫描,以确认目标主机开放了 SMB 端口(TCP 139, 445)。Enum4linux 是一款专门用于枚举 Windows 和 Linux 系统上 SMB 共享的工具。
- Enum4Linux 常用参数:
| 参数 | 描述 |
|---|---|
-U | 获取用户列表。 |
-M | 获取机器列表。 |
-S | 获取共享列表。 |
-P | 获取密码策略信息。 |
-G | 获取组及成员列表。 |
-a | 执行以上所有基本枚举。 |
-
示例命令:
Bash
enum4linux -a <target_ip>
利用 SMB (Exploiting SMB)
最常见的 SMB 漏洞之一是配置不当,允许匿名访问共享。
-
连接客户端:
smbclient是用于连接 SMB 共享的命令行工具。 -
语法:
Bash
smbclient //[IP]/[SHARE] -U [USERNAME] -p [PORT] -
示例 (匿名登录):
Bash
smbclient //10.10.10.10/secrets -U Anonymous -p 445 -
常用命令 (在
smbclient提示符下):-
ls或dir: 列出文件和目录。 -
cd <directory>: 切换目录。 -
get <file>: 将文件从共享下载到本地。 -
put <file>: 将本地文件上传到共享。
-
2. Telnet
理解 Telnet
Telnet 是一种应用层协议,允许用户通过客户端连接到远程机器并执行命令。然而,它有一个致命的缺陷:所有通信(包括用户名和密码)都以明文形式传输,没有任何加密。因此,它已被更安全的 SSH 协议所取代。
Telnet 枚举
通过 Nmap 等工具进行端口扫描,可以发现开放的 Telnet 端口(通常是 TCP 23)。
利用 Telnet
由于其不安全的特性,Telnet 的主要漏洞在于:
-
流量嗅探: 任何能够嗅探网络流量的攻击者都可以直接捕获登录凭证。
-
弱访问控制: 许多旧设备上的 Telnet 服务存在弱密码或默认密码。
-
已知漏洞 (CVEs): Telnet 服务本身的实现可能存在可被利用的漏洞。
3. FTP (文件传输协议)
理解 FTP
FTP (File Transfer Protocol) 是一种用于通过网络远程传输文件的协议。
-
双通道: FTP 使用两个独立的通道:
-
命令通道: 用于传输命令和服务器响应。
-
数据通道: 用于实际的文件传输。
-
-
主动模式 vs. 被动模式:
-
主动模式: 客户端打开一个端口并监听,服务器主动连接到该端口以传输数据。
-
被动模式: 服务器打开一个端口并监听,客户端主动连接到该端口以传输数据。(更常用于现代网络,因为它对客户端侧的防火墙更友好)。
-
FTP 枚举
端口扫描可以确认 FTP 服务的存在(通常是 TCP 21)。许多 FTP 服务器配置不当,允许匿名登录。
利用 FTP
-
匿名登录: 尝试使用用户名
anonymous和任意密码(通常是电子邮件地址)进行登录。 -
暴力破解: 如果匿名登录被禁用,可以使用 Hydra 等工具对已知用户名进行密码暴力破解。
Bash
hydra -t 4 -l dale -P /usr/share/wordlists/rockyou.txt -vV <target_ip> ftp
4. NFS (网络文件系统)
理解 NFS
NFS (Network File System) 允许一个系统通过网络与其他系统共享目录和文件。客户端可以将远程服务器上的目录“挂载”到本地文件系统的一个点上,之后就可以像访问本地文件一样访问远程文件。
NFS 枚举
-
端口扫描: 确认 RPC 端口 (TCP/UDP 111) 和 NFS 端口 (TCP/UDP 2049) 是否开放。
-
列出共享:
nfs-common包中的showmount工具可以列出服务器上可用的 NFS 共享。Bash
showmount -e <target_ip> -
挂载共享:
Bash
# 创建本地挂载点 mkdir /tmp/nfs_mount # 挂载远程共享 sudo mount -t nfs <target_ip>:<share_path> /tmp/nfs_mount -nolock
利用 NFS
-
root_squash配置不当:-
默认行为 (
root_squash): 当远程 root 用户访问 NFS 共享时,其权限会被“压制”为一个低权限的nfsnobody用户。 -
危险配置 (
no_root_squash): 如果服务器禁用了root_squash,远程 root 用户将保留其在共享上的 root 权限。这允许攻击者在共享中创建一个带有 SUID 位的可执行文件,当服务器上的其他用户执行该文件时,攻击者就能获得服务器的 root 权限。
-
5. SMTP (简单邮件传输协议)
理解 SMTP
SMTP (Simple Mail Transfer Protocol) 用于处理电子邮件的发送。它与 POP 或 IMAP(用于接收邮件)协同工作。
-
工作流程:
-
邮件客户端连接到发件人域的 SMTP 服务器。
-
客户端提交发件人、收件人和邮件内容。
-
发件人 SMTP 服务器连接到收件人域的 SMTP 服务器。
-
收件人 SMTP 服务器验证收件人地址,并将邮件转发到其 POP/IMAP 服务器,最终邮件出现在收件人的收件箱中。
-
SMTP 枚举
配置不当的邮件服务器可能会泄露有效的用户账户名。
-
版本扫描: 使用 Metasploit 的
smtp_version模块或 Nmap 脚本来识别 SMTP 服务器的软件和版本。 -
用户枚举: 旧的 SMTP 服务器支持
VRFY(验证用户名) 和EXPN(展开邮件列表) 命令。可以使用 Metasploit 的smtp_enum模块或smtp-user-enum工具来自动化此过程,以发现有效的电子邮件地址。
利用 SMTP
枚举出的有效用户名是极具价值的信息,可以用于后续的攻击,例如:
-
针对其他服务(如 SSH, RDP)进行密码喷洒或暴力破解攻击。
-
用于更有针对性的钓鱼攻击。
6. MySQL
理解 MySQL
MySQL 是一个基于结构化查询语言 (SQL) 的关系型数据库管理系统 (RDBMS)。它采用客户端-服务器模型,客户端通过 MySQL 协议发送 SQL 查询,服务器处理查询并返回结果。
MySQL 枚举
-
端口扫描: 确认 MySQL 端口(通常是 TCP 3306)是否开放。
-
连接客户端: 如果有凭证,可以使用
mysql命令行客户端进行连接。Bash
# -h: 主机, -u: 用户, -p: 提示输入密码 mysql -h <target_ip> -u root -p注意: 如果遇到 TLS/SSL 错误,可以尝试添加
--ssl-mode=DISABLED标志。 -
自动化枚举: Nmap 的
mysql-enum脚本或 Metasploit 的相关模块可以用于自动化信息收集。
利用 MySQL
-
凭证获取: 通常通过枚举其他服务或利用 Web 应用漏洞获得 MySQL 的初始凭证。
-
数据脱取: 获得访问权限后,可以使用 Metasploit 的
mysql_schemadump模块来转储数据库结构,使用mysql_hashdump模块来提取存储的用户密码哈希值,这些哈希值可以被离线破解。
2199

被折叠的 条评论
为什么被折叠?



