红队攻防 | 外网打点不靠0day组合拳拿下目标系统
字数 3846 2025-10-01 14:05:45

红队外网打点实战技巧与案例详解

一、前期准备与防溯源

1.1 基础设施准备

  • 使用临时VPS(推荐AWS)进行攻击操作
  • 关键设置:勾选"掉线禁用网卡"选项,防止网络切换过程中泄露真实出口IP

1.2 演习规则解读要点

  • 目标范围确认:提前确认目标分子公司是否在攻击范围内
  • 多倍积分目标:重点关注可获多倍积分的目标,提高攻击效率
  • 团队协作:合理分工(如A负责外网打点,B负责内网横向)
  • 成果同步:使用语雀或雨墨等平台同步成果,避免重复工作
  • 现场洞察:关注大屏攻击动态,预判即将下线单位,优先集火攻击

二、实战攻击手法详解

2.1 JS隐藏注册页面攻击链

2.1.1 攻击流程

JS隐藏注册页面 → 短信验证回显 → 断点调试获取动态密钥 → 越权获取用户手机号 → 登入管理员后台

2.1.2 具体实施步骤

1. 发现隐藏接口

  • 全局检索JS代码中的register字段
  • 尝试常见注册接口路径:/api/register/user/signup/auth/create
  • 使用dirbuster、ffuf等工具进行字典爆破

2. 利用短信验证码回显

  • 发现/xxx/sendsmscode/接口泄露验证码内容
  • 可伪造任意手机号进行系统登录

3. 获取管理员手机号

  • 社工手段(通过搜索引擎查找,成功率低)
  • 手机号爆破(尝试数万次未成功)
  • 后台越权漏洞利用

4. 加密数据分析

  • 数据包使用加密字段,全局搜索encrypt字段
  • 发现使用AES-GCM加密方式
  • 设置条件断点动态调试获取session key(一次性,刷新即变)
  • 使用AES-transfer插件自动替换字段

5. 越权获取信息

  • 搜索含id参数的接口
  • 使用hae插件快速挖掘越权点
  • 通过/xxx/xxx/Getinfo?pageIndex=1&pageSize=15&key=1&id=72获取管理员手机号

6. 登录后台

  • 利用管理员手机号+短信验证回显成功登录后台

2.2 小程序弱口令攻击链

2.2.1 攻击流程

小程序弱口令爆破 → Fuzz相似api接口越权 → hash碰撞获取管理员密码 → 接管高权限账户

2.2.2 具体实施步骤

1. 目标发现

  • 通过微信小程序搜索目标单位,发现后勤管控平台

2. 弱口令爆破

  • 使用Google语法搜出工号位数为5位数字(10001、10002格式)
  • 固定密码123456,使用Top1000用户名进行爆破
  • 成功爆破出三个弱口令账户

3. 接口Fuzz

  • 从history中发现StaffListV2接口返回权限不足
  • Fuzz相似接口:StaffListV1StaffListV3StaffList
  • StaffList接口无鉴权,可获取所有员工邮箱和工号

4. 后台地址发现

  • 通过小程序解包找到web后台管理地址:https://api.xxxx-admin.com

5. 密码hash分析

  • 修改密码功能api接口返回用户名pwd_hash
  • 通过传入userid可越权查看他人pwd_hash
  • 分析hash生成算法:pwd_hash = sha256(md5(password) + salt)

6. 密码碰撞

  • 编写碰撞脚本,使用密码字典进行匹配
  • 成功碰撞出高权限账户密码:1qaz@WSX

2.3 APP反编译攻击链

2.3.1 攻击流程

反编译APP找到系统 → 暴力破解bypass → 配置文件获取数据库账密 → 获取数万用户数据

2.3.2 具体实施步骤

1. 系统发现

  • 使用jadx反编译APP,找到管理系统域名地址

2. 验证码绕过

  • 安装muggle_ocr:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple muggle_ocr
  • 默认监听本地8899端口,可通过server.py修改
  • 定位验证码功能URL,抓包发送到验证码识别模块

3. 密码加密分析

  • 搜索encrypt字段找到密码加密函数
  • 编写脚本对密码字段进行RSA批量加密

4. 暴力破解

  • 配置payload模块,实现验证码自动识别+密码加密爆破
  • 成功爆破出有效账户密码

5. 权限提升

  • 通过许可证功能点文件上传getshell
  • 发现IIS权限较低,只能浏览部分文件
  • 通过web.config文件找到数据库账密

6. 数据获取

  • 根据表名定位用户数据表
  • 获取数万用户数据:select count(*) from xxx

2.4 被动指纹识别攻击链

2.4.1 攻击流程

被动指纹识别 → swagger信息泄露获取token → 命令执行

2.4.2 具体实施步骤

1. 框架识别

  • 使用sweetpotato插件识别目标系统为jeecg框架

2. 漏洞利用

  • JeecgBoot积木报表接口未授权漏洞:/jeecg-boot/jmreport/queryFieldBySql
  • 使用Freemarker处理sql参数,存在SSTI漏洞

3. Token获取

  • 直接请求返回缺少token错误
  • 扫描目录发现swagger信息泄露
  • 通过httptrace接口获取有效的x-access-token

4. 命令执行

  • 携带获取的token发送恶意请求
  • 成功实现命令执行

2.5 旁站备份文件泄露攻击链

2.5.1 攻击流程

旁站备份文件泄露 → go代码审计绕鉴权 → yaegi第三方库命令注入

2.5.2 具体实施步骤

1. 信息收集

  • 使用Oneforall、Amass、SubdomainBrute搜集三、四级域名
  • 扫描目录发现测试平台存在源码泄露

2. 代码审计

  • Gin框架中路由映射关系可通过GET、POST等关键字查找
  • SQL注入多存在于fmt.printf使用%s拼接处
  • 全局搜索%s查找潜在注入点

3. Yaegi库漏洞

  • i.Eval方法支持动态执行用户提供的Go代码
  • 未对用户输入做安全控制,存在命令注入

4. 鉴权绕过

  • 直接访问功能点会重定向到首页
  • 使用URL编码绕过鉴权(利用request.url.path特性)
  • 发送payload成功执行命令回显dnslog

2.6 ASP调试信息泄漏攻击链

2.6.1 攻击流程

ASP调试信息泄漏 → 后台FTP下载源码 → 模板插件压缩包上传 → 替换hash登录系统

2.6.2 具体实施步骤

1. 信息泄漏利用

  • 扫描目录发现ASP.NET调试信息泄漏:/Trace.axd?id=0
  • 泄漏Cookie信息,使用Burp替换Cookie进入后台

2. FTP信息获取

  • 在配置文件位置抓包找到FTP账户密码
  • 由于设置限制,只能文件读取和下载

3. 源码获取

  • 将根目录下的www.zip打包到本地进行代码审计

4. 压缩包上传利用

  • 上传功能仅做zip后缀过滤
  • 默认上传路径为/App_Data/BaseManage/Applications/(前台不可访问)
  • 通过copyfile方法,构造app.json文件指定解压路径

5. 权限获取

  • 选择压缩包上传并安装,getshell成功
  • 翻找数据库配置文件:./xxx/xxx/product/application.ini
  • 找到加密密码:root/ENC(2RllAsMDeSP--MsRbM0CdSS7xxxxxx7XeyVHQNGUBE0XU=)

6. 密码解密

  • 定位加密逻辑代码,使用AES-128-CBC加密
  • key使用sha256循环hash 100次生成
  • 编写脚本解密数据库密码

7. 系统登录

  • 发现密码使用BCrypt算法生成(不可逆)
  • 格式:$2a$10$QkBrYzvFkxslEu.NR4K6jOScKpiEqeptALHRoVkj5hoMFm9TqCm8u
  • 重新生成hash替换原值,成功登录系统

2.7 旁站端口扫描攻击链

2.7.1 攻击流程

旁站端口扫描 → 文件下载getshell → docker未授权访问K8s集群 → 环境变量获取密码 → 接管云主机平台

2.7.2 具体实施步骤

1. 目标发现

  • 网页导航站点聚合外链,源代码、注释、配置文件中可能暴露测试入口
  • 扫描旁站端口发现6666端口存在目录遍历

2. 文件下载getshell

  • 利用UploadSourceUploadDestination模拟远程下载webshell
  • 通过静态资源目录前台可访问特性:chunk-000a3681.70cde055.css
  • 使用命令:find /|grep chunk-000a3681.70cde055.css|while read f;do sh -c 'echo xxx | base64 -d' >$(dirname $f)/test.jsp

3. 内网探测

  • 使用fscan扫描内网,发现docker未授权访问

4. 云管平台利用

  • 在节点中发现h3cloud云管平台
  • 密码存放位置:
    • 应用配置文件:application.propertiesappsettings.jsonweb.configconfig.yaml
    • Docker Compose/Kubernetes配置:docker-compose.ymlk8s deployment.yaml
    • 环境变量存储数据库连接字符串
  • 成功从环境变量获取密码

5. 平台接管

  • 连接数据库,定位web系统对应表
  • 新增管理员用户adminx
  • 成功登录h3c云管平台,可管控1000+云主机

三、防御建议

3.1 通用防护措施

  • 定期进行安全审计和渗透测试
  • 加强访问控制,实施最小权限原则
  • 对敏感操作实施多因素认证
  • 定期更新和修补系统及组件漏洞

3.2 具体防护建议

  • 避免在前端代码中暴露隐藏接口和敏感信息
  • 对短信验证码接口实施频率限制和有效期控制
  • 使用安全的加密算法并妥善保管密钥
  • 对用户输入进行严格过滤和验证
  • 避免使用硬编码的凭证和配置信息
  • 实施适当的日志记录和监控措施

通过以上实战案例的分析和总结,可以全面了解外网打点的各种攻击手法和防御措施,为企业安全防护提供参考依据。

红队外网打点实战技巧与案例详解 一、前期准备与防溯源 1.1 基础设施准备 使用临时VPS(推荐AWS)进行攻击操作 关键设置:勾选"掉线禁用网卡"选项,防止网络切换过程中泄露真实出口IP 1.2 演习规则解读要点 目标范围确认 :提前确认目标分子公司是否在攻击范围内 多倍积分目标 :重点关注可获多倍积分的目标,提高攻击效率 团队协作 :合理分工(如A负责外网打点,B负责内网横向) 成果同步 :使用语雀或雨墨等平台同步成果,避免重复工作 现场洞察 :关注大屏攻击动态,预判即将下线单位,优先集火攻击 二、实战攻击手法详解 2.1 JS隐藏注册页面攻击链 2.1.1 攻击流程 2.1.2 具体实施步骤 1. 发现隐藏接口 全局检索JS代码中的 register 字段 尝试常见注册接口路径: /api/register 、 /user/signup 、 /auth/create 使用dirbuster、ffuf等工具进行字典爆破 2. 利用短信验证码回显 发现 /xxx/sendsmscode/ 接口泄露验证码内容 可伪造任意手机号进行系统登录 3. 获取管理员手机号 社工手段(通过搜索引擎查找,成功率低) 手机号爆破(尝试数万次未成功) 后台越权漏洞利用 4. 加密数据分析 数据包使用加密字段,全局搜索 encrypt 字段 发现使用AES-GCM加密方式 设置条件断点动态调试获取session key(一次性,刷新即变) 使用AES-transfer插件自动替换字段 5. 越权获取信息 搜索含id参数的接口 使用hae插件快速挖掘越权点 通过 /xxx/xxx/Getinfo?pageIndex=1&pageSize=15&key=1&id=72 获取管理员手机号 6. 登录后台 利用管理员手机号+短信验证回显成功登录后台 2.2 小程序弱口令攻击链 2.2.1 攻击流程 2.2.2 具体实施步骤 1. 目标发现 通过微信小程序搜索目标单位,发现后勤管控平台 2. 弱口令爆破 使用Google语法搜出工号位数为5位数字(10001、10002格式) 固定密码123456,使用Top1000用户名进行爆破 成功爆破出三个弱口令账户 3. 接口Fuzz 从history中发现 StaffListV2 接口返回权限不足 Fuzz相似接口: StaffListV1 、 StaffListV3 、 StaffList StaffList 接口无鉴权,可获取所有员工邮箱和工号 4. 后台地址发现 通过小程序解包找到web后台管理地址: https://api.xxxx-admin.com 5. 密码hash分析 修改密码功能api接口返回用户名 pwd_hash 通过传入userid可越权查看他人 pwd_hash 分析hash生成算法: pwd_hash = sha256(md5(password) + salt) 6. 密码碰撞 编写碰撞脚本,使用密码字典进行匹配 成功碰撞出高权限账户密码: 1qaz@WSX 2.3 APP反编译攻击链 2.3.1 攻击流程 2.3.2 具体实施步骤 1. 系统发现 使用jadx反编译APP,找到管理系统域名地址 2. 验证码绕过 安装muggle_ ocr: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple muggle_ocr 默认监听本地8899端口,可通过server.py修改 定位验证码功能URL,抓包发送到验证码识别模块 3. 密码加密分析 搜索 encrypt 字段找到密码加密函数 编写脚本对密码字段进行RSA批量加密 4. 暴力破解 配置payload模块,实现验证码自动识别+密码加密爆破 成功爆破出有效账户密码 5. 权限提升 通过许可证功能点文件上传getshell 发现IIS权限较低,只能浏览部分文件 通过 web.config 文件找到数据库账密 6. 数据获取 根据表名定位用户数据表 获取数万用户数据: select count(*) from xxx 2.4 被动指纹识别攻击链 2.4.1 攻击流程 2.4.2 具体实施步骤 1. 框架识别 使用sweetpotato插件识别目标系统为jeecg框架 2. 漏洞利用 JeecgBoot积木报表接口未授权漏洞: /jeecg-boot/jmreport/queryFieldBySql 使用Freemarker处理sql参数,存在SSTI漏洞 3. Token获取 直接请求返回缺少token错误 扫描目录发现swagger信息泄露 通过 httptrace 接口获取有效的 x-access-token 4. 命令执行 携带获取的token发送恶意请求 成功实现命令执行 2.5 旁站备份文件泄露攻击链 2.5.1 攻击流程 2.5.2 具体实施步骤 1. 信息收集 使用Oneforall、Amass、SubdomainBrute搜集三、四级域名 扫描目录发现测试平台存在源码泄露 2. 代码审计 Gin框架中路由映射关系可通过GET、POST等关键字查找 SQL注入多存在于 fmt.printf 使用 %s 拼接处 全局搜索 %s 查找潜在注入点 3. Yaegi库漏洞 i.Eval 方法支持动态执行用户提供的Go代码 未对用户输入做安全控制,存在命令注入 4. 鉴权绕过 直接访问功能点会重定向到首页 使用URL编码绕过鉴权(利用 request.url.path 特性) 发送payload成功执行命令回显dnslog 2.6 ASP调试信息泄漏攻击链 2.6.1 攻击流程 2.6.2 具体实施步骤 1. 信息泄漏利用 扫描目录发现ASP.NET调试信息泄漏: /Trace.axd?id=0 泄漏Cookie信息,使用Burp替换Cookie进入后台 2. FTP信息获取 在配置文件位置抓包找到FTP账户密码 由于设置限制,只能文件读取和下载 3. 源码获取 将根目录下的www.zip打包到本地进行代码审计 4. 压缩包上传利用 上传功能仅做zip后缀过滤 默认上传路径为 /App_Data/BaseManage/Applications/ (前台不可访问) 通过 copyfile 方法,构造 app.json 文件指定解压路径 5. 权限获取 选择压缩包上传并安装,getshell成功 翻找数据库配置文件: ./xxx/xxx/product/application.ini 找到加密密码: root/ENC(2RllAsMDeSP--MsRbM0CdSS7xxxxxx7XeyVHQNGUBE0XU=) 6. 密码解密 定位加密逻辑代码,使用AES-128-CBC加密 key使用sha256循环hash 100次生成 编写脚本解密数据库密码 7. 系统登录 发现密码使用BCrypt算法生成(不可逆) 格式: $2a$10$QkBrYzvFkxslEu.NR4K6jOScKpiEqeptALHRoVkj5hoMFm9TqCm8u 重新生成hash替换原值,成功登录系统 2.7 旁站端口扫描攻击链 2.7.1 攻击流程 2.7.2 具体实施步骤 1. 目标发现 网页导航站点聚合外链,源代码、注释、配置文件中可能暴露测试入口 扫描旁站端口发现6666端口存在目录遍历 2. 文件下载getshell 利用 UploadSource → UploadDestination 模拟远程下载webshell 通过静态资源目录前台可访问特性: chunk-000a3681.70cde055.css 使用命令: find /|grep chunk-000a3681.70cde055.css|while read f;do sh -c 'echo xxx | base64 -d' >$(dirname $f)/test.jsp 3. 内网探测 使用fscan扫描内网,发现docker未授权访问 4. 云管平台利用 在节点中发现h3cloud云管平台 密码存放位置: 应用配置文件: application.properties 、 appsettings.json 、 web.config 、 config.yaml Docker Compose/Kubernetes配置: docker-compose.yml 、 k8s deployment.yaml 环境变量存储数据库连接字符串 成功从环境变量获取密码 5. 平台接管 连接数据库,定位web系统对应表 新增管理员用户 adminx 成功登录h3c云管平台,可管控1000+云主机 三、防御建议 3.1 通用防护措施 定期进行安全审计和渗透测试 加强访问控制,实施最小权限原则 对敏感操作实施多因素认证 定期更新和修补系统及组件漏洞 3.2 具体防护建议 避免在前端代码中暴露隐藏接口和敏感信息 对短信验证码接口实施频率限制和有效期控制 使用安全的加密算法并妥善保管密钥 对用户输入进行严格过滤和验证 避免使用硬编码的凭证和配置信息 实施适当的日志记录和监控措施 通过以上实战案例的分析和总结,可以全面了解外网打点的各种攻击手法和防御措施,为企业安全防护提供参考依据。