Sploitus

Exploit for CVE-2026-18963

kitploit ┬╖ 2026-08-28

Exploit Code

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

![](https://assets.kitploit.com/production/public/readmes/53374/58c8df6d8666ef5702e67a63fc00fc71f6966b9c049cc51652a2641ecc870e12/388698cc1796fea5f76221a423ee6c01ec591c3d3e41f0a9a4a3aac260cfd087-display-v1.webp)

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



# рдЕрд╕реНрд╡реАрдХрд░рдг

рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  * рдЕрдзрд┐рдХреГрдд рд╕реБрд░рдХреНрд╖рд╛ рдореВрд▓реНрдпрд╛рдВрдХрди
  * рд░рдХреНрд╖рд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг
  * рд╢реИрдХреНрд╖рд┐рдХ рдЕрдиреБрд╕рдВрдзрд╛рди



рдЗрд╕ рдЯреВрд▓ рдХреЛ рдХрд┐рд╕реА рднреА рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╡рд┐рд░реБрджреНрдз рди рдЪрд▓рд╛рдПрдВ рдЬрд┐рд╕рдХреЗ рдЖрдк рд╕реНрд╡рд╛рдореА рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рдЬрд┐рд╕рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдЦрд┐рдд рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдирд╣реАрдВ рд╣реИред рддреГрддреАрдп-рдкрдХреНрд╖ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЕрдирдзрд┐рдХреГрдд рдЙрдкрдпреЛрдЧ рдЕрд╡реИрдз рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдЕрдиреБрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЛрдИ рджрд╛рдпрд┐рддреНрд╡ рдирд╣реАрдВ рдорд╛рдирддрд╛ред