攻防演练 | 从JS到内网横向
字数 1366 2025-08-11 08:36:26
从JS到内网横向渗透实战教学
前言
本教学文档基于一次真实的攻防演练案例,详细讲解如何从JavaScript文件入手,逐步深入内网获取权限的全过程。该案例展示了从Web前端到内网横向移动的完整攻击链,涉及JS审计、数据库利用、免杀技术、CMS漏洞利用等多个关键环节。
1. 初始信息收集
1.1 目标识别
- 目标系统:仅提供一个登录页面
- 防护措施:无法枚举用户名,常规爆破尝试未果
1.2 JS文件审计
- 使用Burp Suite抓取和分析JS相关文件
- 发现关键线索:
- 存在SQL语句片段
- 发现
comboxsql变量定义 - 该变量关联到一个
action类
2. SQL注入漏洞利用
2.1 漏洞定位
- 搜索
action类路径,发现可通过URL直接访问 - 构造URL路径:
http://target/path/action?param=value
2.2 数据库识别
- 通过注入测试确认数据库类型为MSSQL
- 确认
xp_cmdshell存储过程可用
2.3 命令执行
- 利用
xp_cmdshell执行系统命令 - 发现防护措施:360企业云拦截exe执行行为
3. 免杀技术绕过
3.1 初始尝试
- 尝试直接远程下载并执行Cobalt Strike(CS)木马
- 失败原因:360企业云拦截exe执行
3.2 替代方案
- 下载哥斯拉(Godzilla)Webshell
- 利用哥斯拉的
shellcodeloader功能 - 加载自定义CS木马的shellcode
- 成功上线CS并获得system权限
4. 内网信息收集
4.1 数据库配置发现
- 搜索本机配置文件发现加密的数据库凭据
- 查找历史备份文件发现未加密的配置版本
- 成功连接数据库
4.2 意外发现
- 发现同一服务器部署的另一套业务系统
- 识别为SiteServer CMS
- 数据库配置同样加密存储
5. CMS漏洞利用
5.1 SiteServer CMS分析
- 确认系统版本和特征
- 搜索公开的加解密工具:SiteServer CLI
5.2 解密数据库配置
- 使用SiteServer CLI工具解密配置
- 获取明文数据库连接信息:
Server=x.x.x.x;Uid=sa;Pwd=xxCSth
6. 横向移动
6.1 数据库服务器访问
- 使用解密后的凭据连接数据库服务器
- 进一步收集内网信息
6.2 权限维持
- 在数据库服务器建立持久化访问
- 通过数据库服务账户尝试其他系统访问
关键技术与工具总结
- JS审计工具:Burp Suite、浏览器开发者工具
- SQL注入利用:手工注入、xp_cmdshell
- 免杀技术:哥斯拉Webshell、shellcode加载
- 内网工具:Cobalt Strike
- CMS利用:SiteServer CLI解密工具
- 信息收集:配置文件搜索、历史备份分析
防御建议
-
前端安全:
- 避免在前端JS中暴露敏感逻辑
- 对API接口进行严格权限控制
-
数据库安全:
- 禁用不必要的存储过程(xp_cmdshell)
- 使用最小权限原则配置数据库账户
-
防护措施:
- 保持终端防护软件更新
- 监控异常进程行为
-
配置管理:
- 统一加密所有敏感配置
- 定期清理历史备份文件
-
CMS安全:
- 及时更新CMS版本
- 修改默认加密密钥
本案例展示了攻击者如何利用看似微小的前端漏洞逐步深入内网的全过程,强调了纵深防御和安全开发实践的重要性。