Web Hacking

mardi 31 mars 2020, 11:44  #1
Web Hacking : potentielle vulnerabilité de deserialisation
l1krust
  • 1 posts

Bonjour,
Je suis actuellement en train de tester une API web codée en C# et je soupçonne une vulnérabilité liée a la déserialisation de donnée json venant de l’utilisateur.
Le scénario est le suivant :
Il y a une API qui permet de modifier un objet : PUT https://mon-application/object
body = { "id" :"123", "Attributes" : {"attr1" :"val1"}}
Il y a ensuite une API : GET https://mon-application/object/123 qui retourne l’objet dont l’id est 123 (celui que j’ai modifié).
J’ai effectué différents tests en modifiant le champs "Attributes" :
Valeur du champs Attribute lors du PUT // Objet retourné lors du GET
"Attributes" : {"_type" :"null","AAAA" :"BBBBB"} // { "id" :"123", "Attributes" : {"_type" :"null", "AAAA" :"BBBBB"}}
"Attributes" : {"$type" :"null","AAAA" :"BBBBB"} // { "id" :"123", "Attributes" : {"AAAA" :"BBBBB"}}
"Attributes" : {"$type" :"Date","date" :"2012-04-23T18:25:43.511Z"} // { "id" :"123", "Attributes" : { "date" : "04/23/2012 18:25:43"}}
"Attributes" : {"$type" :"BLABLA","date2" :"2014-04-23T18:25:43.511Z"} // { "id" :"123", "Attributes" : {"date2" : "2014-04-23T18:25:43.511Z}}
Je soupçonne une vulnérabilité car le champs $type n’est pas inclus dans la réponse ce qui me laisse supposer que la valeur a été interprétée par l’application. Surtout qu’avec le type "Date", la date que je fournis dans la valeur semble aussi interprétée.
Voila ou j’en suis. Je sens qu’il y a un truc à creuser, peut etre une RCE, mais je ne sais pas trop vers où me diriger. En plus, je ne suis pas vraiment familier avec cette vulnérabilité, ni avec le langage C#.
J’aimerai avoir quelques pistes afin de me permettre d’avancer un peu la dessus. Je suis preneur de toute idée.
Merci d’avance