首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >渗透测试文件上传漏洞原理与验证(6)——Tomcat任意文件上传

渗透测试文件上传漏洞原理与验证(6)——Tomcat任意文件上传

原创
作者头像
周周的奇妙编程
发布2024-12-05 17:05:16
发布2024-12-05 17:05:16
1.4K0
举报
文章被收录于专栏:渗透测试专栏渗透测试专栏

Tomcat相关配置

Tomcat任意文件上传漏洞

影响版本:Tomcat 7.0.0-7.0.81

Tomcat运行环境:JDK 8.0

环境配置

解压文件夹,将文件夹放到合适位置

环境变量

在运行Tomncat之前,需要配置环境变量

环境变量1 : JAVA_HOME

安装JDK8.0的目录路径

在计算机->属性->高级程序设置->环境变量->系统变量中点击新建。

然后输入变量名和变量值。

环境变量2 : CATALINA_HOME

变量值tomcat的目录路径

点击新建变量输入变量名和变量值

环境变量3 : Path

点击系统变量中的Path:

环境启动

cmd命令行运行tomcat文件夹下的bin文件夹中startup.bat

访问127.0.0.1:8080。有如下画面说明配置成功

漏洞配置

tomcat文件夹下的/conf/web.xml文件

在114行插入以下内容:

代码语言:js
复制
<init-param>
 <param-name>readonly</param-name>
 <param-value>false</param-value>
</init-param>

修改后如图

重启Tomcat服务器

代码语言:shell
复制
shutdown.bat
startup.bat

Tomcat任意文件上传

Tomcat 远程代码执行漏洞,编号:CVE-2017-12615

Tomcat配置文件web.xml中,servlet配置了readonly=fasle时,会引发任意文件上传漏洞。

readonly参数默认是true,即不允许delete和put操作,所以通过XMLHttpRequest对象的put或者delete方法访问就会报告http 403错误。但很多时候为了支持REST服务,会设置该属性为false。将readonly 参数设置为 false 时,即可通过 PUT 方式创建一个 JSP 文件,并可以执行任意代码

漏洞复现

现在访问Tomcat服务,抓包,对包进行一些修改。

为了方便查看效果,右键,选择send to repeater。

在repeater中发包 , 提示404,请求被拦截

1、 NTFS 文件流

2、文件名相关限制(如 Windows 中文件名不能以空格结尾)来绕过限制返回201说明文件已经上传成功,

访问我们上传的文件,发现里面的代码已经被执行


本文部分图片摘自深信服安全服务认证工程师课程课件中,为方便个人学习使用,勿作商用!!!!文字内容为自己手打,并非直接搬运!如有侵权,请联系删除!!!

本文档所提供的信息仅用于教育目的及在获得明确授权的情况下进行渗透测试。任何未经授权使用本文档中技术信息的行为都是严格禁止的,并可能违反《中华人民共和国网络安全法》及相关法律法规。使用者应当合法合规地运用所学知识,不得用于非法入侵、破坏信息系统等恶意活动。我们强烈建议所有读者遵守当地法律与道德规范,在合法范围内探索信息技术。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • Tomcat相关配置
    • 环境配置
    • 环境变量
      • 环境变量1 : JAVA_HOME
      • 环境变量2 : CATALINA_HOME
      • 环境变量3 : Path
    • 环境启动
    • 漏洞配置
  • Tomcat任意文件上传
    • 漏洞复现
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档