从js泄露敏感信息到命令执行再到旁站sql注入
字数 1624 2025-11-21 12:14:34

从JS泄露敏感信息到命令执行再到旁站SQL注入 - 渗透测试实战教学

前言

在渗透测试过程中,登录框是常见的测试目标。当弱密码尝试无果后,许多测试者可能会直接放弃该目标。然而,前端JavaScript文件中可能隐藏着关键敏感信息,这些信息可能成为进一步渗透的突破口。本文通过一个完整的实战案例,展示如何从JS文件信息泄露逐步深入,最终获得系统权限并发现旁站漏洞。

资产搜集阶段

目标定位

使用FOFA搜索引擎进行目标发现,搜索语法:

title:"仿真实验"&&title="大学"

通过此语法可定位到特定类型的教育系统平台,这类平台往往存在较多的安全漏洞。

初始侦察

  • 目标系统:某学校实验平台
  • 主要界面:经典登录框,功能单一
  • 初步测试:尝试常见弱密码组合(admin/admin、admin/123456等)
  • 结果:弱密码已被修复,常规入口点被封锁

JS文件敏感信息挖掘

信息收集方法

  1. 打开浏览器开发者工具(F12)
  2. 切换到源代码(Sources)标签页
  3. 系统浏览所有加载的JS文件
  4. 使用关键词搜索:password、username、pass、pwd、key、secret等

实战发现

在检查JS文件时,直接发现硬编码的测试账号密码:

// 在某个JS文件中发现的代码片段
var defaultUsername = "expert_user";
var defaultPassword = "test123456";

验证利用

使用发现的凭据成功登录系统,获得"专家用户"权限,成功接管平台。

命令执行漏洞挖掘

功能分析

登录后,在平台功能中发现"自主编程"模块,该模块疑似直接调用服务器端的Python解释器。

漏洞验证

在编程界面尝试执行系统命令:

import os
os.system("whoami")

命令执行成功返回"root",确认存在命令执行漏洞。

利用扩展

进一步验证可执行更多系统命令,确认服务器权限级别。

旁站渗透与SQL注入

旁站发现

使用FOFA进行IP段扫描:

ip="目标网站IP"

发现同一IP下运行的其他系统。

漏洞识别

在新发现的旁站进行测试时,通过Burp Suite抓包发现:

  • HTTP响应中包含详细的SQL错误信息
  • 错误信息暴露数据库类型(如MySQL)
  • 表明存在SQL注入漏洞的可能性极高

SQL注入利用

使用SQLMap进行自动化检测:

  1. 保存请求数据包到文本文件(如request.txt)

  2. 使用优化命令提高检测效率:

sqlmap -r request.txt --dbms=mysql --technique=E --batch

参数说明:

  • -r:从文件读取HTTP请求
  • --dbms=mysql:指定数据库类型,避免盲目探测
  • --technique=E:专注于报错注入技术
  • --batch:使用默认选项,无需交互确认
  1. 成功提取信息:获取当前数据库用户信息,确认漏洞存在。

工具与技巧总结

JS信息收集工具推荐

FindSomething浏览器插件

  • 自动收集页面中的所有JS文件内容
  • 支持关键词匹配和敏感信息识别
  • 可发现接口端点、API密钥等敏感数据
  • 提供更高效的JS文件审计能力

渗透测试最佳实践

  1. 全面信息收集:不局限于常规测试点,JS文件常被忽视但富含敏感信息
  2. 深入功能测试:对每个系统功能进行安全测试,特别是涉及代码执行的模块
  3. 关联资产发现:通过IP、域名等关联信息寻找旁站,扩大测试范围
  4. 自动化工具辅助:合理使用SQLMap等工具提高测试效率

安全防护建议

开发人员防护措施

  1. 前端安全:避免在JS文件中硬编码敏感信息,使用环境变量或安全配置
  2. 输入验证:对所有用户输入进行严格过滤,特别是命令执行和数据库查询接口
  3. 错误处理:生产环境关闭详细错误信息显示,避免信息泄露
  4. 权限控制:实施最小权限原则,避免使用root等高权限账户运行服务

安全运维建议

  1. 定期安全扫描:对Web应用进行定期的漏洞扫描和渗透测试
  2. 代码审计:建立代码审查机制,确保安全编码实践
  3. 网络隔离:对不同系统进行适当的网络隔离,降低旁站攻击风险

结论

本案例展示了渗透测试中常见的攻击链:从信息收集到漏洞利用,再到横向移动。通过系统性的测试方法,即使最初看似安全的系统也可能存在严重漏洞。安全团队应重视前端代码安全、输入验证和错误处理,而渗透测试人员则需要培养全面、细致的测试习惯,不放过任何可能的安全隐患。

从JS泄露敏感信息到命令执行再到旁站SQL注入 - 渗透测试实战教学 前言 在渗透测试过程中,登录框是常见的测试目标。当弱密码尝试无果后,许多测试者可能会直接放弃该目标。然而,前端JavaScript文件中可能隐藏着关键敏感信息,这些信息可能成为进一步渗透的突破口。本文通过一个完整的实战案例,展示如何从JS文件信息泄露逐步深入,最终获得系统权限并发现旁站漏洞。 资产搜集阶段 目标定位 使用FOFA搜索引擎进行目标发现,搜索语法: 通过此语法可定位到特定类型的教育系统平台,这类平台往往存在较多的安全漏洞。 初始侦察 目标系统:某学校实验平台 主要界面:经典登录框,功能单一 初步测试:尝试常见弱密码组合(admin/admin、admin/123456等) 结果:弱密码已被修复,常规入口点被封锁 JS文件敏感信息挖掘 信息收集方法 打开浏览器开发者工具 (F12) 切换到源代码(Sources)标签页 系统浏览所有加载的JS文件 使用关键词搜索 :password、username、pass、pwd、key、secret等 实战发现 在检查JS文件时,直接发现硬编码的测试账号密码: 验证利用 使用发现的凭据成功登录系统,获得"专家用户"权限,成功接管平台。 命令执行漏洞挖掘 功能分析 登录后,在平台功能中发现"自主编程"模块,该模块疑似直接调用服务器端的Python解释器。 漏洞验证 在编程界面尝试执行系统命令: 命令执行成功返回"root",确认存在命令执行漏洞。 利用扩展 进一步验证可执行更多系统命令,确认服务器权限级别。 旁站渗透与SQL注入 旁站发现 使用FOFA进行IP段扫描: 发现同一IP下运行的其他系统。 漏洞识别 在新发现的旁站进行测试时,通过Burp Suite抓包发现: HTTP响应中包含详细的SQL错误信息 错误信息暴露数据库类型(如MySQL) 表明存在SQL注入漏洞的可能性极高 SQL注入利用 使用SQLMap进行自动化检测: 保存请求数据包 到文本文件(如request.txt) 使用优化命令 提高检测效率: 参数说明: -r :从文件读取HTTP请求 --dbms=mysql :指定数据库类型,避免盲目探测 --technique=E :专注于报错注入技术 --batch :使用默认选项,无需交互确认 成功提取信息 :获取当前数据库用户信息,确认漏洞存在。 工具与技巧总结 JS信息收集工具推荐 FindSomething浏览器插件 : 自动收集页面中的所有JS文件内容 支持关键词匹配和敏感信息识别 可发现接口端点、API密钥等敏感数据 提供更高效的JS文件审计能力 渗透测试最佳实践 全面信息收集 :不局限于常规测试点,JS文件常被忽视但富含敏感信息 深入功能测试 :对每个系统功能进行安全测试,特别是涉及代码执行的模块 关联资产发现 :通过IP、域名等关联信息寻找旁站,扩大测试范围 自动化工具辅助 :合理使用SQLMap等工具提高测试效率 安全防护建议 开发人员防护措施 前端安全 :避免在JS文件中硬编码敏感信息,使用环境变量或安全配置 输入验证 :对所有用户输入进行严格过滤,特别是命令执行和数据库查询接口 错误处理 :生产环境关闭详细错误信息显示,避免信息泄露 权限控制 :实施最小权限原则,避免使用root等高权限账户运行服务 安全运维建议 定期安全扫描 :对Web应用进行定期的漏洞扫描和渗透测试 代码审计 :建立代码审查机制,确保安全编码实践 网络隔离 :对不同系统进行适当的网络隔离,降低旁站攻击风险 结论 本案例展示了渗透测试中常见的攻击链:从信息收集到漏洞利用,再到横向移动。通过系统性的测试方法,即使最初看似安全的系统也可能存在严重漏洞。安全团队应重视前端代码安全、输入验证和错误处理,而渗透测试人员则需要培养全面、细致的测试习惯,不放过任何可能的安全隐患。