g4nkd/cdhound

GitHub: g4nkd/cdhound

一个用于自动化检测 Web 缓存欺骗漏洞的 Python 扫描工具,解决缓存层配置不一致导致的安全风险。

Stars: 35 | Forks: 4

# cdhound 一个用于测试 Web 缓存欺骗漏洞的工具,通过利用 Web 服务器和 CDN 缓存对 URL 路径、分隔符、静态资源和请求头的处理差异来工作。它自动化了检测和利用这些不匹配,使安全研究人员和渗透测试人员更容易评估 Web 应用程序的缓存层。 请求使用随机化参数(`?`),因此每次测试都会生成唯一的缓存键——避免污染活动缓存,并使测试对合法流量的影响最小。 ## 功能 - **路径分隔符测试(PD)**:识别源服务器和缓存如何处理分隔符的差异。 - **源服务器规范化(OSN)**:测试源服务器对 URL 路径的规范化与缓存不同的漏洞。 - **缓存服务器规范化(CSN)**:利用缓存服务器与源服务器在 URL 路径规范化上的差异。 - **文件名缓存规则(FNCR)**:测试与常见文件(如 `robots.txt`、`index.html`)缓存相关的漏洞。 - **路径头覆盖(PHO)**:注入 HTTP 头(`X-Original-URL`、`X-Rewrite-URL`、`X-Forwarded-*` 等)以使 CDN 缓存的路径与源服务器实际提供的路径不同步。 - **跨 CDN 缓存识别**:识别 Cloudflare、Fastly、Akamai、Vercel、Varnish、Nginx 等缓存状态,而不仅限于 `X-Cache`。 - **基于标记的泄露检测**:从认证响应中提取敏感令牌(邮箱、UUID、JWT、会话 ID),并在匿名响应中再次出现时确认泄露。 - **静态资源检测**:自动检测静态资源目录并使用它们来构造测试 URL。 - **多线程测试**:使用多线程加速测试过程。 - **详细输出**:提供每个测试的详细信息,包括响应头和缓存行为。 ## 安装 1. 将仓库克隆到本地机器: git clone https://github.com/g4nkd/cdhound.git 2. 进入项目目录: cd cdhound 3. 安装所需依赖: pip install -r requirements.txt ### 选项 - `-H, --header`:为请求添加自定义认证头。可重复使用(例如 `-H "Cookie: ..."` `-H "Authorization: Bearer ..."`)。 - `-fh, --filter-header`:仅测试其认证响应包含此头/值的 URL。 - `-w, --wordlist`:分隔符自定义词表路径。 - `-e, --extensions`:要测试的文件扩展名列表(默认:`.js,.css,.png`)。 - `-s, --static-files`:在 FNCR 和 PHO 中探测的额外静态文件名/路径。 - `-T, --technique`:指定使用的技术(`pd`、`osn`、`csn`、`fncr`、`pho`)。 - `-r`:OSN/CSN 测试的递归深度(默认:1)。 - `-v, --verbose`:启用详细输出。 - `-t, --threads`:使用的线程数(默认:10)。 - `-p, --proxy`:为请求使用代理(例如 `http://127.0.0.1:8080`)。 - `--delay`:认证请求与匿名重试之间的秒数(默认:0.3)。 - `--markers`:要在响应中监视的额外字符串(以逗号分隔),如泄露的令牌、邮箱等。 - `--sensitive-path`:在 PHO 覆盖头中注入的路径(默认:目标 URL 路径)。 ### 示例命令 1. **使用默认设置的基本测试**: python cdhound.py https://example.com/profile -H "Cookie: XXX" 2. **使用自定义分隔符和扩展名的测试**: python cdhound.py https://example.com/my-account -H "Cookie: XXX" -w delimiters.txt -e .js,.css,.html 3. **使用特定技术(OSN)的测试**: python cdhound.py https://example.com/profile -H "Cookie: XXX" -T osn -r 2 4. **针对敏感端点的路径头覆盖**: python cdhound.py https://example.com/api/users/me -H "Cookie: XXX" -T pho --markers "user@example.com" 5. **使用代理和详细输出的测试**: python cdhound.py https://example.com/account -H "Cookie: XXX" -p http://127.0.0.1:8080 -v ## 技术详解 ### 路径分隔符测试(`pd`) 该技术测试分隔符(如 `;`、`,`、`#`)在源服务器和缓存中如何被解释的差异。如果源服务器将某个字符视为分隔符而缓存不视为分隔符,就可以构造一个 URL,使两者对其解释不同,从而导致缓存欺骗。 ### 源服务器规范化(`osn`) OSN 利用源服务器对 URL 路径的规范化与缓存之间的差异。例如,如果源服务器解析路径遍历序列(如 `/static/..%2fprofile`)而缓存不解析,攻击者可以构造一个 URL 从源服务器获取敏感信息,随后该信息被缓存并提供给其他用户。 ### 缓存服务器规范化(`csn`) CSN 是 OSN 的反向情况。它利用缓存对 URL 路径的规范化与源服务器不同的情况。通过构造一个缓存与源服务器解释不同的 URL,攻击者可使缓存存储并提供敏感信息。 ### 文件名缓存规则(`fncr`) 该技术针对基于特定文件名的缓存规则(如 `robots.txt`、`index.html`)。通过将这些文件名附加到动态 URL,攻击者可使缓存将动态内容当作静态文件存储并提供。 ### 路径头覆盖(`pho`) PHO 测试基于头信息重写内部请求路径的中间件/框架,如 `X-Original-URL`、`X-Rewrite-URL` 或 `X-Forwarded-URI`。当源服务器尊重此类头时,CDN 基于可见的(看似静态的)路径键缓存,而源服务器则根据头指定的路径提供内容——这允许攻击者将认证响应缓存到攻击者控制的 URL 下。 ## 实验环境 你可以在以下实验环境中测试该工具: - [PortSwigger Labs](https://portswigger.net/web-security/all-labs#web-cache-deception) - [HackTheBox Web Challenge — CDNio](https://app.hackthebox.com/challenges/CDNio?tab=play_challenge) 有关 Web 缓存中毒和欺骗的更多信息,请参考 [PortSwigger Web Security Academy](https://portswigger.net/web-security/web-cache-poisoning) 和 [Gotta Cache 'em all — bending the rules of web cache exploitation](https://www.youtube.com/watch?v=70yyOMFylUA)。
标签:Akamai缓存, CDN安全, Cloudflare缓存, Email泄露, Fastly缓存, HTTP头注入, JWT泄露, Nginx缓存, URL规范化, UUID泄露, Varnish缓存, Vercel缓存, Web安全, X-Forwarded-For, X-Original-URL, X-Rewrite-URL, 令牌泄露, 会话ID泄露, 参数随机化, 多线程扫描, 安全扫描, 文件缓存规则, 时序注入, 标记泄露检测, 源站规范化, 缓存服务器规范化, 缓存欺骗, 缓存污染, 蓝队分析, 跨CDN检测, 路径分隔符测试, 路径头覆盖, 逆向工具, 静态资源检测