实验室:通过HTTP/2请求隧道绕过访问控件
专家
该实验室很容易受到要求走私的影响,因为前端服务器降低了HTTP/2请求,并且无法充分消毒传入的标头名称。要解决实验室,请访问管理面板/行政
作为行政人员
用户和删除卡洛斯
。
前端服务器不重用与后端的连接,因此不容易受到经典请求走私攻击的影响。但是,它仍然很容易请求隧道。
解决方案
发送得到 /
请求打burp burp。扩展检查员的请求属性部分并将协议更改为HTTP/2。
使用检查员,将任意标题附加到请求的末尾,然后尝试走私A主持人
标题名称如下:
姓名
foo:酒吧\ r \ n主持人:ABC
价值
xyz
观察到错误响应表明服务器处理您的注射主机,证实实验室容易通过标头名称注入CRLF。
在浏览器中,请注意实验室的搜索功能反映了您的搜索查询。发送最新获取 /?search =您的搜索 - Query
请求Burp Repeater并将其升级到HTTP/2请求。
在Burp Repeater中,右键单击请求并选择更改请求方法。发送请求并注意,搜索功能在发送时仍然有效搜索
正文中的参数邮政
要求。
添加任意标头并使用其名称字段注入大型内容长度
标题和另一个搜索
参数如下:
姓名
foo:酒吧\ r \ n内容长度:500\ r \ n\ r \ n搜索= x
价值
xyz
在请求的主体中(在消息编辑面板中)将任意字符附加到原始字符搜索
参数直到请求更长内容长度
标题。
发送请求并观察到响应现在反映了前端服务器附加到您请求的标题:
0搜索结果'x:xyz内容长度:644 cookie:session =您的session-cookie x-ssl-verified:0 x-ssl-client-cn:null x-frontend-key:your-nique-key
请注意,这些似乎是用于客户端认证。
将请求方法更改为头
并编辑您的恶意标题,以便将其偷运到管理面板的请求。包括三个客户端身份验证标头,确保如下更新其值:
姓名
foo:酒吧\ r \ n\ r \ n获取 /管理员http /1.1\ r \ nX-SSL验证:1\ r \ nX-SSL-CLIENT-CN:管理员\ r \ nX-Frontend-Key:您的唯一键\ r \ n\ r \ n
价值
xyz
发送请求并观察到您会收到错误响应,说收到不够的字节。这是因为内容长度
所请求的资源比您要阅读的隧道响应更长。
更改:小路
伪标头,以便指向端点,该端点返回较短的资源。在这种情况下,您可以使用/登录
。
再次发送请求。您应该看到嵌套在主要响应主体中的隧道HTTP/1.1响应的开始。
在响应中,找到删除Carlos的URL(/admin/delete?用户名= carlos
),然后相应地更新您的隧道请求中的路径并将其重新发送。尽管您可能会遇到错误响应,但删除了Carlos并解决了实验室。