空想网安の乌托邦
首页小说读书项目归档照片墙音乐说说杂谈关于
封面

HTB Academy:攻击常用服务

写作时间:2026-09-20 22:13:15
# 网安
# HTB Academy

模块:Attacking Common Services(19 小节)
适用范围:仅限获得明确授权的实验室、靶场和渗透测试项目。
整理方式:按“服务交互基础 → 攻击方法论 → 各协议枚举与利用 → 综合评估”重组课程内容,并集中记录工具的首次使用条件与常用命令。

0. 本章知识地图

企业中最常见的攻击面并不只有 Web,还包括文件共享、邮件、数据库、远程桌面和域名服务。本章反复训练的是同一条方法链:

  1. 识别服务、端口、产品和版本。
  2. 使用协议原生客户端确认服务是否能正常交互。
  3. 检查匿名访问、弱认证、默认配置和过度权限。
  4. 寻找敏感数据、用户名、密码、密钥和配置文件。
  5. 验证已知漏洞是否与真实版本、系统和配置匹配。
  6. 在获得授权的范围内验证命令执行、横向移动或权限提升。
  7. 保存证据,并区分“发现可能性”和“成功复现”。

课程前置能力

  • 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​ 仅输出路径。

​

 

‍Windows 运行窗口访问 SMB

​

​

 

‍Finance SMB 共享

​

​

 

‍SMB 身份验证提示

​

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 &

​

 

‍MySQL 交互方式

​

1.6 通用排错

无法访问服务时依次判断:

  • 身份验证是否正确;
  • 用户是否拥有目标资源权限;
  • 网络和路由是否可达;
  • 防火墙是否允许端口;
  • 客户端与服务器是否支持相同协议版本或加密方式。

2. The Concept of Attacks

攻击不是“运行一个漏洞脚本”,而是围绕目标服务逐步建立可验证的假设。

2.1 常见目标

  • 获取公开或受限信息。
  • 枚举有效用户名、共享、数据库和资源。
  • 验证已获得的凭据。
  • 利用错误配置扩大访问权限。
  • 取得远程命令执行。
  • 从服务账户权限进一步提升或横向移动。

2.2 四个视角

  1. 配置:匿名访问、弱认证、公开写权限和危险功能。
  2. 设计:协议本身是否传输明文或依赖旧认证机制。
  3. 实现:软件是否存在已知 CVE 或逻辑缺陷。
  4. 运维:补丁、凭据、访问控制、网络隔离和日志是否到位。

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,而是形成版本验证流程:

  1. 使用 Nmap Banner、​HELP​、​SYST​ 等取得产品和版本。
  2. 对照准确的产品、版本、操作系统和编译配置。
  3. 阅读漏洞前置条件与公开利用代码,不凭标题判断。
  4. 在靶场中先做无破坏性验证,再尝试利用。
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

简单评估侧重协议交互和基础错误配置。推荐流程:

  1. Nmap 扫描开放端口和服务版本。
  2. 用原生客户端确认 Banner 与认证方式。
  3. 尝试课程允许的匿名访问或给定凭据。
  4. 枚举目录、共享、数据库、邮件或 DNS 记录。
  5. 搜索 ​cred​、​password​、​secret​、​key​ 等敏感信息。
  6. 验证取得的凭据能否用于另一个服务。

核心考点是“找到正确入口并读取证据”,而不是复杂漏洞利用。


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 和邮件协议虽然语法不同,但攻击过程的核心始终是枚举、认证、权限、敏感信息和可利用功能之间的组合。

avatar

Zybaxy918039

书本,学术,网安之间反复横跳的业余爱好者,目前在自学计算机网络和AI相关知识

RECOMMENDED

HTB Academy:使用 Nmap 进行网络枚举

2026-09-19 22:17:09

HTB Academy:信息收集-网络版(Web Reconnaissance)学习笔记

2026-09-19 22:22:34

HTB Academy:Footprinting(足迹收集)

2026-09-20 12:23:20

Table of Contents