三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

渗透测试实战:从信息收集到内核提权全流程解析

渗透测试实战:从信息收集到内核提权全流程解析

1. 渗透测试实战概述:从踩点到提权的完整链路

渗透测试(Penetration Testing)本质上是一场经过授权的模拟攻击,目的是发现系统防御体系中最薄弱的环节。与CTF竞赛不同,真实环境下的渗透更注重攻击路径的完整性和业务逻辑的突破点。我最近完成的一次实战项目就涵盖了从外部信息收集到内网横向移动的全过程,最终通过内核漏洞实现权限提升。整个过程耗时3周,涉及12个关键攻击节点,本文将还原核心环节的技术细节。

典型的渗透测试分为五个阶段:信息收集(Reconnaissance)、漏洞扫描(Scanning)、漏洞利用(Exploitation)、权限维持(Persistence)和痕迹清理(Covering Tracks)。其中前三个阶段往往决定了测试的成败——据统计,超过70%的成功渗透源于信息收集阶段的疏忽。本次实战中,目标系统运行在CentOS 7.9环境,对外暴露了Web服务和管理接口,这为后续的突破提供了切入点。

重要提示:所有渗透测试必须获得书面授权,本文涉及的IP地址和域名均已脱敏处理,技术细节仅用于防御研究。

2. 踩点阶段:信息收集的艺术与科学

2.1 被动信息收集:不触碰目标的侦查技术

使用Maltego进行关联图谱分析时,发现目标域名注册邮箱曾用于其他业务系统。通过Hunter.io验证该邮箱格式,最终定位到3个关联子域名(dev、test、api)。这种基于OSINT(开源情报)的方法往往能发现意外收获:

# 使用theHarvest进行邮箱收集 theHarvester -d example.com -b google,linkedin

Shodan搜索暴露的Jenkins服务时,通过特征端口(8080)和HTTP头(X-Jenkins: 2.319.1)确认了构建服务器位置。更关键的是,历史快照显示该系统三个月前存在未授权访问漏洞,虽然版本已更新,但配置可能遗留问题。

2.2 主动扫描:平衡深度与隐蔽性

Nmap的时序参数(-T)设置需要根据网络环境动态调整。在本次测试中,使用-T3配合碎片化扫描(-f)成功绕过了基础IDS检测:

nmap -sS -Pn -n -f -T3 -p- --min-rate 300 --max-retries 1 -oA full_scan 192.168.1.0/24

扫描结果中,445端口的SMB服务显示支持SMBv1协议,这为后续的永恒之蓝(MS17-010)漏洞利用埋下伏笔。值得注意的是,自动化工具输出的高危漏洞需要人工验证——本次发现的"Shellshock"漏洞(CVE-2014-6271)在实际测试中因补丁不完整仍可被利用。

3. 漏洞利用:从入口点到立足点

3.1 Web应用突破:非常规注入手法

目标网站的搜索功能看似做了参数过滤,但通过双重URL编码绕过防护:

原始payload:' AND 1=CONVERT(int,@@version)-- 第一次编码:%27%20AND%201=CONVERT(int,@@version)--%20 第二次编码:%2527%2520AND%25201=CONVERT(int,@@version)--%2520

更关键的是通过Burp Suite的Intruder模块发现的管理接口枚举漏洞。当状态码为302时响应延迟明显增加(平均1200ms vs 正常200ms),据此爆破出/admin/backup路径,下载到包含数据库凭据的压缩包。

3.2 横向移动:利用协议特性突破边界

获取内网某台主机权限后,使用Responder工具捕获NTLMv2哈希:

responder -I eth0 -wF

通过Hashcat(字典模式+规则扩展)在8小时内破解出域用户密码:

hashcat -m 5600 hash.txt rockyou.txt -r best64.rule

这个阶段最易触发告警,因此需要控制流量特征。我们采用Cobalt Strike的DNS Beacon与C2通信,将请求分散到多个子域名,单日流量控制在2MB以内。

4. 权限提升:内核漏洞的精准打击

4.1 本地信息枚举:发现提权机会

上传LinEnum脚本后,发现关键线索:

[+] Kernel version: 3.10.0-1160.45.1.el7.x86_64 [+] Sudo version: 1.8.23 [+] LD_PRELOAD available

搜索公开漏洞库,确认该内核版本存在dirtypipe(CVE-2022-0847)和ovswrap(CVE-2022-2639)两个可利用漏洞。经过稳定性测试,最终选择ovswrap进行提权,因其成功率更高且不会导致系统崩溃。

4.2 漏洞利用实战:ovswrap漏洞分析

该漏洞源于Open vSwitch的权限检查缺陷,允许低权限用户调用ovs-vswitchd进程的特权操作。编译利用代码时需要匹配内核符号表:

// 关键结构体偏移量调整 #define OVS_VPORT_FROM_SOCK 0xffffffffa07e8e00 #define OVS_DP_FROM_VPORT 0xffffffffa07d3a40

执行流程如下:

  1. 创建恶意netlink消息触发UAF
  2. 通过userfaultfd控制竞争条件
  3. 重写vport结构体中的函数指针
  4. 最终执行root权限的commit操作

实测中需要注意/proc/sys/kernel/unprivileged_userfaultfd的值(需为1),否则需要先通过其他方式修改该参数。

5. 防御视角的反思与加固建议

5.1 攻击路径复盘

本次渗透暴露的防御薄弱点包括:

  1. 过期的子域名解析记录(DNS信息泄露)
  2. SMBv1协议的历史遗留支持(协议兼容性风险)
  3. 内核补丁更新不及时(漏洞窗口期超过90天)
  4. 数据库备份文件未加密(权限管控缺失)

5.2 企业级防护方案

基于MITRE ATT&CK框架的防御矩阵建议:

  • 网络层:部署Tanium进行实时端点监控
  • 主机层:启用Linux内核的SELinux严格模式
  • 应用层:实施WAF规则动态更新(每24小时)
  • 管理侧:建立漏洞修复SLA(高危漏洞72小时)

在内网环境中,特别建议启用Windows的LSA保护策略和Linux的PTRACE限制,这些措施能有效阻断90%的横向移动尝试。对于开发团队,应当将安全扫描集成到CI/CD流程中——我们在后期复测时发现,简单的SonarQube配置就能拦截最初的SQL注入尝试。

← 返回列表