menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right 001-Http 请求走私种类 chevron_right 002-CL-CL.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    002-CL-CL.md
    1.05 KB / 2021-07-17 00:01:42
        ### CL-CL
    
    假设中间的代理服务器和后端的源站服务器在收到类似的请求时,都不会返回400错误,但是中间代理服务器按照第一个`Content-Length`的值对请求进行处理,而后端服务器按照第二个`Content-Length`的值进行处理。这样有可能引发请求走私。
    
    ```bash
    POST / HTTP/1.1\r\n
    Host: example.com\r\n
    Content-Length: 8\r\n
    Content-Length: 7\r\n
    
    12345\r\n
    a
    
    ```
    
    前端代理服务器获取的数据包长度为 8,将以上数据包完整转发至后端服务器,但后端服务器仅接收长度为7的数据包。因此读取前7个字符后,后端服务器认为本次请求已经读取完毕,然后返回响应。
    
    但此时缓冲区仍留下一个a,对于后端服务器来讲,这个a是下一个请求的一部分,但没传输完毕。如果此时传来一个请求
    
    ```
    GET / HTTP/1.1
    HOST: test.com
    
    ```
    
    那么前端服务器和后端服务器将重用TCP连接,使后端实际接收的请求为:
    
    ```
    aGET / HTTP/1.1
    HOST: test.com
    
    ```
    
    从而实现了一次HTTP请求攻击。
    
    
    
    links
    file_download