AJAX应用需要服务器上的许多API,这些API给出的响应是javascript所解析和解释的xml或json数据 |
AJAX应用中的安全威胁:服务器API未能检查发请求的浏览器的授权;客户端数据未验证是否符合逻辑或遵守业务规则 |
攻击步骤: 第一步:观察实时的AJAX请求,使用firebug net,理解web应用底层逻辑 第二步:识别应用中的javascript,注意,js组件的url是相对页面的原始url而言的 第三步:从AJAX活动回溯到源代码 第四步:截获和修改AJAX请求,使用webscarab——proxy——Manual Edit——Intercept requests 第五步:截获和修改服务器响应,使用webscarab——proxy——manaual Edit——Intercept response 第六步:使用注入数据破坏AJAX 1)注入xml http://www.owasp.org/index.php?Testing_for_XML_Injection <message user = "jsmith">are you going to the show?</message> <message user = "jsmith"><hr width="200">are you going to the show?</message> 2)注入json(JSON数据结构式从标签到元素的映射) {"menu": {"address":{"line1":"YOUR_INPUT_HERE","line2":" ","line3": " "}}} {"menu": {"address":{"line1":"",arbitrary:alert('JavaScript Executed'),continue:"","line2":" ","line3": " "}}} 第七步:修改客户端变量,方法或对象 |
检查跨域访问:确保应用不依赖于不可信的外部脚本,只有很少的网站需要调用来自其他站点的javascript。在网站上包含这样的脚本会隐式地赋予它们在你的域中执行javascript代码的权限。这使得第三方能够编辑你的应用的外观和功能,并访问你的用户的cookie |
如果应用在响应请求时返回了秘密的但却未加保护的JSON数据,那么就容易遭受JSON劫持攻击,这种攻击只适用于JSON串行化数据(串行化:把变量包括对象,转化成连续byte数据,可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据。 JSON串行化是一种以容易解析的格式来传输数据的方式,javascript可以使用内置的eval()函数来解析JSON,但使用eval()函数而不做任何其他验证是可能会被代码注入所利用的缺点。 |
AJAX攻击
最新推荐文章于 2022-04-12 23:13:01 发布