Axis2 高版本Getshell方法
字数 1145 2025-08-24 07:48:10

Axis2 高版本Getshell方法详解

前言

本文详细分析Axis2高版本中的Getshell方法,针对1.7.4及以上版本的Axis2服务,解决传统方法失效的问题。通过分析URL解析特性和service.xml配置变化,提供有效的RCE方法。

背景知识

Axis2是一个流行的Web服务引擎,常用于Java Web服务开发。在安全测试中,低版本(如1.6.2)的Getshell方法已广为人知,但高版本(1.7.4+)由于配置变化导致传统方法失效。

漏洞利用条件

  1. 目标系统运行Axis2服务
  2. 能够访问Axis2管理控制台
  3. 存在弱口令或已获取凭证(如admin/axis2)

详细利用步骤

第一步:识别Axis2版本

访问目标Axis2服务,查看版本号。高版本(1.7.4+)的配置与低版本不同,需要特殊处理。

第二步:利用URL解析特性

Axis2存在URL解析特性,可通过Burp等工具进行请求替换:

  • 原始访问路径可能为:/axis2/services/
  • 替换为:/axis2/axis2-admin/

第三步:登录管理控制台

使用已知弱口令尝试登录:

  • 常见凭证:admin/axis2

第四步:准备恶意aar包

从GitHub获取基础aar包:

https://github.com/Lexus89/AxisInvoker/blob/master/build/AxisInvoker.aar

第五步:修改service.xml配置

高版本Axis2(1.7.4+)的service.xml与低版本(1.6.2)有以下关键区别:

1.6.2版本配置

<service name="HelloServer">
    <description>Please Type your service description here</description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </messageReceivers>
    <parameter name="ServiceClass">com.hongbo.server.HelloServer</parameter>
</service>

1.7.4版本配置

<service name="HelloServer">
    <description>Please Type your service description here</description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/ns/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    </messageReceivers>
    <parameter name="ServiceClass">com.hongbo.server.HelloServer</parameter>
</service>

关键变化:

  • mep属性值从http://www.w3.org/2004/08/wsdl/in-only变为http://www.w3.org/ns/wsdl/in-only
  • mep属性值从http://www.w3.org/2004/08/wsdl/in-out变为http://www.w3.org/ns/wsdl/in-out

第六步:绕过ServiceClass验证

高版本会验证ServiceClass是否实现特定方法,错误提示为:

The ServiceClass object does not implement the required method in the following form: OMElement info(OMElement e)

解决方法:

  1. 确保ServiceClass实现OMElement info(OMElement e)方法
  2. 或使用已知的有效webshell类

第七步:上传修改后的aar包

  1. 登录Axis2管理控制台
  2. 上传修改后的aar包
  3. 部署服务

第八步:执行命令

访问部署的服务,通过特定参数执行系统命令,实现RCE。

防御建议

  1. 修改默认凭证,使用强密码
  2. 限制管理控制台的访问IP
  3. 及时更新Axis2到最新版本
  4. 监控异常aar包的上传和部署

总结

通过分析高版本Axis2的配置变化,调整传统利用方法中的service.xml配置,可以成功绕过限制实现RCE。关键在于正确识别版本差异并相应修改配置。

Axis2 高版本Getshell方法详解 前言 本文详细分析Axis2高版本中的Getshell方法,针对1.7.4及以上版本的Axis2服务,解决传统方法失效的问题。通过分析URL解析特性和service.xml配置变化,提供有效的RCE方法。 背景知识 Axis2是一个流行的Web服务引擎,常用于Java Web服务开发。在安全测试中,低版本(如1.6.2)的Getshell方法已广为人知,但高版本(1.7.4+)由于配置变化导致传统方法失效。 漏洞利用条件 目标系统运行Axis2服务 能够访问Axis2管理控制台 存在弱口令或已获取凭证(如admin/axis2) 详细利用步骤 第一步:识别Axis2版本 访问目标Axis2服务,查看版本号。高版本(1.7.4+)的配置与低版本不同,需要特殊处理。 第二步:利用URL解析特性 Axis2存在URL解析特性,可通过Burp等工具进行请求替换: 原始访问路径可能为: /axis2/services/ 替换为: /axis2/axis2-admin/ 第三步:登录管理控制台 使用已知弱口令尝试登录: 常见凭证:admin/axis2 第四步:准备恶意aar包 从GitHub获取基础aar包: 第五步:修改service.xml配置 高版本Axis2(1.7.4+)的service.xml与低版本(1.6.2)有以下关键区别: 1.6.2版本配置 : 1.7.4版本配置 : 关键变化: mep 属性值从 http://www.w3.org/2004/08/wsdl/in-only 变为 http://www.w3.org/ns/wsdl/in-only mep 属性值从 http://www.w3.org/2004/08/wsdl/in-out 变为 http://www.w3.org/ns/wsdl/in-out 第六步:绕过ServiceClass验证 高版本会验证ServiceClass是否实现特定方法,错误提示为: 解决方法: 确保ServiceClass实现 OMElement info(OMElement e) 方法 或使用已知的有效webshell类 第七步:上传修改后的aar包 登录Axis2管理控制台 上传修改后的aar包 部署服务 第八步:执行命令 访问部署的服务,通过特定参数执行系统命令,实现RCE。 防御建议 修改默认凭证,使用强密码 限制管理控制台的访问IP 及时更新Axis2到最新版本 监控异常aar包的上传和部署 总结 通过分析高版本Axis2的配置变化,调整传统利用方法中的service.xml配置,可以成功绕过限制实现RCE。关键在于正确识别版本差异并相应修改配置。