id: xff-403-bypass

info:
  name: X-Forwarded-For 403-forbidden bypass
  author: vavkamil
  severity: info
  description: Template to detect 403 forbidden endpoint bypass behind Nginx/Apache proxy & load balancers, based on X-Forwarded-For header.
  metadata:
    max-request: 3
  tags: fuzz

http:
  - raw:
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}
        Accept: */*
      - |
        GET / HTTP/1.1
        Host: {{Hostname}}
        Accept: */*
        X-Forwarded-For: 127.0.0.1, 0.0.0.0, 192.168.0.1, 10.0.0.1, 172.16.0.1
      - |
        GET /test.txt HTTP/1.1
        Host: {{Hostname}}
        Accept: */*
        X-Forwarded-For: 127.0.0.1, 0.0.0.0, 192.168.0.1, 10.0.0.1, 172.16.0.1

    matchers:
      - type: dsl
        dsl:
          - "status_code_1 == 403 && status_code_2 != 403"
          - "status_code_1 == 403 && status_code_3 != 403"
        condition: or
# digest: 4b0a004830460221009f64fea7400bcbc8877c50e4afb5483a30a05e2a2c7066ec486ebcd7943f0499022100b2e538bdc2f9f19c9ed3577d497c923a94f93e64439dcc71c68a56e0baaf5802:922c64590222798bb761d5b6d8e72950