request smuggling漏洞

2023-10-31 12:50
文章标签 漏洞 request smuggling

本文主要是介绍request smuggling漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

request smuggling漏洞如何产生?


        大多数HTTP请求走私漏洞的出现是因为HTTP规范提供了两种不同的方法来指定请求
的结束位置:Content-Length标头和Transfer-Encoding标头。
        该Content-Length头是直接的:它指定消息体的以字节为单位的长度。

例如:

                POST /search HTTP/1.1
                Host:normal-website.com
                Content-Type:application/x-www-form-urlencoded
                Content-Length:11
                q=smuggling


        该Transfer一Encoding首标可以被用于指定该消息体的用途分块编码。这意味着消
息正文包含一个或多个数据块。每个块均由以字节为单位的块大小(以十六进制表
示)组成,后跟换行符,然后是块内容。

        该消息以大小为零(0)的块终止。

例如:
                POST /search HTTP/1.1
                Host:normal-website.com
                Content-Type:application/x-www-form-urlencoded
                Transfer-Encoding:chunked

        前端和后端系统就请求之间的边界达成一致至关重要,攻击者可能能够发送不明确的请求,前端和后端系统对此进行不同的解释

        攻击者导致其前端请求的一部分被后端服务器解释为下一个请求的开始。是的 有效地预置到下一个请求,因此可能会干扰应用程序处理该请求的方式。这是一个请求 走私袭击,它可能产生毁灭性的后果。

        由于 HTTP 规范提供了两种不同的方法来指定 HTTP 消息的长度,因此单个 消息以同时使用这两种方法,以便它们相互冲突。HTTP 规范尝试通过以下方式防止此问题 声明如果两个标题都是 存在,则应忽略标头。这可能足以避免歧义 当只有一台服务器在运行时,但当两台或多台服务器链接在一起时则不然。在这种情况下,可能会出现两个问题

原因:Content-Length Transfer-Encoding Content-Length

  • 某些服务器不支持请求中的标头。Transfer-Encoding
  • 如果出现以下情况,则可以诱导某些支持标头的服务器不处理它 标头以某种方式被混淆。Transfer-Encoding

        如果前端服务器和后端服务器的行为与(可能混淆的)标头不同,则它们可能会在连续请求之间的边界上存在分歧,从而导致请求走私漏洞。Transfer-Encoding

 

 

这篇关于request smuggling漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/315482

相关文章

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

Vue3上传图片报错:Current request is not a multipart request

当你看到错误 "Current request is not a multipart request" 时,这通常意味着你的服务器或后端代码期望接收一个 multipart/form-data 类型的请求,但实际上并没有收到这样的请求。在使用 <el-upload> 组件时,如果你已经设置了 http-request 属性来自定义上传行为,并且遇到了这个错误,可能是因为你在发送请求时没有正确地设置

使用http-request 属性替代action绑定上传URL

在 Element UI 的 <el-upload> 组件中,如果你需要为上传的 HTTP 请求添加自定义的请求头(例如,为了通过身份验证或满足服务器端的特定要求),你不能直接在 <el-upload> 组件的属性中设置这些请求头。但是,你可以通过 http-request 属性来自定义上传的行为,包括设置请求头。 http-request 属性允许你完全控制上传的行为,包括如何构建请求、发送请

Java反序列化漏洞-TemplatesImpl利用链分析

文章目录 一、前言二、正文1. 寻找利用链2. 构造POC2.1 生成字节码2.2 加载字节码1)getTransletInstance2)defineTransletClasses 2.3 创建实例 3. 完整POC 三、参考文章 一、前言 java.lang.ClassLoader#defineClass defineClass可以加载字节码,但由于defineClas

code: 400, msg: Required request body is missing 错误解决

引起这个错误的原因是,请求参数按照get方式给。 应该给json字符串才对 补充: 1. @RequestBody String resource 加@RequestBody必须给json字符串,否则会报错400,记如标题错误。 不加这个的进行请求的话,其实post和get就没有什么区别了。 2. List<String> indexCodes=(List<String>)json.

FORM的ENCTYPE=multipart/form-data 时request.getParameter()值为null问题的解决

此情况发生于前台表单传送至后台java servlet处理: 问题:当Form需要FileUpload上传文件同时上传表单其他控件数据时,由于设置了ENCTYPE=”multipart/form-data” 属性,后台request.getParameter()获取的值为null 上传文件的参考代码:http://www.runoob.com/jsp/jsp-file-uploading.ht

【vulhub】thinkphp5 2-rce 5.0.23-rce 5-rce 漏洞复现

2-rec 1.启动环境  cd /.../vulhub/thinkphp/2-rce # cd进入2-rce靶场文件环境下docker-compose up -d # docker-compose启动靶场docker ps -a # 查看开启的靶场信息 2.访问192.168.146.136:8080网页 3.构造payload http