漏洞挖掘之再探某园区系统
字数 1387 2025-08-19 12:40:48

漏洞挖掘之某园区系统安全分析教学文档

0x00 前言

本文档详细分析某园区系统中发现的多个安全漏洞,包括任意用户登录漏洞和XStream反序列化漏洞。通过本教学文档,您将学习到如何通过代码审计发现这些漏洞,以及如何构造利用这些漏洞。

0x01 任意用户登录漏洞分析

1. 漏洞发现路径

  1. 通过搜索new UserBean()代码模式,发现addUser方法:
public void addUser(WsAdminParam<ExUserBean> adminParam) {
    ExUserBean bean = (ExUserBean)adminParam.getParam();
    UserBean userBean = new UserBean();
    userBean.setOwnerCode(bean.getOrgCode());
    userBean.setRoleIds(bean.getRoleIds());
    userBean.setLoginName(bean.getLoginName());
    userBean.setIsReuse(bean.getIsReuse() ? 1 : 0);
    userBean.setLoginPass(bean.getLoginPass());
    userBean.setUserName(bean.getUserName());
    userBean.setUserType(0);
    this.userManager.addUser(userBean);
    UserCache.addUserToUserList(userBean);
}
  1. 查找调用链:
  • 发现ExUserManager接口中的方法被映射到AdminWebServiceImplinterfaceMethodsMap中:
interfaceMethodsMap.put(AdminWebService.INTERFACE_ADD_USER, 
    WsMethod.bulid(ExUserManager.class.getMethod("addUser", WsAdminParam.class), ExUserBean.class));
  1. WebService暴露:
  • AdminWebServiceImpl类使用@WebService注解暴露服务
  • 未配置适当的安全拦截器,导致未授权访问

2. 漏洞利用方法

  1. 构造合法的JSON参数:
{
 "authorinize": {
   "userName": "11",
   "password": "11",
   "loginCode": "11"
 },
 "locale": "1",
 "param": {
   "orgCode":"001",
   "loginName":"test",
   "roleIds":"1",
   "loginPass":"test",
   "isReuse":0,
   "oldLoginName":"xxx",
   "oldRoleIds":"1",
   "userName":"test"
 },
 "paramStr": "11",
 "langLocale": "11",
 "orders": [{"propertyName": "1","isAscending": true}]
}
  1. 使用Burp Suite的WSDler插件:
  • 访问WebService的WSDL描述文件
  • 使用插件解析WSDL并生成请求模板
  • 将构造的JSON参数填入请求中
  1. 成功创建用户后,使用该凭证登录系统

3. 其他相关接口

  1. queryUser - 查看用户信息
  2. viewUser - 查看用户密码(敏感信息泄露)
  3. deleteUsers - 删除用户
  4. updateUser - 更新用户信息
  5. updateUserPassword - 修改用户密码

0x02 XStream反序列化漏洞分析

1. 漏洞发现

  1. 发现项目中使用了低版本的XStream依赖
  2. 使用jar-analyzer工具查找项目中调用fromXMLtoXML方法的位置
  3. 定位到addDevs方法:
public void addDevs(WsAdminParam<String> adminParam) {
    String xmlInfo = adminParam.getParam();
    XStream xStream = this.getFormatedDevXStream();
    XmlInfo info = this.validateAndReturnXmlInfo(xmlInfo);
    // ...
}

2. 漏洞利用

  1. 构造恶意XML payload:
  • 使用woodpecker插件生成XStream Payload
  • 工具地址:
    • 框架:https://github.com/woodpecker-framework/woodpecker-framework-release
    • 插件:https://github.com/woodpecker-appstore/xstream-vuldb
  1. 将payload进行URL全编码后作为xmlInfo参数传递

  2. 成功执行系统命令(如ping命令)

0x03 防御建议

  1. 对于任意用户登录漏洞:
  • 添加适当的权限验证机制
  • 对WebService接口配置认证拦截器
  • 限制用户创建权限
  1. 对于XStream反序列化漏洞:
  • 升级XStream到最新版本
  • 配置XStream的安全框架,限制可反序列化的类
  • 对输入进行严格验证
  1. 通用安全建议:
  • 定期进行代码审计和安全测试
  • 最小化暴露的接口数量
  • 实施输入验证和输出编码

0x04 工具推荐

  1. 代码搜索工具:用于查找特定代码模式(如new UserBean()
  2. Burp Suite WSDler插件:用于解析和构造WebService请求
  3. jar-analyzer:用于分析Java项目中特定方法的调用
  4. woodpecker框架:用于生成XStream反序列化payload

0x05 总结

本教学文档详细分析了某园区系统中的两个高危漏洞:任意用户登录和XStream反序列化。通过代码审计和工具辅助,安全研究人员可以有效地发现和验证这类漏洞。开发人员应重视此类安全问题,实施适当的安全措施来保护系统。

漏洞挖掘之某园区系统安全分析教学文档 0x00 前言 本文档详细分析某园区系统中发现的多个安全漏洞,包括任意用户登录漏洞和XStream反序列化漏洞。通过本教学文档,您将学习到如何通过代码审计发现这些漏洞,以及如何构造利用这些漏洞。 0x01 任意用户登录漏洞分析 1. 漏洞发现路径 通过搜索 new UserBean() 代码模式,发现 addUser 方法: 查找调用链: 发现 ExUserManager 接口中的方法被映射到 AdminWebServiceImpl 的 interfaceMethodsMap 中: WebService暴露: AdminWebServiceImpl 类使用 @WebService 注解暴露服务 未配置适当的安全拦截器,导致未授权访问 2. 漏洞利用方法 构造合法的JSON参数: 使用Burp Suite的WSDler插件: 访问WebService的WSDL描述文件 使用插件解析WSDL并生成请求模板 将构造的JSON参数填入请求中 成功创建用户后,使用该凭证登录系统 3. 其他相关接口 queryUser - 查看用户信息 viewUser - 查看用户密码(敏感信息泄露) deleteUsers - 删除用户 updateUser - 更新用户信息 updateUserPassword - 修改用户密码 0x02 XStream反序列化漏洞分析 1. 漏洞发现 发现项目中使用了低版本的XStream依赖 使用jar-analyzer工具查找项目中调用 fromXML 和 toXML 方法的位置 定位到 addDevs 方法: 2. 漏洞利用 构造恶意XML payload: 使用woodpecker插件生成XStream Payload 工具地址: 框架:https://github.com/woodpecker-framework/woodpecker-framework-release 插件:https://github.com/woodpecker-appstore/xstream-vuldb 将payload进行URL全编码后作为 xmlInfo 参数传递 成功执行系统命令(如ping命令) 0x03 防御建议 对于任意用户登录漏洞: 添加适当的权限验证机制 对WebService接口配置认证拦截器 限制用户创建权限 对于XStream反序列化漏洞: 升级XStream到最新版本 配置XStream的安全框架,限制可反序列化的类 对输入进行严格验证 通用安全建议: 定期进行代码审计和安全测试 最小化暴露的接口数量 实施输入验证和输出编码 0x04 工具推荐 代码搜索工具:用于查找特定代码模式(如 new UserBean() ) Burp Suite WSDler插件:用于解析和构造WebService请求 jar-analyzer:用于分析Java项目中特定方法的调用 woodpecker框架:用于生成XStream反序列化payload 0x05 总结 本教学文档详细分析了某园区系统中的两个高危漏洞:任意用户登录和XStream反序列化。通过代码审计和工具辅助,安全研究人员可以有效地发现和验证这类漏洞。开发人员应重视此类安全问题,实施适当的安全措施来保护系统。