跳转至

Insecure Authorization Restriction

不安全的授权限制

描述

不安全的授权限制是指服务器端限制中的弱点,这些弱点可能被攻击者通过 HTTP 请求操作技术加以利用。此漏洞允许攻击者绕过访问控制,从而导致对资源的未授权访问和权限提升,并允许未授权的用户检索、创建、更新或删除敏感数据。

例如,针对 Web 服务器上不安全的授权限制进行攻击将涉及以下技术:

  • HTTP 请求方法模糊测试:在服务器上测试无效的、格式错误的或非预期的 HTTP 方法。
  • HTTP 请求路径模糊测试:通过变形、添加或删减来操作 HTTP 请求路径。
  • HTTP 请求查询参数模糊测试:添加、删除或更改原始查询参数。
  • HTTP 请求标头模糊测试:添加常用标头、删除标头或添加代理标头。

所有这些技术都针对服务器逻辑中的缺陷、漏洞或错误。

  import requests

  response = requests.get("http://www.some-url.com/unauthorized_path")

  '''if we have some unauthorized path that gets us a 403 code,
  we can try something like adding a query parameter like "debug=true" to see if we can
  trick the server by exploiting some mistake.'''

  response = requests.get("http://www.some-url.com/unauthorized_path?debug=true")

  '''Might get us the resource we want''

建议

组织应实施适当的访问控制,并强制执行严格的 HTTP 请求验证,以降低由于不安全的授权限制所带来的 HTTP 漏洞风险。这涉及拥有强大的服务器端逻辑来管理关于所接收到的 HTTP 方法、标头、查询参数和路径的规则。

以下是一些建议:

  • 限制 HTTP 方法:限制哪些 HTTP 方法可以访问您的各个视图/资源。
  • 清理查询参数:清理每个请求的查询参数,并确保只有有限的一组参数能够影响服务器的逻辑。
  • 限制标头:限制哪些标头可以影响您的代码。对哪些标头/方法组合能够在服务器端进行更改使用严格的规则,并确保您的逻辑不依赖于很容易在互联网上找到的标头值(例如 Google 的 User-Agent)。
  • 强大的路径解析:实施带有严格规则的强大路径解析,并拒绝不符合您标准的请求。

python # 此路由仅允许 GET 和 POST 方法 @app.route('/limiting_method_usage', methods=['GET', 'POST']) def limiting_method_usage(): if request.method == 'GET': return jsonify({"message": "This is a GET request"}) elif request.method == 'POST': data = request.json return jsonify({"message": "This is a POST request", "data": data}) # 仅使用你期望的请求头 @app.route('/limiting_header_values') def limiting_header_values(): expected_header = request.headers.get('Expected-Header') ### 根据预期请求头的逻辑

链接

标准

  • OWASP_ASVS_L1:
    • V4_1_1
    • V4_1_2
    • V4_1_3
    • V4_1_5
    • V5_1_1
    • V5_1_2
    • V5_1_3
    • V5_1_4
    • V5_2_2
  • OWASP_ASVS_L2:
    • V4_1_1
    • V4_1_2
    • V4_1_3
    • V4_1_5
    • V5_1_1
    • V5_1_2
    • V5_1_3
    • V5_1_4
    • V5_2_2
  • OWASP_ASVS_L3:
    • V4_1_1
    • V4_1_2
    • V4_1_3
    • V4_1_5
    • V5_1_1
    • V5_1_2
    • V5_1_3
    • V5_1_4
    • V5_2_2
  • PCI_STANDARDS:
    • REQ_2_2
  • HIPAA_CONTROLS:
    • SECURITY221
    • SECURITY212
    • SECURITY213