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

相关文章

【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

【漏洞复现】赛蓝企业管理系统 GetJSFile 任意文件读取漏洞

免责声明:         本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测试时,可能会违反某些法律法规或服务协议。同时,未经授权地访问系统、网络或应用程序可能导致法律责任或其他严重后果。作者不对读者基于本文内容而产生的任何行为或后果承担

兔子-(PHP 5.3 and above) Please set 'request_order' ini value to include C,G and P (recommended: 'CGP'

由于在PHP最新的版本中增加了一个配置项目“request_order”,默认值为“GP”,这个存在一定的安全风险。这里我们建议用户将配置更改为“CGP” 可以在php的安装目录下找到php.ini配置目录,找到下面选项: request_order = "GP"  更改为 request_order = "CGP"   重启服务器后即可。 此

【python 爬虫】python如何以request payload形式发送post请求

普通的http的post请求的请求content-type类型是:Content-Type:application/x-www-form-urlencoded, 而另外一种形式request payload,其Content-Type为application/json import jsonurl = 'https://api.github.com/some/endpoint'payload