模块:Attacking Common Services(19 小节)
适用范围:仅限获得明确授权的实验室、靶场和渗透测试项目。
整理方式:按“服务交互基础 → 攻击方法论 → 各协议枚举与利用 → 综合评估”重组课程内容,并集中记录工具的首次使用条件与常用命令。
0. 本章知识地图
企业中最常见的攻击面并不只有 Web,还包括文件共享、邮件、数据库、远程桌面和域名服务。本章反复训练的是同一条方法链:
- 识别服务、端口、产品和版本。
- 使用协议原生客户端确认服务是否能正常交互。
- 检查匿名访问、弱认证、默认配置和过度权限。
- 寻找敏感数据、用户名、密码、密钥和配置文件。
- 验证已知漏洞是否与真实版本、系统和配置匹配。
- 在获得授权的范围内验证命令执行、横向移动或权限提升。
- 保存证据,并区分“发现可能性”和“成功复现”。
课程前置能力
- Linux 与 Windows 基础操作。
- Nmap 服务扫描与版本识别。
- Footprinting 中的协议枚举方法。
- 基本网络、端口、认证与权限概念。
1. Interacting with Common Services
要测试一项服务,首先要知道它的用途、交互方式、认证条件和可用客户端。优先掌握协议原生工具,再使用自动化框架,因为原生客户端产生的错误信息通常更清楚。
1.1 SMB:Windows 图形界面与 CMD
在 Windows“运行”窗口中可直接输入:
\\192.168.220.129\Finance\
CMD 中浏览 UNC 路径:
dir \\192.168.220.129\Finance\
映射共享为 N: 盘:
net use N: \\192.168.220.129\Finance
net use N: \\192.168.220.129\Finance /user:plaintext Password123
统计文件数量并搜索可疑文件:
dir N: /a-d /s /b | find /c ":\"
dir N:\*cred* /s /b
dir N:\*secret* /s /b
findstr /s /i cred N:\*.*
参数要点:/a-d 排除目录、/s 递归、/b 仅输出路径。



1.2 SMB:PowerShell
匿名或当前用户上下文:
Get-ChildItem \\192.168.220.129\Finance\
New-PSDrive -Name N -Root "\\192.168.220.129\Finance" -PSProvider FileSystem
显式凭据:
$username = 'plaintext'
$password = 'Password123'
$secpassword = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential $username, $secpassword
New-PSDrive -Name N -Root "\\192.168.220.129\Finance" -PSProvider FileSystem -Credential $cred
递归统计和内容检索:
(Get-ChildItem N:\ -File -Recurse | Measure-Object).Count
Get-ChildItem -Recurse -Path N:\ -Include *cred* -File
Get-ChildItem -Recurse -Path N:\ | Select-String 'cred' -List
1.3 SMB:Linux 挂载与检索
首次使用需安装 CIFS 支持:
sudo apt install cifs-utils
直接提供凭据:
sudo mkdir -p /mnt/Finance
sudo mount -t cifs -o username=plaintext,password=Password123,domain=. \
//192.168.220.129/Finance /mnt/Finance
也可使用凭据文件:
username=plaintext
password=Password123
domain=.
sudo mount -t cifs //192.168.220.129/Finance /mnt/Finance \
-o credentials=/path/credentialfile
find /mnt/Finance/ -name '*cred*'
grep -RniE 'cred|password|secret|key' /mnt/Finance/
凭据文件应限制读取权限,避免把测试凭据再次暴露。
1.4 邮件客户端:Evolution
邮件通常使用 SMTP 发送,使用 POP3 或 IMAP 接收。首次安装:
sudo apt-get install evolution
若出现 bwrap: Can't create file 类沙箱错误,课程给出的启动方式为:
export WEBKIT_FORCE_SANDBOX=0 && evolution
连接前需要:服务器域名或 IP、协议与端口、用户名与密码,以及 TLS/STARTTLS 类型。可用“Check for Supported Types”确认认证方式是否被服务器支持。
1.5 数据库客户端
连接数据库至少需要:目标 IP/主机名、端口、数据库类型和有效凭据。
MSSQL:
sqsh -S 10.129.20.13 -U username -P Password123
sqlcmd -S 10.129.20.13 -U username -P Password123
MySQL:
mysql -u username -pPassword123 -h 10.129.20.13
mysql.exe -u username -pPassword123 -h 10.129.20.13
图形工具 DBeaver:
sudo dpkg -i dbeaver-<version>.deb
dbeaver &

1.6 通用排错
无法访问服务时依次判断:
- 身份验证是否正确;
- 用户是否拥有目标资源权限;
- 网络和路由是否可达;
- 防火墙是否允许端口;
- 客户端与服务器是否支持相同协议版本或加密方式。
2. The Concept of Attacks
攻击不是“运行一个漏洞脚本”,而是围绕目标服务逐步建立可验证的假设。
2.1 常见目标
- 获取公开或受限信息。
- 枚举有效用户名、共享、数据库和资源。
- 验证已获得的凭据。
- 利用错误配置扩大访问权限。
- 取得远程命令执行。
- 从服务账户权限进一步提升或横向移动。
2.2 四个视角
- 配置:匿名访问、弱认证、公开写权限和危险功能。
- 设计:协议本身是否传输明文或依赖旧认证机制。
- 实现:软件是否存在已知 CVE 或逻辑缺陷。
- 运维:补丁、凭据、访问控制、网络隔离和日志是否到位。
2.3 验证顺序
端口开放
↓
服务与版本可信
↓
原生客户端可交互
↓
匿名/凭据访问得到验证
↓
权限与数据范围确认
↓
已知漏洞适用性检查
↓
最小化利用与证据保存
3. Service Misconfigurations
常见错误配置包括:
- 匿名或 Guest 访问敏感资源。
- 默认账户、弱密码或同一密码跨服务复用。
- 普通用户拥有写入、管理或执行权限。
- 服务绑定在不应暴露的接口上。
- 明文协议或过时协议仍被启用。
- 测试功能、样例数据库、调试接口或危险扩展处于启用状态。
- 目录列表、文件上传和可执行目录组合形成攻击路径。
检查配置时不要只问“能否登录”,还要验证:能读什么、能写什么、能执行什么,以及访问是否跨越了业务边界。
4. Finding Sensitive Information
4.1 高价值目标
- 用户名、密码、API 密钥、连接字符串。
- SSH 密钥、证书与私钥。
- 数据库备份、压缩包、源码和部署脚本。
- 配置文件、历史记录、日志和邮件附件。
- 网络拓扑、主机清单和管理员操作说明。
4.2 文件名与内容搜索词
cred, credential, password, passwd, secret, key, token,
backup, config, connection, admin, user, database
源码扩展名也值得检查:.cs、.c、.go、.java、.php、.asp、.aspx、.html。
4.3 记录原则
发现疑似敏感材料时记录来源、路径、访问身份、权限和验证方式。不要因文件名带有 password 就直接判定泄露,必须核实内容与可用性。
5. Attacking FTP
5.1 前置条件与基础连接
FTP 常见于 TCP 21;加密版本和被动模式还会使用其他端口。先进行版本与脚本枚举:
nmap -sV -p21 --script ftp-anon,ftp-syst,ftp-bounce <TARGET>
原生客户端:
ftp <TARGET>
常用交互命令:
anonymous 尝试匿名用户名
ls / dir 列出目录
pwd 显示当前目录
get <file> 下载文件
mget * 批量下载
put <file> 上传文件(需要写权限)
binary 二进制传输模式
passive 切换被动模式
5.2 测试重点
- 匿名用户能否读取、写入或覆盖文件。
- 目录中是否有配置、备份、源码和凭据。
- 上传目录是否与 Web 根目录或脚本执行目录重叠。
- FTP Bounce 是否被允许。
- 认证是否明文传输,可否从授权的流量捕获中观察。
5.3 下载镜像
wget -m --no-passive ftp://anonymous:anonymous@<TARGET>
大规模下载前确认范围和容量,避免影响服务。
6. Latest FTP Vulnerabilities
“最新版漏洞”章节的重点不是背 CVE,而是形成版本验证流程:
- 使用 Nmap Banner、HELP、SYST 等取得产品和版本。
- 对照准确的产品、版本、操作系统和编译配置。
- 阅读漏洞前置条件与公开利用代码,不凭标题判断。
- 在靶场中先做无破坏性验证,再尝试利用。
searchsploit <FTP_PRODUCT> <VERSION>
searchsploit -x <EXPLOIT_PATH>
常见漏洞类型包括路径穿越、认证绕过、缓冲区问题、任意文件读写和命令执行。若漏洞依赖特定模块或后门版本,必须先验证该条件。
7. Attacking SMB
7.1 首次交互与共享枚举
Linux 常用 Samba 客户端:
smbclient -L //<TARGET> -N
smbclient -L //<TARGET> -U '<DOMAIN>/<USER>%<PASSWORD>'
smbclient //<TARGET>/<SHARE> -U '<DOMAIN>/<USER>%<PASSWORD>'
递归枚举权限:
smbmap -H <TARGET>
smbmap -H <TARGET> -u <USER> -p '<PASSWORD>'
NetExec/课程旧版本 CrackMapExec 风格:
netexec smb <TARGET> -u <USER> -p '<PASSWORD>' --shares
netexec smb <TARGET> -u <USER> -p '<PASSWORD>' --users
7.2 SMB 攻击面
- Null Session、Guest 或匿名共享。
- 共享中的敏感数据和可写目录。
- 用户名、组、会话和域信息枚举。
- 凭据复用、口令喷洒和 NTLM 哈希认证。
- 管理员凭据下的远程服务、WMI 或计划任务执行。
Impacket 远程执行示例仅在拥有管理员权限时成立:
impacket-psexec '<DOMAIN>/<USER>:<PASSWORD>@<TARGET>'
impacket-smbexec '<DOMAIN>/<USER>:<PASSWORD>@<TARGET>'
impacket-wmiexec '<DOMAIN>/<USER>:<PASSWORD>@<TARGET>'
认证成功不等于具备远程管理员权限;应分别验证共享读写和远程执行条件。
8. Latest SMB Vulnerabilities
SMB 漏洞通常对协议版本、系统版本和补丁级别高度敏感。枚举:
nmap -p445 --script smb-protocols,smb-os-discovery,smb2-security-mode <TARGET>
nmap -p445 --script vuln <TARGET>
课程思路包括检查著名 SMB 漏洞及其后续变种,但利用前必须确认:
- SMBv1/SMBv2/SMBv3 的实际启用情况。
- Windows 版本和补丁状态。
- 漏洞是否需要认证。
- 利用是否可能导致崩溃或重启。
对于 EternalBlue、SMBGhost 等高影响漏洞,不应把扫描脚本的“可能存在”直接写成“已成功利用”。
9. Attacking SQL Databases
本节针对直接暴露的数据库服务,而不是 Web SQL 注入。
9.1 MSSQL 基础枚举
impacket-mssqlclient '<DOMAIN>/<USER>:<PASSWORD>@<TARGET>' -windows-auth
常用查询:
SELECT name FROM master.dbo.sysdatabases;
USE <database>;
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES;
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='<table>';
SELECT * FROM <table>;
查看当前身份与服务器角色:
SELECT SYSTEM_USER;
SELECT IS_SRVROLEMEMBER('sysadmin');
若权限允许,MSSQL 的危险功能可能被用于执行系统命令:
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
EXEC xp_cmdshell 'whoami';
启用 xp_cmdshell 会改变服务器配置,只能在授权实验环境中进行,并应记录变更。
9.2 MySQL 基础枚举
mysql -h <TARGET> -u <USER> -p
SHOW DATABASES;
USE <database>;
SHOW TABLES;
DESCRIBE <table>;
SELECT * FROM <table>;
SELECT user,host FROM mysql.user;
评估重点:弱/空密码、远程 root、过度授权、敏感表、文件读写权限,以及数据库服务账户在操作系统中的权限。
10. Latest SQL Vulnerabilities
数据库漏洞可能存在于数据库引擎、管理组件、扩展模块或默认配置中。验证流程:
nmap -sV -p1433,3306 <TARGET>
searchsploit 'Microsoft SQL Server <VERSION>'
searchsploit 'MySQL <VERSION>'
重点区分:
- 无认证远程漏洞;
- 需要普通数据库账户的权限提升;
- 仅影响本地客户端或特定插件的漏洞;
- 配置滥用(如危险存储过程)而非软件漏洞。
版本字符串可能经过隐藏或代理,必须结合 SQL 查询结果和系统信息确认。
11. Attacking RDP
11.1 前置条件与连接
RDP 默认使用 TCP 3389。先检查版本、NLA 和证书:
nmap -sV -p3389 --script rdp-enum-encryption,rdp-ntlm-info <TARGET>
Linux 客户端:
xfreerdp /v:<TARGET> /u:<USER> /p:'<PASSWORD>'
xfreerdp /v:<TARGET> /d:<DOMAIN> /u:<USER> /p:'<PASSWORD>' /dynamic-resolution
11.2 评估重点
- NLA 是否启用。
- 证书和加密模式是否安全。
- 已知凭据是否允许交互登录。
- 登录用户是否有本地管理员权限。
- 剪贴板、磁盘、打印机等重定向是否扩大数据暴露。
- 是否存在断开的高权限会话和错误会话权限。
RDP 连接成功只证明允许交互登录,不能自动推断管理员权限。
12. Latest RDP Vulnerabilities
RDP 高风险漏洞通常具有严格系统版本和补丁条件。课程强调对 BlueKeep 等漏洞进行版本与补丁匹配,而不是直接运行利用:
nmap -p3389 --script rdp-vuln-ms12-020 <TARGET>
searchsploit 'Remote Desktop <VERSION_OR_CVE>'
注意:部分 RDP 漏洞可能导致目标蓝屏、重启或拒绝服务。扫描脚本结果、服务 Banner 和操作系统推断都只能作为证据的一部分。
13. Attacking DNS
13.1 基础查询
dig @<DNS_SERVER> <DOMAIN> A
dig @<DNS_SERVER> <DOMAIN> MX
dig @<DNS_SERVER> <DOMAIN> NS
dig @<DNS_SERVER> <DOMAIN> TXT
反向查询:
dig @<DNS_SERVER> -x <IP>
13.2 区域传送
如果 DNS 服务器错误地允许 AXFR,可能泄露整个区域记录:
dig axfr @<DNS_SERVER> <DOMAIN>
成功结果可暴露主机名、内网结构、邮件服务器和管理系统;失败并不代表 DNS 安全,只说明该服务器未允许此次区域传送。
13.3 子域枚举
dnsenum --dnsserver <DNS_SERVER> --enum -p 0 -s 0 -o found_subdomains.txt <DOMAIN>
fierce --domain <DOMAIN> --dns-servers <DNS_SERVER>
检查重点:开放递归、区域传送、可预测子域、内部记录泄露、错误 CNAME 和悬空 DNS 记录。
14. Latest DNS Vulnerabilities
DNS 漏洞可能存在于 BIND、Windows DNS 或其他实现中,也可能来自架构和配置:
- 缓存投毒或事务预测问题。
- 开放递归被用于放大攻击。
- 动态更新权限错误。
- DNSSEC 配置不完整。
- 悬空 CNAME 导致子域接管。
- 特定版本的远程拒绝服务或命令执行漏洞。
版本判断:
nmap -sU -sV -p53 --script dns-nsid,dns-recursion <TARGET>
dig @<DNS_SERVER> version.bind CHAOS TXT
version.bind 可能被隐藏;隐藏版本并不能替代补丁管理。
15. Attacking Email Services
15.1 协议与常见端口
功能 协议 常见端口 发送邮件 SMTP 25、465、587 接收邮件 POP3/POP3S 110、995 接收/同步邮件 IMAP/IMAPS 143、993
15.2 SMTP 交互和用户枚举
nc -nv <TARGET> 25
telnet <TARGET> 25
会话中可测试:
EHLO example.com
VRFY <user>
EXPN <list>
MAIL FROM:<sender@example.com>
RCPT TO:<target@example.com>
服务器响应差异可能泄露有效用户,但也可能被统一响应或延迟机制隐藏。
15.3 Swaks 与开放中继
swaks --server <TARGET> --from sender@example.com --to target@example.com
开放中继是指服务器允许未授权用户把邮件转发到外部域。测试应使用受控地址,避免向第三方发送邮件。
15.4 IMAP/POP3
openssl s_client -connect <TARGET>:993
openssl s_client -connect <TARGET>:995
认证后检查邮箱、文件夹、附件和密码重置邮件。访问内容必须受测试范围和隐私要求约束。
16. Latest Email Service Vulnerabilities
邮件服务的“最新漏洞”不仅包括 SMTP/IMAP/POP3 守护进程,也包括企业邮件平台及其 Web/管理组件。
验证流程:
nmap -sV -p25,110,143,465,587,993,995 <TARGET>
searchsploit '<MAIL_PRODUCT> <VERSION>'
重点关注:
- Exim、Postfix、Dovecot 等具体版本漏洞。
- Microsoft Exchange 等平台的代理链、认证绕过和远程执行问题。
- Webmail、自动发现和管理接口的独立攻击面。
- 漏洞是否要求特定角色、默认路径、已认证账户或内部访问。
邮件平台往往由多个组件组成,单个端口 Banner 不足以确定完整版本。
17. Skills Assessment - Easy
简单评估侧重协议交互和基础错误配置。推荐流程:
- Nmap 扫描开放端口和服务版本。
- 用原生客户端确认 Banner 与认证方式。
- 尝试课程允许的匿名访问或给定凭据。
- 枚举目录、共享、数据库、邮件或 DNS 记录。
- 搜索 cred、password、secret、key 等敏感信息。
- 验证取得的凭据能否用于另一个服务。
核心考点是“找到正确入口并读取证据”,而不是复杂漏洞利用。
18. Skills Assessment - Medium
中等评估通常需要把两个以上服务串联:
服务枚举
→ 发现匿名/低权限访问
→ 获取配置或凭据
→ 在另一服务验证凭据
→ 枚举更高价值数据
→ 利用配置功能或权限取得命令执行
排查时建立凭据表,记录用户名、密码/哈希、来源、已测试服务和权限,避免无序重复尝试。
19. Skills Assessment - Hard
困难评估更重视完整攻击链和判断能力:
- 某个服务只泄露主机名或用户名,而非直接给出密码。
- 凭据需要跨协议复用。
- 版本漏洞与错误配置可能同时出现,需要判断哪条路径稳定、影响最小。
- 获得数据库或共享写权限后,还要确认写入位置是否可执行。
- 命令执行后的服务账户权限可能有限,需要继续寻找本机或网络中的后续路径。
综合检查清单
[ ] TCP/UDP 端口、版本和脚本扫描是否完整
[ ] 是否使用协议原生客户端复核
[ ] 是否检查匿名、Guest、空密码和默认凭据
[ ] 是否分别验证读、写、执行和管理权限
[ ] 是否搜索共享、FTP、邮件和数据库中的敏感信息
[ ] 是否验证凭据复用,但控制锁定风险
[ ] 是否核对 CVE 的版本、平台、配置和认证前提
[ ] 是否保存命令、输出、时间和影响证据
附录 A:常用工具首次使用速查
服务 工具 使用前条件 典型入口 SMB smbclient Samba 客户端、目标共享或凭据 smbclient -L // -N SMB 挂载 mount.cifs 安装 cifs-utils,准备挂载点 mount -t cifs ... SMB 枚举 smbmap / NetExec 目标 445 可达,匿名或凭据 smbmap -H FTP ftp / wget TCP 21 可达,匿名或凭据 ftp MSSQL sqsh / sqlcmd / mssqlclient TCP 1433、数据库凭据 sqsh -S ... MySQL mysql TCP 3306、数据库凭据 mysql -h -u -p RDP xfreerdp TCP 3389、允许交互登录的账户 xfreerdp /v: ... DNS dig / dnsenum TCP/UDP 53 可达 dig @ SMTP nc / telnet / swaks SMTP 端口可达 nc -nv 25 IMAPS/POP3S openssl TLS 端口可达 openssl s_client -connect ... 漏洞检索 searchsploit 已确认产品和版本 searchsploit
附录 B:常见失败原因
- 只扫 TCP,遗漏 DNS 等 UDP 服务。
- 使用错误的域格式或认证方式。
- SMB 客户端与服务器协议版本不兼容。
- FTP 主动/被动模式受防火墙影响。
- MSSQL 使用 SQL 认证,而目标只允许 Windows 认证,反之亦然。
- RDP 账户有效但没有“允许通过远程桌面登录”权限。
- DNS 查询使用了错误服务器,实际问到了公共递归解析器。
- SMTP 的 VRFY 被禁用,不代表用户名一定无效。
- 搜索到公开漏洞,但目标补丁、架构或配置不满足前提。
- 将扫描器的“可能存在漏洞”误写为已成功利用。
附录 C:服务测试记录模板
目标:
服务 / 端口:
产品与版本证据:
原生客户端验证:
认证方式:匿名 / 本地 / 域 / 数据库 / 证书
使用身份:
读取权限:
写入权限:
执行或管理权限:
发现的敏感信息:
已知漏洞及适用条件:
实际验证结果:
稳定性与锁定风险:
修复建议:
总结
本章最重要的能力是把不同协议纳入同一个分析框架:先确认服务,再用原生客户端交互;先检查配置和权限,再考虑已知漏洞;先证明真实影响,再给出结论。 FTP、SMB、SQL、RDP、DNS 和邮件协议虽然语法不同,但攻击过程的核心始终是枚举、认证、权限、敏感信息和可利用功能之间的组合。
