记一次对某站点的渗透测试(bypass)
字数 1681 2025-08-25 22:58:28

渗透测试实战:从信息收集到Bypass WAF的完整过程

0x01 信息收集与初步探测

1.1 目标识别

  • 目标站点使用.action后缀,表明是Java环境(Tomcat + Struts2框架)
  • 初步尝试Struts2漏洞利用工具未果

1.2 端口扫描与服务发现

  • 发现OA系统开放
  • 通过信息收集手段获取OA系统账号密码(具体方法未详述)

1.3 目录与文件扫描

  • 使用lijiejie的扫描工具发现DS_Store文件泄露
  • 发现一处反射型XSS漏洞(但危害较低)
  • 尝试寻找备份文件、目录爆破、中间件漏洞均无果

0x02 横向渗透与提权

2.1 同系统站点查找

  • 通过FOFA搜索相同系统的其他站点
  • 在另一站点发现可利用的Struts2漏洞

2.2 获取初始访问

  • 利用Struts2漏洞上传Webshell
  • 虽然工具显示上传失败,但实际成功获取Shell
  • 使用冰蝎(Behinder)连接Webshell

2.3 权限提升

  • 初始权限受限(无法执行systeminfo等命令)
  • 更换为哥斯拉(Godzilla)的Webshell
  • 使用哥斯拉的Shell操作模块执行命令
  • 通过systeminfo检查补丁情况
  • 使用https://bugs.hacking8.com/tiquan/查找可利用的提权漏洞
  • 最终使用修改后的SweetPotato源码进行提权成功

0x03 源码审计与漏洞挖掘

3.1 源码获取

  • 使用7z打包下载源码(哥斯拉默认打包功能存在问题)

3.2 框架分析

  • 系统使用Hibernate + Struts2 + Spring框架
  • 使用jd-gui反编译class文件获取Java源码

3.3 漏洞发现

  1. 文件上传漏洞

    • 发现无过滤的文件上传点
    • 直接构造接口上传被拦截(站点可能进行了二次开发)
  2. 账号爆破漏洞

    • OA系统存在可爆破的账号密码
    • 修改密码处未限制,可批量爆破账号改密码

0x04 系统更新后的二次渗透

4.1 新发现漏洞

  1. 弱口令漏洞

    • admin/admin直接登录成功
  2. 源码与密钥泄露

    • 发现并下载包含敏感信息的压缩包
    • 泄露了aliyun、钉钉、wechat、云盘等密钥
    • OSS可被接管,涉及其他公司资产
  3. SSRF漏洞

    • 通过新增的ueditor组件(1.4.3 jsp版本)发现SSRF

4.2 WAF绕过技术

4.2.1 上传点发现

  • 通过源码审计发现隐蔽上传点
  • 初步测试:
    • JPG文件可正常解析
    • HTML文件触发Connection reset(硬件WAF存在)

4.2.2 后缀名绕过

  • 尝试方法:
    • 大小写(SVG)
    • 换行
    • 多个等号
    • 加点
    • 脏数据
    • 不常见后缀名
    • 去掉引号
  • 最终绕过方法:
    • 将Content-Type改为text/html
    • 文件名只写"xxx"(无后缀)
    • 系统自动重命名为时间戳.xxx

4.2.3 内容过滤绕过

  • Java特征代码被拦截
  • EL表达式可用
  • 使用约80万字符的脏数据成功绕过
  • 上传免杀Webshell(前辈提供的免杀马)

0x05 防御建议

  1. Struts2防护

    • 及时更新Struts2框架
    • 禁用不必要的Struts2功能
  2. 文件上传防护

    • 实施白名单文件类型验证
    • 检查文件内容而不仅是扩展名
    • 随机化上传文件名
  3. 认证安全

    • 禁用默认账号
    • 实施强密码策略
    • 增加登录失败锁定机制
  4. 敏感信息保护

    • 禁止源码打包下载
    • 使用环境变量存储密钥
    • 定期轮换密钥
  5. WAF配置

    • 不仅拦截常见攻击模式
    • 对异常大的请求保持警惕
    • 实施深度内容检测
  6. 系统加固

    • 及时安装安全补丁
    • 最小权限原则
    • 定期安全审计

0x06 工具与资源

  1. 扫描工具

    • lijiejie的目录扫描工具
    • FOFA网络空间搜索引擎
  2. Webshell管理

    • 冰蝎(Behinder)
    • 哥斯拉(Godzilla)
  3. 提权资源

    • SweetPotato提权工具
    • https://bugs.hacking8.com/tiquan/(提权漏洞查询)
  4. 源码审计

    • jd-gui Java反编译器
  5. 免杀技术

    • 自定义Webshell
    • 大流量脏数据混淆
渗透测试实战:从信息收集到Bypass WAF的完整过程 0x01 信息收集与初步探测 1.1 目标识别 目标站点使用 .action 后缀,表明是Java环境(Tomcat + Struts2框架) 初步尝试Struts2漏洞利用工具未果 1.2 端口扫描与服务发现 发现OA系统开放 通过信息收集手段获取OA系统账号密码(具体方法未详述) 1.3 目录与文件扫描 使用lijiejie的扫描工具发现DS_ Store文件泄露 发现一处反射型XSS漏洞(但危害较低) 尝试寻找备份文件、目录爆破、中间件漏洞均无果 0x02 横向渗透与提权 2.1 同系统站点查找 通过FOFA搜索相同系统的其他站点 在另一站点发现可利用的Struts2漏洞 2.2 获取初始访问 利用Struts2漏洞上传Webshell 虽然工具显示上传失败,但实际成功获取Shell 使用冰蝎(Behinder)连接Webshell 2.3 权限提升 初始权限受限(无法执行systeminfo等命令) 更换为哥斯拉(Godzilla)的Webshell 使用哥斯拉的Shell操作模块执行命令 通过systeminfo检查补丁情况 使用https://bugs.hacking8.com/tiquan/查找可利用的提权漏洞 最终使用修改后的SweetPotato源码进行提权成功 0x03 源码审计与漏洞挖掘 3.1 源码获取 使用7z打包下载源码(哥斯拉默认打包功能存在问题) 3.2 框架分析 系统使用Hibernate + Struts2 + Spring框架 使用jd-gui反编译class文件获取Java源码 3.3 漏洞发现 文件上传漏洞 : 发现无过滤的文件上传点 直接构造接口上传被拦截(站点可能进行了二次开发) 账号爆破漏洞 : OA系统存在可爆破的账号密码 修改密码处未限制,可批量爆破账号改密码 0x04 系统更新后的二次渗透 4.1 新发现漏洞 弱口令漏洞 : admin/admin直接登录成功 源码与密钥泄露 : 发现并下载包含敏感信息的压缩包 泄露了aliyun、钉钉、wechat、云盘等密钥 OSS可被接管,涉及其他公司资产 SSRF漏洞 : 通过新增的ueditor组件(1.4.3 jsp版本)发现SSRF 4.2 WAF绕过技术 4.2.1 上传点发现 通过源码审计发现隐蔽上传点 初步测试: JPG文件可正常解析 HTML文件触发Connection reset(硬件WAF存在) 4.2.2 后缀名绕过 尝试方法: 大小写(SVG) 换行 多个等号 加点 脏数据 不常见后缀名 去掉引号 最终绕过方法: 将Content-Type改为text/html 文件名只写"xxx"(无后缀) 系统自动重命名为时间戳.xxx 4.2.3 内容过滤绕过 Java特征代码被拦截 EL表达式可用 使用约80万字符的脏数据成功绕过 上传免杀Webshell(前辈提供的免杀马) 0x05 防御建议 Struts2防护 : 及时更新Struts2框架 禁用不必要的Struts2功能 文件上传防护 : 实施白名单文件类型验证 检查文件内容而不仅是扩展名 随机化上传文件名 认证安全 : 禁用默认账号 实施强密码策略 增加登录失败锁定机制 敏感信息保护 : 禁止源码打包下载 使用环境变量存储密钥 定期轮换密钥 WAF配置 : 不仅拦截常见攻击模式 对异常大的请求保持警惕 实施深度内容检测 系统加固 : 及时安装安全补丁 最小权限原则 定期安全审计 0x06 工具与资源 扫描工具 : lijiejie的目录扫描工具 FOFA网络空间搜索引擎 Webshell管理 : 冰蝎(Behinder) 哥斯拉(Godzilla) 提权资源 : SweetPotato提权工具 https://bugs.hacking8.com/tiquan/(提权漏洞查询) 源码审计 : jd-gui Java反编译器 免杀技术 : 自定义Webshell 大流量脏数据混淆