Ebryx / AES-Killer

Burp Plugin to decrypt AES encrypted traffic on the fly
MIT License
634 stars 120 forks source link

json requests do not parse correctly #12

Open arthusu opened 3 years ago

arthusu commented 3 years ago

When configured:

2021-07-29 20_12_37-Burp Suite Professional v2021 7 2-8935 (Early Adopter) - prueba - licensed to Co

It decrypts but does not parse correctly causing requests not to be processed. Double quotation marks cause problems:

2021-07-29 19_59_38-Burp Suite Professional v2021 7 2-8935 (Early Adopter) - prueba - licensed to Co

If I modify with single quotes it works fine:

2021-07-29 20_09_45-Burp Suite Professional v2021 7 2-8935 (Early Adopter) - prueba - licensed to Co

Is there any way to make this pair up correctly? I really appreciate the creation of the extension it's great.

d3vilbug commented 3 years ago

This is what causing issues to you ...... as Burp doesn't provide any interface for JSON parameter update like normal POST/GET parameter update so have written a manual parser that is parsing JSON as highlight below

image

where I am getting indexes on the basis of " like

body = {"data":"abc", "key":"123"}

and the above code is parsing like below

int _fi = messageBody.indexOf(_params[i]);
if(_fi < 0) { continue; }

_fi = _fi + _params[i].length() + 3;
int _si = messageBody.indexOf("\"", _fi);

int _fi = body.indexof("data"); _fi = _fi + _fi.length + 3 // which is the index of data variable's value abc

and after this getting the closure of the data variable's value by checking the next occurrence of " in the string

So when you will change ' to " it will only parse till the first occurrence of " (DQ) and hence no solution as you have to customize it according to this special case.

d3vilbug commented 3 years ago

a quick solution for this

parse it by searching the next occurrence of ", instead of " so in this way you can work with double quote too

But it might disturb your flow ... where your parameter is at the end / last and the code will not be able to find the next ", so need to add both cases here for such cases

d3vilbug commented 3 years ago

@arthusu

replace the highlighted line with this snippet and compile again .....

 int _si = messageBody.indexOf("]\",", _fi);
if(_si < 0){
     _si = messageBody.indexOf("\"", _fi);
}