java怎么知道上传文件是否成功_文件包含漏洞之——tomcat CVE-2020-1938漏洞复现

4dba1889ca5353be421be9f0bbf3dd50.png

这个漏洞是今年2月份出现的,他的影响范围也是非常广的。

2月20日,国家信息安全漏洞共享平台(CNVD)发布了Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938),这个漏洞是由于Tomcat AJP协议存在缺陷而导致,而攻击者利用该漏洞通过构造特定参数,读取服务器webapp下的任意文件,若目标服务器存在文件上传功能,攻击者可以进一步实现远程代码执行。

漏洞复现步骤

1. docker启动环境

2. Python2 poc.py 172.18.0.2 -p 8009 -w manager -f /WEB-INF/web.xml

我们首先去启动vnlhub

然后启动docker

启动docker之后我们到vnlhub下面去

然后cd到tomcat

Ls查一下,vulhub已经给我们结成好了CVE-2020-1938这一个漏洞的环境,我们cd进去拖取一下这个环境就可以了。

b335f07c22729a973c913e27f2dd3aff.png

这个时候我们在去本地浏览器上去访问一下,访问我们的虚拟机地址8080端口,然后我们进一步的去查看一下虚拟机的ip地址。

87988c5cf8112d69d545f6c37707c2b3.png

我们在去看一下端口是不是8080 cat README

5d065dce23a8019b8034321e80becdc7.png

在这里我们没有访问到,那么我们换一个浏览器

1a1f4ed39781fb9417c9b54b7b32aafd.png

那么这个就是我们CVE-2020-1938所影响的一个环境,而这个漏洞我们也把它叫做幽灵猫漏洞。

接下来让我们一起去复现它。

我们需要去利用到一个脚本,在这个脚本里是编写了这个漏洞攻击的代码。然后我们跟上目标的地址,加上ajp协议端口,加上-w manager -f 能够通过这样一个漏洞我们就能够去读取它下面的web xml文件

a171ea59ab39101d4ee6811271937f11.png

我们利用Python2的环境

24561d04bf08c5b55751baa1154f5995.png

跟上容器的ip地址,那这个容器的ip地址我们这里把它改为容器的ip地址

如果我们不知道去哪里去查看这个容器的ip地址,那么我们直接跟上虚拟机的地址,跟上-p 8009端口一样也是可以的

43c5f77afa9d6e26d33b33f367b70778.png

那么我们就可以通过这样的一个漏洞利用的脚本,跟上这样的读取参数来去读取对方服务器下面的web.xml文件,我们可以看到我们能够成功的读取这个文件的结果出来,这个也是通过文件包含的一个漏洞来去达到这样的一个目的。

9e89456efcf3edaa0ca37c5df8516b1d.png

如果我们想进一步的去getshell该怎么办呢?

如果我们需要getshell的话是需要对方有这样的一个上传功能,在这里我们首先生成一个木马通过kali。

e83418f759637300074fc4da8322674d.png

我们在这里生成一个java的反向连接的木马。

7670f121608eecf3ab874978d511b772.png

这个时候我们需要将这个木马上传到服务器,由于我们这里没有这个上传功能,所以我们这里就直接把这个木马复制过去。

ffd48b45a7a28dadd3113ef706af70dc.png

在这里有一个txt文件,按道理来说是不解析的,但我们可以通过文件包含漏洞来去解析txt中的木马,然后我们主机远程上线。

这个时候我们在去打开msf来去开启 监听,那么对方包含这个文件的时候,我们主机在kail这里就可以成功上线。

ee827a2fddb47ee67a9836ec3fdf3bec.png

我们设定一个java代码,并且是一个反向连接的代码。

0dc3ecc14111331916f4fd744e97b708.png

那么我们在设定反弹过来的ip,也就是跟我们木马中的一致。

03a0c606cb7547fe884aa63ed3b1255a.png

这个时候我们run一下开始监听,这个时候就已经开始监听了。

然后我们在这里通过脚本去成功执行,利用我们的幽灵猫漏洞

bed6c7c78bd2415e502ad98a1591556d.png

-f直接指定这样一个本地文件包含,回车。

59190fa33c9c4a465298b89307f45f15.png

回车过后我们可以看到我们的kail里面,它就会获取这样的一个反向连接,反向连接从我们的容器连接到我们的kail里面来,此刻我们去执行下命令id,可以发现我们现在是root身份,那么我们在这里就可以获得一个权限。

82d35997aa998061ded126e416447e91.png

获得目标的一个执行命令权限,成功的拿到了shell。

那么这就是这个文件包含配合上传的一个getshell的利用方式。

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

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

相关文章

css word-wrap_CSS中分词“ break-all”和“ break-word”的值之间的差异

css word-wrapDefinition: 定义: What is the most fundamental element that comes to mind when you are considering to develop a web page? Words! If that was your answer, then pat yourself because you are already aware of what we are going to disc…

Android Studio apk 打包流程

1.Build -> Generate Signed APK...,打开如下窗口 2.假设这里没有打过apk包,点击Create new,窗口如下 这里只要输入几个必要项 Key store path(生产key文件的保存路径 ) Key store password(key 存储密码…

update yum 到指定版本_CentOS系统升级至指定版本

摘要:CentOS系统下用yum updates命令默认只能升级到最新版本,CentOS仓库并不维护历史版本,所以只能使用 vault.centos.org 历史版本快照进行更新。本文以...CentOS系统下用yum updates命令默认只能升级到最新版本,CentOS仓库并不维…

Redis过期key清理机制

Redis的key过期时间探讨 说到Redis是一个典型的key-value非关系型数据库,存储的key基本都有过期时间,或者有默认的过期时间,或者不设置的话永久不失效(内存空间足够大的情况下,生产环境一般放置系统的配置参数才这样&a…

错误:使用printf()打印Hello world时未声明'Hello'/ Text

While printing "Hello world", if this error Hello undeclared occurred that means Hello is supplied to the compiler as a variable not as a text/string. 在打印“ Hello world”时 ,如果发生未声明的错误“ Hello” ,则意味着Hello是…

C#中毫米与像素的换算方法

C#中以像素作为尺寸单位,像素是一种相对的尺寸概念,与毫米的转换与当前显示器的分辨率有关。在不同分辨率下转换的系数不同。 借助GDI可以完成毫米至像素的转换。 public static double MillimetersToPixelsWidth(double length) //length是毫米&#xf…

Python | 使用__del __()和__init __()实现析构函数和构造函数的示例

To implement a constructor, we use __init()__ and to implement a destructor, we use __del()__ in python. 为了实现构造函数,我们使用__init()__ ;为了实现析构函数,我们使用python中的__del()__ 。 Program: 程序: class…

drawer的用法_MMDrawerController抽屉侧边栏的简单使用

1.MMDrawerController是一个简单实用的侧边栏第三方类库。2.在appdelegate页中初始化你需要的左右侧边栏,leftViewController ,mainViewController。3.在appdelegate中导入头文件#import "MMDrawerController.h"4.初始化抽屉控制器&#xff1a…

【Android】11.3 屏幕旋转和场景变换过程中GridView的呈现

分类:C#、Android、VS2015; 创建日期:2016-02-21 一、简介 实际上,对于布局文件中的View来说,大多数情况下,Android都会自动保存这些状态,并不需要我们都去处理它。这一节仍以GridView为例&…

foss测试_社区概念-与FOSS社区合作时应遵循的准则

foss测试A steady arrangement of strategies and rules is expected to administer FOSS inside an association. These strategies and rules must be deliberately created to protect that all issues that may influence the interests of the association are tended to.…

74ls161中rco是什么_74ls161引脚图与管脚功能表资料

输入输出CRCPLDEPETD3D2D1D0Q3Q2Q1Q00ФФФФФФФФ00001↑0ФФdcbadcba1↑10ФФФФФQ3Q2Q1Q01↑1Ф0ФФФФQ3Q2Q1Q01↑111ФФФФ状态码加1<74LS161功能表>从74LS161功能表功能表中可以知道&#xff0c;当清零端CR“0”&#xff0c;计数器输出Q3、Q2、Q1、Q0立…

html---textarea初始化时就有个table空格以及tab键操作无效

1 初始化时就有一个tab空格这是由于<textarea></textarea>之间的内容不为空的原因&#xff0c;包含空格和换行&#xff0c;否则浏览器会觉得空格或者换行都是文本域的内容。因此书写时需将<textarea></textarea>紧靠在一起。2 tab键对textarea操作无效…

如何使用JavaScript访问对象的键中有空格的对象?

Sometimes your JavaScript object may contain a key having spaces between them. As a key can also be a string and a string may contain spaces, it is very much possible that you encounter this problem. Consider the following object, 有时&#xff0c;您JavaScr…

python信号量怎么用_Python3.X 线程中信号量的使用方法示例

# -*- coding:utf-8 -*-""" Created by FizLin on 2017/07/23/-下午10:59mail: https://github.com/Fiz1994信号量maxconnections 5...pool_sema BoundedSemaphore(valuemaxconnections)Once spawned, worker threads call the semaphores acquire and releas…

Codeforces Round #343 (Div. 2) A. Far Relative’s Birthday Cake 水题

A. Far Relative’s Birthday Cake题目连接&#xff1a; http://www.codeforces.com/contest/629/problem/A Description Doors family is going celebrate Famil Doorss birthday party. They love Famil Door so they are planning to make his birthday cake weird! The cak…

fedora操作系统优缺点_不同类型的操作系统的优缺点

fedora操作系统优缺点There are following types of Operating systems: 有以下几种操作系统&#xff1a; Batch Operating System 批处理操作系统 Time-Sharing Operating System 分时操作系统 Distributed Operating System 分布式操作系统 Network Operating System 网络操…

python radians函数_Python3 radians() 函数

Python3 radians() 函数描述radians() 方法将角度转换为弧度。语法以下是 radians() 方法的语法:import mathmath.radians(x)注意&#xff1a;radians()是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;然后通过 math 静态对象调用该方法。参数x -- 一个数值。返…

android decorView详解

摘要 一、DecorView为整个Window界面的最顶层View。 二、DecorView只有一个子元素为LinearLayout。代表整个Window界面&#xff0c;包含通知栏&#xff0c;标题栏&#xff0c;内容显示栏三块区域。 三、LinearLayout里有两个FrameLayout子元素。 (20)为标题栏显示界面。只有一个…

c语言1+2+3+4+5_C程序来计算系列1+(1 + 2)+(1 + 2 + 3)+(1 + 2 + 3 + 4)+ ... +(1 + 2 + 3 + ... + n)...

c语言12345The series is: 1(12) (123) (1234) ... (123...n), we have to find out the sum up to N terms. 该序列是&#xff1a; 1(1 2)(1 2 3)(1 2 3 4) ... (1 2 3 ... n) &#xff0c;我们有找出N个项之和。 Solution: 解&#xff1a; We know the sum of n…

3dmax批量导入obj_ArcGIS 与 3DMax 结合建模

整体技术思路是将项目区二维的CAD测绘底图&#xff0c;通过整理导入到3DMax中&#xff0c;根据CAD底图为基础&#xff0c;绘制三维数字模型。利用Photoshop 平面图像处理软件&#xff0c;对现场采集的照片进行修整&#xff0c;为三维模型制作表面贴图。最终把贴好材质的三维楼体…