随手记
二、探秘HTTP解析器的黑暗面:如何利用不一致性制造网络安全漏洞
如果使用不同语言的函数解析 HTTP 消息trim(),则可能会发生 HTTP Desync 攻击。
使用 Node.js 绕过 Nginx ACL 规则
/admin\x0a当Node.js 服务器收到URI 时,该字符\xa0将被删除,从而允许成功检索端点/admin。
使用 Flask 绕过 Nginx ACL 规则
Flask 从 URL 路径中删除字符\x85, \xA0, \x1F, \x1E, \x1D, \x1C, \x0C, \x0B, 和\x09,但 NGINX 不会。
可以通过\x85在路径名末尾添加字符来规避 ACL 保护。
使用 Spring Boot 绕过 Nginx ACL 规则
Spring 会从 URL 路径中删除字符\x09和\x3B,但 Nginx 不会。
通过 PHP-FPM 集成绕过 Nginx ACL 规则
当两个.php文件位于 HTTP 请求的同一路径名中时,PHP 将匹配第一个文件,忽略斜杠之后的所有内容。由于 Nginx 配置为阻止对特定端点的请求/admin.php,因此可以通过执行以下请求来访问 admin.php 文件:admin.php/inmdex.php
绕过AWS WAF ACL
在上面的示例中,如果请求标头中包含 SQL 注入负载X-Query,则 AWS WAF 会识别 SQL 注入尝试并使用403 ForbiddenHTTP 状态代码进行响应。这可以防止请求转发到后端,从而有效阻止通过 SQL 注入攻击对应用程序数据库的任何潜在利用。
使用行折叠绕过 AWS WAF ACL
错误的路径解析导致服务端请求伪造 @evildomain.com/
Spring Boot 上的 SSRF 通过不正确的路径名解释 ;1337/api/v1/me
@0xa9fea9fe/
获取 EC2 元数据的结果有效负载HTTP 异步缓存中毒攻击
该漏洞是由于主机标头解释不一致而引起的。如果缓存服务器错误地将忽略的字节作为标头名称的一部分,将其视为无效的主机标头,而 S3 将其解释为有效的主机标头,则可以在易受攻击的网站上缓存任意存储桶响应。
GET / HTTP/1.1
[\\x1d]Host: evilbucket.com
Host: example.bucket.com
Connection: close
首先,缓存服务器检查标头\\x1dHost: evilbucket.com并将其视为任何其他未加密的标头;
随后,缓存服务器将正确地将example.bucket.com标头解释为有效的主机标头,从而导致最终的缓存响应与该主机值相关联。
到达 S3 存储桶后,标头\\x1dHost: evilbucket.com将被错误地解释为有效的主机标头,而预期的Host: example.bucket.com标头将被忽略。AWS 的这种误解将导致获取恶意标头的关联存储桶。
最终结果是任意内容的页面完全缓存中毒。
三、【翻译】一个关于Synack红队目标的有趣的RCE !(019)