【Web实战】记一次对某停车场系统的测试
字数 1782 2025-08-10 08:28:49
停车场系统渗透测试实战教学文档
1. 测试目标概述
本次渗透测试针对某停车场管理系统,通过多种技术手段发现并验证了多个安全漏洞,包括SQL注入、任意文件读取等高风险漏洞。
2. 初始信息收集
2.1 目录扫描
- 使用工具对系统目录进行扫描
- 发现301状态路径,但未扫描出有价值信息
- 建议:对301状态路径应继续深入扫描
3. 认证机制测试
3.1 弱口令测试
- 系统无验证码保护
- 尝试常见弱口令组合:test/123456、system/123456等
- 使用Burp Suite进行爆破测试,但未获成功
3.2 用户枚举漏洞
- 发现系统在输入密码前会检查用户名是否存在
- 通过Burp Suite捕获的接口:
/CheckUserExists - 存在用户时返回特定数据包,不存在时返回不同响应
- 此功能可能导致攻击者枚举有效用户名
4. SQL注入漏洞
4.1 注入点发现
- 在用户检查接口的用户名参数后添加单引号(
')触发错误 - 确认存在SQL注入漏洞
4.2 利用过程
- 使用sqlmap工具进行自动化测试:
sqlmap -r request.txt --batch - 成功提取数据库信息:
- 发现3个admin账户
- 第一个admin账户密码错误
- 第二个admin账户成功登录后台
4.3 限制因素
- 注入类型非堆叠注入,无法使用
--os-shell - 数据库用户为sa权限,但无法执行系统命令
5. 后台功能测试
5.1 文件上传功能
- 发现仅允许上传.xls格式文件
- 尝试多种绕过方式:
- 修改文件扩展名
- 使用特殊字符截断(Windows系统)
- 均被系统拦截
- 通过代码审计发现上传路径固定为:
PL/PLB/PLB010/UploadFile/ - 文件名格式固定:
Upload+时间戳+.xls
5.2 任意文件读取漏洞
5.2.1 漏洞发现
- 系统存在读取XML文件的接口
- 参数中包含文件名,尝试目录穿越
5.2.2 利用方法
- 使用
../进行路径遍历 - 发现7个
../时系统开始报错 - 删除
&name_space=EditDetail参数后成功读取文件 - 成功读取:
/default.aspx/Upload.aspx/Upload.aspx.vb(代码文件)/web.config(配置文件)
5.2.3 关键信息获取
- 从web.config中获取数据库凭据:
- 用户名:sa
- 密码:(具体值)
- 数据库地址在内网
6. 其他测试尝试
6.1 XXE注入测试
- 系统使用XML格式传参
- 确认存在XXE回显
- 但未深入利用
6.2 数据库命令执行
- 尝试使用
--sql-shell执行命令 - 确认DBA权限但无法执行系统命令
- 尝试启用
xp_cmdshell失败
6.3 图片功能测试
- 发现系统存储用户图片在数据库中
- 尝试修改图片上传webshell未果
7. 漏洞总结
| 漏洞类型 | 风险等级 | 利用难度 | 影响程度 |
|---|---|---|---|
| SQL注入 | 高危 | 中 | 数据库信息泄露、管理员账户获取 |
| 任意文件读取 | 高危 | 中 | 源代码泄露、配置文件泄露 |
| 用户枚举 | 中危 | 低 | 用户名收集 |
| XXE注入 | 中危 | 高 | 有限的信息泄露 |
8. 修复建议
-
SQL注入防护:
- 使用参数化查询或ORM框架
- 对用户输入进行严格过滤
-
任意文件读取防护:
- 限制文件访问路径
- 禁用目录遍历字符
- 实施文件访问白名单
-
认证机制加固:
- 添加验证码防止暴力破解
- 统一登录失败提示信息
- 实施账户锁定机制
-
文件上传安全:
- 实施文件内容检查而不仅是扩展名检查
- 随机化上传文件路径和名称
- 限制上传文件执行权限
-
其他建议:
- 最小化数据库权限
- 禁用XML外部实体解析
- 定期安全审计和渗透测试
9. 测试工具清单
- Burp Suite - HTTP代理和攻击工具
- sqlmap - SQL注入自动化工具
- 目录扫描工具(DirBuster等)
- 自定义Payload和手动测试
10. 经验总结
- 用户枚举功能常伴随SQL注入风险
- 后台功能点全面测试的重要性
- 代码审计可辅助理解系统限制
- 多角度尝试同一漏洞的利用方式
- 权限提升路径需要创造性思维
本测试展示了从外部渗透到获取系统敏感信息的完整过程,强调了系统各层防护的重要性。