Callback自定义测试

概述:在浏览器中存在着同源策略,所谓同源是指域名、协议、端口相同。当使用Ajax异步传输数据时,非同源域名之间会存在限制。其中有一种解决方法是JSONP(JSON with Padding),基本原理是利用了HTML里<script></script>元素标签,远程调用JSON文件来实现数据传递。JSONP 技术中一般使用 Callback(回调函数)参数来声明回调时所使用的函数名,这里往往存在安全问题,由于没有使用白名单的方法进行限制Callback的函数名,导致攻击者可以自定义Callback内容,从而触发XSS等漏洞。

测试方法

一、攻击者在测试前,使用Brup Suite的爬虫功能对网站进行爬取,筛选出带有Callback或者jsonp参数的请求,对请求响应的Content-Type进行判断,如果Content-Type为text/html,则进行下一步,接着攻击者对Callback参数进行分析,如果Callback参数允许攻击插入HTML标签,则存在漏洞。

 

 

 二、查看callback参数是否存在过滤及可控,这时我们需要在callback参数值前追加一些文本类的HTML标签,不直接使用script等标签是避免waf等防护设备的检测。我们这里使用的HTML标签是一级标题标签<h1>。根据Response的内容,我们可以了解到callback参数不存在过滤及可控。进一步测试发现info参数对Response的输出内容没有影响,删除掉info参数,精简URL。

 

三、将callback参数更换成带有恶意行为的HTML标签,进行利用(例如<img onerror=alert(document.cookie) src=x />jsop1)

posted @ 2020-10-21 17:16  Samzhang1  阅读(318)  评论(0编辑  收藏  举报