不安全的http方法
本章节所需工具burp和curl
curl下载地址:https://curl.haxx.se/download.html
漏洞简介
什么是http方法?
根据HTTP标准,HTTP请求可以使用多种方法,其功能描述如下所示。
HTTP1.0定义了三种请求方法: GET、POST、HEAD
HTTP1.1新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT
什么是不安全的http方法?
在所有的HTTP方法中,安全界认为PUT、DELETE、TRACE是不安全的,另外WebDAV中的几个方法,RFC 5789中的PATCH方法也被认为是不安全的。(TRACE容易引发XST攻击,PATCH修改资源的部分内容,PUT/DELETE没有认证机制等原因,不仅仅因为它们会产生结果)
不安全的http方法有什么危害?
1、OPTIONS方法,将会造成服务器信息暴露,如中间件版本、支持的HTTP方法等。
2、PUT方法,由于PUT方法自身不带验证机制,利用PUT方法即可快捷简单地入侵服务器,上传Webshell或其他恶意文件,从而获取敏感数据或服务器权限。
3、DELETE方法,利用DELETE方法可以删除服务器上特定的资源文件,造成恶意攻击。
漏洞利用
环境搭建
1、测试环境为:WIN10 64位、Tomcat 8.5.15、curl 7.65、burp 1.7.30
2、在Tomcat 8默认配置中,web.xml文件的org.apache.catalina.servlets.DefaultServlet的
readonly参数默认是true,即不允许DELETE和PUT操作,所以通过PUT或DELETE方法访问,就会报403错误。为配合测试,把readonly参数设为false。
漏洞验证
打开burp抓包,ctrl+R发送到重放模块,修改http方法为OPTIONS,再返回包中发现支持的方法,如下图
漏洞利用
安装curl:https://blog.csdn.net/dear_alice_moon/article/details/79509466
使用方法:https://www.cnblogs.com/hbzyin/p/7224338.html
打开如下图
对目标url进行测试,如下图
PUT上传文件
payload:curl -X PUT http://127.0.0.1:8800/test/1.html -d "1111"
DELETE删除文件
payload:curl -X DELETE http://127.0.0.1:8800/test/1.html
如果不是jsp的站点,我们可以直接上传webshell,如果是JSP站点,
在默认配置下,涉及jsp、jspx后缀名的请求由org.apache.jasper.servlet.JspServlet处理**,除此之外的请求才由org.apache.catalina.servlets.DefaultServlet处理。
刚才将DefaultServlet的readonly设置为false,并不能对jsp和jspx生效。因此,当PUT上传jsp和jspx文件时,Tomcat用JspServlet来处理请求,而JspServlet中没有PUT上传的逻辑,所以会403报错。
绕过限制
tomcat任意文件上传漏洞:影响版本是tomcat7.0.0-7.0.81版本。我这里没装先不试了
利用Tomcat 7的任意文件上传漏洞(CVE-2017-12615)来实现目的,该漏洞**通过构造特殊后缀名,绕过tomcat检测,让它用DefaultServlet的逻辑处理请求,从而上传jsp文件**。具体来说,主要有三种方法,比如shell.jsp%20 、shell.jsp::$DATA 、shell.jsp/
如何修复
如何修复此漏洞?
在配置文件中添加如下代码
<security-constraint><web-resource-collection><web-resource-name>fortune</web-resource-name><url-pattern>/*</url-pattern><http-method>PUT</http-method><http-method>DELETE</http-method><http-method>HEAD</http-method><http-method>OPTIONS</http-method><http-method>TRACE</http-method></web-resource-collection><auth-constraint></auth-constraint></security-constraint>
<security-constraint>
用于限制对资源的访问;<auth-constraint>
用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;<url-pattern>
指定需要验证的资源<http-method>
指定那些方法需要验证
不安全的http方法相关推荐
- 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群
作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...
- Java面试题大全2021版
一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...
- Kotlin协程使用,协程使用注意事项,协程中的await方法使用|不使用suspend使用协程
参见 码云 协程使用方法一 (Dispatchers调度器模式) 指定不同线程.同线程会挂起并阻塞(挂起是不影响主线程执行,阻塞是同样的IO线程会阻塞) withContext(Dispatchers ...
- IDEA中将代码块封装为方法,IDEA代码重构快捷键
IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:
- IDEA自动生成对象所有set方法
idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...
- List元素互换,List元素转换下标,Java Collections.swap()方法实例解析
Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...
- java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解
1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- Java Calendar.add()方法的使用,参数含义。指定时间差。
cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...
- 设置select下拉框不可修改的→“四”←种方法
设置select下拉框为不可修改的几种方法: 因为select的特殊性,导致它不能像input表单一样简单地设置一个readonly来限制修改,所以,我们需要进行别的操作! 1.为下拉框添加样式,可以 ...
最新文章
- Python机器学习:训练Tesseract
- 算法:螺旋矩阵 ||
- byte转换int时为何与0xff进行与运算
- Express请求处理-构建模块化路由
- Redis持久化的几种方式——RDB深入解析
- P3808,P3796-[模板]AC自动机(简单版/加强版)
- java Spring Boot中使用Swagger2构建API文档
- 钉钉作弊,被判5年!
- 第二次冲刺-站立会议06
- Jmeter多机联合产生负载 (转)
- jy在线制图系统免费源码丨一秒生成广告横图海报图
- 面试问题大全【职场福利】
- fuz 1205(小鼠迷宫问题)
- java手机游戏ios_我的世界JAVA版本ios版
- java编程50_荐非常经典的java编程题全集-共50题(1-10)...
- 大学计算机第七版读书笔记(第二章)
- linux 内存 内核参数详解,linux系统内核参数说明
- 贸易动力带您使用海关数据开发客户
- A系列RPG地图编辑器发布,终于可以编辑地图了
- 2021年,定个小目标,排名1w以内
热门文章
- 阅读类APP提升用户留存的功能分析
- 概率论中的联合概率理解
- Excel学习:实现满足条件的Excel整行标色
- 解决mysql 数据迁移过程中使用 select into或inert into select 批量插入时id使用UUID重复问题(已解决)
- 2021年CS保研经历(三):清华大学自动化学院大数据专硕预推免
- php xhprof extension,php xhprof使用
- 金融科技的下半场:服务边界的“进化论”
- arduino 光控灯_Arduino 极速入门系列 - 光控灯(1)- 关于理论和 LED 那些事
- 高仿新闻教程-开源框架的简单实现——网易新闻的标题栏(一)
- 西游侠侣服务器维护多久,《西游侠侣》职业宠物合理搭配,任务PK事半功倍_37376游戏...