1.信息收集阶段
1.1 确定目标
- 确定目标:
在信息收集阶段中,我们需要明确测试的目标,这包括确定要测试的网站、应用程序或系统以及测试的目的。我们需要收集有关目标的所有信息,例如目标的IP地址、URL、操作系统、Web服务器、应用程序和框架等。我们可以使用以下工具来收集信息:
工具名称 | 说明 |
---|---|
Nmap | 用于扫描目标系统的端口和服务 |
Whois | 用于查找目标域名的所有者信息 |
Recon-ng | 用于收集目标的信息和资产 |
Shodan | 用于搜索与目标相关的设备和服务 |
Google Hacking Database | 用于搜索与目标相关的敏感信息和漏洞 |
Social Engineering Toolkit | 用于利用社交工程学攻击目标 |
通过这些工具,我们可以收集尽可能多的信息,以便我们能够更好地了解目标并进行下一步的测试。
1.2 收集目标信息
-
收集目标域名及IP地址:
域名/IP地址 备注 www.example.com 主站 mail.example.com 邮件系统 ftp.example.com FTP服务器 -
收集目标子域名:
子域名 备注 www.example.com 主站 mail.example.com 邮件系统 ftp.example.com FTP服务器 -
收集目标网站备案信息:
网站备案信息 备注 网站名称:Example 网站备案号:京ICP备12345678号 网站备案时间:2020年01月01日 -
收集目标网站SSL证书信息:
SSL证书信息 备注 证书颁发机构:Let’s Encrypt 证书有效期:2021年01月01日至2022年01月01日 证书类型:DV SSL证书
1.3 分析目标信息- 确定目标网站的IP地址和端口号
- 确定目标网站所使用的服务器类型和操作系统
- 收集目标网站的子域名和子目录信息
- 收集目标网站的敏感目录和敏感文件信息
- 收集目标网站的管理员信息和系统架构信息
- 收集目标网站的第三方组件和插件信息
- 收集目标网站的漏洞信息和历史安全事件信息
- 收集目标网站的备份文件和日志文件信息
- 收集目标网站的社交媒体信息和员工信息
表格示例:
目标信息 | 收集方法 |
---|---|
IP地址和端口号 | 使用ping命令和端口扫描工具 |
服务器类型和操作系统 | 使用指纹识别工具和漏洞扫描工具 |
子域名和子目录信息 | 使用子域名枚举工具和目录扫描工具 |
敏感目录和敏感文件信息 | 使用目录扫描工具和文件泄露检测工具 |
管理员信息和系统架构信息 | 使用搜索引擎和社交媒体 |
第三方组件和插件信息 | 使用漏洞扫描工具和指纹识别工具 |
漏洞信息和历史安全事件信息 | 使用漏洞库和搜索引擎 |
备份文件和日志文件信息 | 使用目录扫描工具和文件泄露检测工具 |
社交媒体信息和员工信息 | 使用搜索引擎和社交媒体 |
2.漏洞扫描阶段
2.1 确定漏洞扫描范围
- 确定漏洞扫描目标,包括IP地址、域名、子域名等。
- 确认扫描的端口范围,包括常见的HTTP、HTTPS、FTP、SSH等端口。
- 确认扫描的深度,包括浅度扫描、中度扫描和深度扫描。
- 确认扫描的策略,如是否扫描已知漏洞、是否进行身份认证等。
- 确认扫描的时间和频率,如每日、每周或每月扫描。
2.2 选择合适的漏洞扫描工具
-
使用Nessus进行漏洞扫描,命令如下:
nessus -h <target_host> -p <target_port>
-
使用OpenVAS进行漏洞扫描,命令如下:
openvas-cli -h <target_host> -p <target_port>
-
使用Nmap进行漏洞扫描,命令如下:
nmap -sV --script=vuln <target_host>
-
使用Burp Suite进行漏洞扫描,步骤如下:
- 打开Burp Suite,点击“Target”选项卡,输入目标URL。
- 点击“Site map”选项卡,右键点击目标网站,选择“Active Scan”。
- 选择扫描选项,点击“Start Scan”开始扫描。
-
使用Metasploit进行漏洞扫描,命令如下:
msfconsole use auxiliary/scanner/http/xxx set RHOSTS <target_host> set RPORT <target_port> run
2.3 进行漏洞扫描- 使用常用漏洞扫描器进行扫描,如Nessus、OpenVAS等
- 对扫描结果进行筛选和整理,确定需要进一步验证的漏洞
- 对每个漏洞进行深入验证,包括利用漏洞进行攻击、验证漏洞是否真实存在等
- 将漏洞验证结果进行记录和整理,生成漏洞报告并提交给相关部门进行修复。
表格示例:
漏洞名称 | 漏洞类型 | 验证结果 |
---|---|---|
SQL注入漏洞 | 注入漏洞 | 存在 |
XXE漏洞 | XML解析漏洞 | 不存在 |
CSRF漏洞 | 跨站请求伪造漏洞 | 存在 |
… | … | … |
3.漏洞利用阶段
3.1 确定攻击目标
- 3.1 确定攻击目标
确定攻击目标是漏洞利用阶段的第一步,攻击者需要明确攻击目标,包括目标的IP地址、操作系统版本、Web服务器版本、应用程序版本等信息。攻击者可以通过搜索引擎、WHOIS查询、端口扫描等方式获取目标信息。例如,使用nmap工具进行端口扫描:
nmap -sS -p 1-65535 -T4 target_ip
扫描结果可以得到目标主机的开放端口和服务类型,从而确定目标的操作系统和Web服务器版本。
3.2 选择合适的漏洞利用工具
-
选择合适的漏洞利用工具:
工具名称 用途 示例 Metasploit 自动化漏洞利用框架 use exploit/windows/smb/ms08_067_netapi
sqlmap 自动化SQL注入工具 python sqlmap.py -u "http://example.com/?id=1" --dbs
Burp Suite 综合性的渗透测试工具 拦截并修改HTTP请求 Nmap 端口扫描工具 nmap -sS -p 1-65535 example.com
Hydra 暴力破解工具 hydra -l admin -P password.txt example.com http-post-form "/login.php:user=^USER^&pass=^PASS^:Invalid username or password"
3.3 进行漏洞利用- 选定目标漏洞:根据前面的漏洞扫描和漏洞验证,选定一个可利用的漏洞作为攻击目标。
- 收集目标信息:根据漏洞类型,收集目标系统的相关信息,如操作系统、应用程序版本、服务端口等。
- 编写漏洞利用代码:根据漏洞类型和目标信息,编写可利用漏洞的代码。
- 运行漏洞利用代码:将漏洞利用代码运行在目标系统上,获取系统权限或敏感信息。
- 清理痕迹:在攻击结束后,清理攻击留下的痕迹,避免被发现。
- 表格:
选定目标漏洞 | 收集目标信息 | 编写漏洞利用代码 | 运行漏洞利用代码 | 清理痕迹 |
---|---|---|---|---|
Web应用程序中的SQL注入漏洞 | 获取数据库类型、版本、表结构等信息 | 编写SQL注入语句 | 将SQL注入语句插入到Web应用程序中 | 删除日志、清理服务器上的恶意文件等 |
4.提权阶段
4.1 提升权限
-
4.1 提升权限
在提权阶段,我们会使用各种技术手段提升我们的权限,以便更深入地访问目标系统。
以下是一些常见的提权方法:
方法 描述 提升进程权限 利用漏洞或者提权工具将当前进程的权限提升为系统管理员权限或者其他高权限 利用服务漏洞 利用服务程序存在的漏洞,提升权限 利用系统漏洞 利用系统存在的漏洞,提升权限 利用系统配置错误 利用系统配置错误,提升权限 利用社会工程学 利用社会工程学手段,获取管理员权限 在实际操作中,我们需要根据具体情况选择适合的提权方法,并且需要注意提权过程中的隐蔽性,尽量避免被目标系统检测到。
4.2 寻找敏感信息- 在网站中搜索常见的敏感文件,如/etc/passwd
、/etc/shadow
等,尝试读取其中的内容。
- 使用目录爆破工具扫描网站目录,查找可能存在的敏感文件和目录。
- 检查网站是否存在未授权访问漏洞,如未授权访问的管理员页面或数据库管理页面等。
- 尝试使用SQL注入漏洞获取敏感信息,如管理员账号、密码等。
- 使用社会工程学技巧,如钓鱼邮件、伪造登录页面等,获取用户的敏感信息。
5.覆盖痕迹阶段
5.1 删除日志
- 在渗透测试中,攻击者会留下很多痕迹,例如攻击日志、命令历史等,因此在渗透测试的覆盖痕迹阶段需要删除这些痕迹,以避免被发现。
- 5.1 删除日志:攻击者在渗透测试过程中可能会在受攻击的系统中留下攻击痕迹,例如访问日志、系统日志等,因此需要删除这些日志,以避免被系统管理员发现。可以使用以下命令删除日志:
rm -rf /var/log/*
表格:
命令 | 说明 |
---|---|
rm -rf /var/log/* | 删除/var/log/目录下的所有文件和子目录 |
5.2 清除痕迹- 清除浏览器缓存和历史记录,尤其是敏感信息的访问记录;
- 删除临时文件和日志文件;
- 清除操作系统的事件日志;
- 删除测试过程中产生的临时文件和日志文件;
- 删除测试过程中通过漏洞获取到的文件和数据;
- 在目标系统上留下的任何测试痕迹都应该被清除。
表格示例:
清除痕迹方法 | 说明 |
---|---|
清除浏览器缓存和历史记录 | 清除敏感信息的访问记录 |
删除临时文件和日志文件 | 清除系统中产生的临时数据 |
清除操作系统的事件日志 | 防止被攻击者发现测试痕迹 |
删除测试过程中产生的临时文件和日志文件 | 防止被攻击者发现测试痕迹 |
删除测试过程中通过漏洞获取到的文件和数据 | 防止被攻击者发现测试痕迹 |
在目标系统上留下的任何测试痕迹都应该被清除 | 防止被攻击者发现测试痕迹 |
6.报告编写阶段
6.1 汇总测试结果
- 6.1 汇总测试结果
漏洞名称 | 漏洞等级 | 漏洞描述 | 漏洞证明 | 建议 |
---|---|---|---|---|
SQL注入 | 高 | 在登录页面找到SQL注入漏洞 | ’ or 1=1 – | 对输入进行过滤或者使用预编译语句 |
XSS | 中 | 在搜索框中发现反射型XSS漏洞 | <script>alert(‘XSS’)</script> | 对输入进行过滤或者使用转义字符 |
文件上传 | 低 | 在文件上传功能中发现文件类型没有限制 | 尝试上传一个php文件 | 对上传文件进行类型限制和内容过滤 |
6.2 分析测试结果
-
对测试结果进行分类整理,包括高、中、低风险漏洞的数量及详细信息。
-
根据测试结果提出相应的修复建议,包括修复方案、修复优先级等。
-
将测试结果和修复建议整理成报告形式,包括漏洞概述、风险评估、修复建议等内容。
-
报告中应包含详细的测试过程、测试结果、修复建议等信息,同时应当简明扼要,便于相关人员理解和操作。
表格:
漏洞类型 | 风险等级 | 漏洞描述 | 修复建议 |
---|---|---|---|
SQL注入 | 高 | 通过输入特定字符,可对数据库进行非法操作 | 对输入内容进行过滤和转义处理 |
XSS | 中 | 可以在网页中注入恶意脚本,获取用户信息 | 对用户输入的内容进行过滤和转义处理 |
CSRF | 中 | 利用用户已登录的身份,进行恶意操作 | 增加token验证机制 |
文件上传漏洞 | 低 | 可以上传恶意文件,进行攻击 | 对上传文件进行类型和大小的限制 |
6.3 撰写测试报告- 撰写测试报告应包括以下内容:
- 测试概述:对测试的目的、范围、方法、工具、时间等进行简要描述。
- 测试环境:描述测试所使用的环境,包括硬件、软件、网络等。
- 测试过程:详细描述测试的具体过程,包括测试的步骤、测试结果、发现的问题等。
- 漏洞评估:对发现的漏洞进行评估,包括漏洞的危害程度、影响范围、修复建议等。
- 总结与建议:对整个测试过程进行总结,提出改进建议和安全加固措施。
- 附录:包括测试的详细数据、测试的截图、漏洞的复现步骤等。
表格示例:
测试概述 | 测试环境 | 测试过程 |
---|---|---|
对测试的目的、范围、方法、工具、时间等进行简要描述。 | 描述测试所使用的环境,包括硬件、软件、网络等。 | 详细描述测试的具体过程,包括测试的步骤、测试结果、发现的问题等。 |
漏洞评估 | 总结与建议 | 附录 |
---|---|---|
对发现的漏洞进行评估,包括漏洞的危害程度、影响范围、修复建议等。 | 对整个测试过程进行总结,提出改进建议和安全加固措施。 | 包括测试的详细数据、测试的截图、漏洞的复现步骤等。 |