记一次较完整的渗透思路流程
字数 1811 2025-08-29 22:41:38

渗透测试实战教学:从登录框到系统权限获取

1. 渗透测试概述

本次渗透测试针对一个管理系统登录界面展开,展示了从初始信息收集到最终获取系统权限的完整流程。测试过程中运用了多种渗透技术,包括密码喷洒、目录遍历、历史漏洞利用、SQL注入等。

2. 初始信息收集与登录框测试

2.1 登录框常见渗透思路

针对管理系统登录框,渗透测试人员通常会考虑以下攻击向量:

  1. 暴力破解/密码喷洒:针对无验证码或弱验证机制的登录界面
  2. SQL注入:测试登录表单是否存在注入漏洞
  3. 源代码分析:检查前端代码泄露的敏感信息
  4. JS文件分析:查找隐藏接口或敏感信息
  5. 密码重置功能测试:寻找逻辑漏洞
  6. 配置漏洞利用:如目录遍历、任意文件读取等
  7. CMS框架漏洞:识别并利用已知CMS漏洞
  8. 敏感目录扫描:寻找隐藏的管理界面或测试页面
  9. Nday漏洞利用:应用已知但未修复的漏洞
  10. 端口扫描与服务利用:通过其他开放服务获取权限
  11. 登录逻辑漏洞:修改返回包绕过验证

2.2 实际测试过程

在本案例中,测试人员首先尝试了密码喷洒攻击,但由于密码强度较高未能成功。随后检查了前端源代码和JS文件,未发现可利用信息。

关键点:当常规方法无效时,需要转向其他攻击面。

3. 目录遍历漏洞发现与利用

3.1 发现过程

通过手动测试URL目录结构,发现存在目录遍历漏洞:

  • 尝试删减目录层级,发现二级目录存在遍历漏洞
  • 通过目录遍历发现了CKEditor编辑器

3.2 CKEditor历史漏洞尝试

测试人员识别出CKEditor编辑器并尝试利用其历史漏洞:

  • 搜索确认该编辑器存在已知漏洞
  • 尝试文件上传但失败(IIS 8.0环境限制)

注意:历史漏洞利用需要考虑环境兼容性,本例中因IIS版本限制未能成功。

4. 功能点测试与SQL注入发现

4.1 搜索框测试

发现一个简陋的搜索功能,测试SQL注入:

  • 使用单引号测试,初步判断不存在注入
  • 报错信息显示系统可能具备基本防护

4.2 添加功能测试

发现添加功能点,测试结果:

  • 不存在SQL注入漏洞
  • 不存在XSS漏洞
  • 存在未授权访问问题(可添加、编辑、删除)

5. 目录扫描与测试环境发现

5.1 使用Dirsearch进行扫描

使用工具:Dirsearch (https://github.com/maurosoria/dirsearch)
命令语法:

python dirsearch.py -u "目标URL" -i 200,301,302

扫描结果:

  • 普遍存在目录遍历漏洞
  • 发现/test目录,内含与主站相同的管理界面

关键点:测试环境通常比生产环境安全性更低,是重要突破口。

6. SQL注入利用与系统权限获取

6.1 测试环境搜索框注入

在测试环境重复搜索框测试:

  • 使用单引号触发明显报错
  • 确认存在SQL注入漏洞
  • 识别为ASP站点使用MS SQL数据库

6.2 注入类型确认

使用时间盲注测试:

WAITFOR DELAY '0:0:5'--

确认存在时间盲注漏洞。

6.3 使用SQLMap自动化测试

确认存在以下注入类型:

  • 报错注入
  • 时间盲注
  • 堆叠注入

检查数据库权限:

python sqlmap.py -r "请求文件" --is-dba

确认当前用户为DBA权限。

6.4 获取系统权限

利用堆叠注入执行操作系统命令:

python sqlmap.py -r "请求文件" --os-shell

成功获取system权限。

7. 完整渗透流程总结

  1. 发现登录框 → 尝试密码喷洒 → 失败
  2. 分析源代码和JS → 无果
  3. 测试目录遍历 → 成功发现漏洞
  4. 发现CKEditor编辑器 → 尝试历史漏洞 → 失败
  5. 测试搜索框SQL注入 → 初步失败
  6. 扫描目录 → 发现测试环境
  7. 在测试环境测试搜索框 → 发现SQL注入
  8. 使用SQLMap确认注入类型 → 发现堆叠注入
  9. 利用DBA权限 → 获取os-shell → 拿到system权限

8. 经验与教训

  1. 坚持测试:当常规方法失败时,不要轻易放弃
  2. 全面测试:一个漏洞点的失败可能意味着其他漏洞的存在
  3. 环境差异:测试环境往往比生产环境更脆弱
  4. 工具组合:手工测试与自动化工具结合使用效果最佳
  5. 权限意识:数据库高权限往往意味着系统级风险

9. 防御建议

针对此类渗透测试,管理员应采取以下防护措施:

  1. 为登录界面添加验证码或限制机制
  2. 修复目录遍历漏洞
  3. 及时更新第三方组件(如CKEditor)
  4. 对用户输入进行严格过滤,防止SQL注入
  5. 数据库使用最小权限原则
  6. 移除或严格限制测试环境访问
  7. 实施WAF防护
  8. 定期进行安全审计和渗透测试

通过本案例,渗透测试人员可以学习到如何从看似坚固的系统表面找到突破口,并逐步深入获取系统权限的完整思路和方法。

渗透测试实战教学:从登录框到系统权限获取 1. 渗透测试概述 本次渗透测试针对一个管理系统登录界面展开,展示了从初始信息收集到最终获取系统权限的完整流程。测试过程中运用了多种渗透技术,包括密码喷洒、目录遍历、历史漏洞利用、SQL注入等。 2. 初始信息收集与登录框测试 2.1 登录框常见渗透思路 针对管理系统登录框,渗透测试人员通常会考虑以下攻击向量: 暴力破解/密码喷洒 :针对无验证码或弱验证机制的登录界面 SQL注入 :测试登录表单是否存在注入漏洞 源代码分析 :检查前端代码泄露的敏感信息 JS文件分析 :查找隐藏接口或敏感信息 密码重置功能测试 :寻找逻辑漏洞 配置漏洞利用 :如目录遍历、任意文件读取等 CMS框架漏洞 :识别并利用已知CMS漏洞 敏感目录扫描 :寻找隐藏的管理界面或测试页面 Nday漏洞利用 :应用已知但未修复的漏洞 端口扫描与服务利用 :通过其他开放服务获取权限 登录逻辑漏洞 :修改返回包绕过验证 2.2 实际测试过程 在本案例中,测试人员首先尝试了密码喷洒攻击,但由于密码强度较高未能成功。随后检查了前端源代码和JS文件,未发现可利用信息。 关键点 :当常规方法无效时,需要转向其他攻击面。 3. 目录遍历漏洞发现与利用 3.1 发现过程 通过手动测试URL目录结构,发现存在目录遍历漏洞: 尝试删减目录层级,发现二级目录存在遍历漏洞 通过目录遍历发现了CKEditor编辑器 3.2 CKEditor历史漏洞尝试 测试人员识别出CKEditor编辑器并尝试利用其历史漏洞: 搜索确认该编辑器存在已知漏洞 尝试文件上传但失败(IIS 8.0环境限制) 注意 :历史漏洞利用需要考虑环境兼容性,本例中因IIS版本限制未能成功。 4. 功能点测试与SQL注入发现 4.1 搜索框测试 发现一个简陋的搜索功能,测试SQL注入: 使用单引号测试,初步判断不存在注入 报错信息显示系统可能具备基本防护 4.2 添加功能测试 发现添加功能点,测试结果: 不存在SQL注入漏洞 不存在XSS漏洞 存在未授权访问问题(可添加、编辑、删除) 5. 目录扫描与测试环境发现 5.1 使用Dirsearch进行扫描 使用工具:Dirsearch (https://github.com/maurosoria/dirsearch) 命令语法: 扫描结果: 普遍存在目录遍历漏洞 发现/test目录,内含与主站相同的管理界面 关键点 :测试环境通常比生产环境安全性更低,是重要突破口。 6. SQL注入利用与系统权限获取 6.1 测试环境搜索框注入 在测试环境重复搜索框测试: 使用单引号触发明显报错 确认存在SQL注入漏洞 识别为ASP站点使用MS SQL数据库 6.2 注入类型确认 使用时间盲注测试: 确认存在时间盲注漏洞。 6.3 使用SQLMap自动化测试 确认存在以下注入类型: 报错注入 时间盲注 堆叠注入 检查数据库权限: 确认当前用户为DBA权限。 6.4 获取系统权限 利用堆叠注入执行操作系统命令: 成功获取system权限。 7. 完整渗透流程总结 发现登录框 → 尝试密码喷洒 → 失败 分析源代码和JS → 无果 测试目录遍历 → 成功发现漏洞 发现CKEditor编辑器 → 尝试历史漏洞 → 失败 测试搜索框SQL注入 → 初步失败 扫描目录 → 发现测试环境 在测试环境测试搜索框 → 发现SQL注入 使用SQLMap确认注入类型 → 发现堆叠注入 利用DBA权限 → 获取os-shell → 拿到system权限 8. 经验与教训 坚持测试 :当常规方法失败时,不要轻易放弃 全面测试 :一个漏洞点的失败可能意味着其他漏洞的存在 环境差异 :测试环境往往比生产环境更脆弱 工具组合 :手工测试与自动化工具结合使用效果最佳 权限意识 :数据库高权限往往意味着系统级风险 9. 防御建议 针对此类渗透测试,管理员应采取以下防护措施: 为登录界面添加验证码或限制机制 修复目录遍历漏洞 及时更新第三方组件(如CKEditor) 对用户输入进行严格过滤,防止SQL注入 数据库使用最小权限原则 移除或严格限制测试环境访问 实施WAF防护 定期进行安全审计和渗透测试 通过本案例,渗透测试人员可以学习到如何从看似坚固的系统表面找到突破口,并逐步深入获取系统权限的完整思路和方法。