随着网络技术的飞速发展,攻击手段也日新月异,使得企业面临着前所未有的安全挑战。为了有效应对这些威胁,我们必须从攻击者的视角出发,深入了解其攻击手法。本次,锦行科技安全研究团队将为您深入一种常见的攻击手法——HTTP请求。

HTTP请求是一种攻击者常用的攻击手段,能够绕过企业的安全控制,未经授权访问敏感数据,直接危害其他应用程序用户。那么,什么是HTTP请求呢?
HTTP请求产生的原因与HTTP协议的发展密切相关。在HTTP1.1后,为了建立tcp持续通道,提高数据传输效率,减少了阻塞,出现了Connection: Keep-Alive和HTTP Pipelining(管线化)字段。这也为攻击者提供了可乘之机。
当企业前端与后端服务器在处理数据包边界时存在分歧,攻击者就可以利用这一分歧进行HTTP请求。比如,前端可能考虑的是内容长度头部(Content-Length)值作为数据包结束的边界,而后端可能优先考虑的是Transfer-Encoding头部。这就为攻击者提供了一个的机会。
攻击者主要利用两种方式进行攻击:
一是利用CL不为0的GET请求。假设前端代理服务器允许GET请求携带请求体,而后端服务器不允许。攻击者通过发送特定格式的请求,成功从前端的视角“”一个数据包。
二是CL-CL攻击。在RFC7230规范中,当服务器收到的请求中包含两个Content-Length且值不应返回错误。但总有服务器不严格遵守规范。攻击者利用这一漏洞,通过发送两个Content-Length值不同的请求,成功绕过前后端服务器的安全控制。
为了应对这种攻击手法,企业需要深入了解自己的网络架构和服务器配置,确保前后端服务器在处理数据包边界时保持一致。加强安全培训,提高员工的安全意识,定期更新和修补系统漏洞,以确保企业的网络安全。
在网络攻击的世界里,有一种特殊的攻击手法令人瞩目。攻击者巧妙地构造了一种特殊的请求,这种请求看似平常,却隐藏着巨大的风险。
想象一下,一个攻击者向服务器发送了一个看似正常的HTTP请求,但其中隐藏着玄机。这个请求中的数据包长度声明存在问题,导致后端服务器在处理时陷入困境。例如,攻击者可能会发送一个包含两个不同数据长度声明的请求,使得后端服务器在处理时混淆,从而引发错误。当正常的用户请求进入服务器时,这些混乱的数据就会被拼凑在一起,攻击者的阴谋就得逞了。
在进行这些攻击时,攻击者通常会利用一些工具,如BurpSuite。为了确保攻击的成功,攻击者需要注意一些细节,比如取消BurpSuite的自动更新Content-Length功能。
注意:需要分两次发送请求
3.5 TE-TE
前端服务器在接收到带有第一个Transfer-Encoding请求头的数据包时开始处理,而后端服务器则负责对第二个Transfer-Encoding请求头进行解读。
构造数据包过程
目标主机:example
包含以下内容的数据包即将出发:
```
Host: example
Content-length: 3
Transfer-Encoding: chunked
Transfer-encoding (注意这里的拼写错误): error
chunkedcode
0
```
这个数据包巧妙之处在于它使用了两个Transfer-Encoding字段,且第二个字段的值为错误拼写。前端服务器将优先处理第一个正确的Transfer-Encoding字段,因此整个请求会被正常转发到后端服务器。而后端服务器则会关注第二个字段,由于该字段是非标准值,根据RPC规范,服务器将选择依赖Content-Length字段进行处理。这样一来,原本的一个请求被巧妙地拆分为两个。
重要提示:发送前请确保取消了BurpSuite的自动更新Content-Length功能。
攻击扩展
4.1 smuggling + reflected xss
单纯的UA处的xss可能看起来危害不大,但如果结合请求攻击,其威胁程度会大大提升。以下是一个精心构造的数据包示例,只需发送一次:
```
POST / HTTP/1.1
Host: acc01f221f0e5490815e020800d200d8.web-security-academy
Connection: close
... (其他字段) ...
User-Agent: (这里藏有恶意代码) ... 浏览器伪装信息 ...
... (其他字段) ...
Cookie: session=k3jXNrcQioQOdiLYyRXPJVf5gHZykEl8
Content-Type: application/x-www-form-urlencoded
Content-Length: 150
Transfer-Encoding: chunked
0
GET /postpostId=3 HTTP/1.1
网络攻击:攻击与重定向钓鱼的巧妙结合
在数字化世界中,网络攻击的手法日新月异,其中攻击与重定向钓鱼的结合,成为了一种独特的攻击方式。将深入这种攻击方式的具体操作及其背后的原理。
我们来看一个具体的攻击实例。攻击者发送一个数据包,内容如下:
POST / HTTP/1.1
Host: ac501fd21fceba4f80de460145.web-security-academy
Connection: close
...(中间省略部分内容)
这个数据包被发送到特定的服务器,然后访问该网站的任意页面,用户都会被重定向到/postpostId=4。这种重定向的过程,就是典型的“钓鱼”行为,引诱用户进入攻击者预设的陷阱。
接下来,攻击者可以利用攻击来捕捉用户的请求数据包,进而窃取cookie。例如,在发送评论处的api接口构造请求包时,攻击者会发送一个包含用户会话信息的数据包,以此来窃取用户的cookie。这样,攻击者就能够获取用户的敏感信息,从而进一步实施攻击。
为了更具体地说明这一过程,让我们看一个实际的例子。攻击者构造一个POST请求,发送到特定的服务器接口。这个请求包含了用户的会话信息和其他敏感数据。当服务器响应这个请求时,攻击者就可以获取到用户的会话cookie,进而冒充用户进行其他操作。
这种攻击方式的危害不容忽视。通过攻击与重定向的结合,攻击者可以在用户毫无察觉的情况下窃取用户的信息,甚至进一步控制用户的账户。对于网站管理员和网络安全专家来说,了解并防范这种攻击方式至关重要。
网络攻击的手法不断演变,攻击与重定向钓鱼的结合是其中的一种。为了保障网络安全,我们需要不断提高警惕,了解的攻击手法,并采取有效的措施进行防范。用户也需要增强安全意识,避免点击可疑链接,保护好自己的个人信息。在计算机网络通信中,当Content-Length和Transfer-Encoding两个HTTP头部同时存在于同一请求包时,Transfer-Encoding通常会优先被处理。一旦Transfer-Encoding头部格式出现错误,前端服务器和后端服务器在请求时可能会产生分歧。最近,在某个站点发现了CLTE(Content Length and Transfer Encoding)的问题,即在请求包中Transfer-Encoding 和":"之间多了一个空格,导致该字段成为非标准值。前端服务器依据RPC规范优先处理Content-Length,而后端服务器却没有严格遵守RPC规范,而是根据非标准的Transfer-Encoding进行处理。
关于恶意请求,用户的正常请求被非法拼接至X字段,由于X并非标准请求头,因此被忽略。攻击者巧妙地利用这一点,将用户的cookie字段拼接在请求上。在Burp Collaborator Client上,攻击者甚至可以窃取到用户的cookie。
对于测试工具而言,研究者可以通过burpsuite查找请求包,通过特定的操作来确认是否存在CLTE漏洞。一旦确定存在漏洞,就可以使用特定的Turbo Intruder脚本来进行攻击。该脚本会发送带有特定前缀的请求,通过返回的状态码来判断是否存在HTTP漏洞。
修复此类问题的方法有几种:
1. 前端服务器需要对输入进行规范化处理,确保所有的请求头都符合标准格式。
2. 采用HTTP 2.0协议,该协议对于传输层的问题有更严格的规范和处理机制。
3. 后端服务器应该丢弃所有不符合标准的请求,这样可以有效防止因非标准请求导致的安全问题。
这个漏洞的发现与利用展示了网络安全领域中的一项重要挑战。在实际的网络环境中,攻击者可能会利用此类漏洞进行各种恶意行为,如窃取用户信息、篡改数据等。对于网站运营者来说,确保服务器的安全性、对输入进行合理的处理以及采用安全的通信协议都是非常重要的。研究人员和开发者也需要持续关注此类问题,不断发现和改进安全措施,以应对日益复杂的网络安全挑战。