<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>程默的博客 &#187; JSONP</title>
	<atom:link href="http://blog.chacuo.net/tag/jsonp/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.chacuo.net</link>
	<description>web原理、web架构、web安全、web性能、服务器性能、服务器架构、服务器安全;你不能预知明天，但你可以利用今天。你不能样样顺利，但你可以事事尽力!</description>
	<lastBuildDate>Mon, 31 Aug 2020 15:33:40 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>京东商城Jsonp 资源越权限访问漏洞分析</title>
		<link>http://blog.chacuo.net/323.html</link>
		<comments>http://blog.chacuo.net/323.html#comments</comments>
		<pubDate>Fri, 28 Jun 2013 10:55:34 +0000</pubDate>
		<dc:creator>程默</dc:creator>
				<category><![CDATA[web安全]]></category>
		<category><![CDATA[JSONP]]></category>

		<guid isPermaLink="false">http://blog.chacuo.net/?p=323</guid>
		<description><![CDATA[最近比较忙，电脑一直有问题，还没有修理好。本来以前买个电脑才3000来块，现在刚好过保几个月，然后修下说要70 [...]]]></description>
				<content:encoded><![CDATA[<p>最近比较忙，电脑一直有问题，还没有修理好。本来以前买个电脑才3000来块，现在刚好过保几个月，然后修下说要700多，如果换配件要1000多。这个电脑现在买个新二手，应该也就千把块，够黑了。呵呵，不说这么些了。今天我们继续分析京东商城Jsonp使用漏洞之二，未对资源访问进行授权。</p>
<p>对于Jsonp漏洞，这里我就不细说了，详细可以看：<a href="http://blog.chacuo.net/295.html">Jsonp常见安全漏洞分析(京东商城Jsonp 漏洞分析)</a> ，从上面文章，我们知道jsonp是可以跨域名调用的。<font color="#0000ff"><u>这个漏洞是：没有授权网站，可以直接在该站点访问jsonp接口资源。</u></font><font color="#000000">可能有朋友会问题：“这个漏洞有什么影响呢？”，一般我们常见有：</font></p>
<blockquote><p><font style="background-color: #ffffff" face="Arial">1.对于存在漏洞的网站来说：jsonp资源给外部调用，浪费接口资源，也给调用带来压力</font></p>
<p><font style="background-color: #ffffff" face="Arial">2.利用者，可以通过jsonp获取网站资源，构造钓鱼站点，或者给用户发送钓鱼站点。获取用户在漏洞网站上面的用户信息（用户登陆情况下），或者偷偷操作用户功能！</font></p>
</blockquote>
<p><strong>具体我们看看实例：</strong></p>
<blockquote><pre><a href="http://blog.chacuo.net/wp-content/uploads/2013/06/image45.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="京东商城jsonp漏洞" border="0" alt="京东商城jsonp漏洞" src="http://blog.chacuo.net/wp-content/uploads/2013/06/image_thumb45.png" width="854" height="297" /></a> </pre>
<pre>我们看看，如果有个另外域名站点，怎么样调用该信息！</pre>

<div class="wp_syntax"><table><tr><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type: text/html; charset=utf-8&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&lt;script&gt;
function jsonp13724(d)
{
	console.log(d);
}
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://my.jd.com/order/rec.action?jsoncallback=jsonp13724&quot;&gt;
&lt;/script&gt;</pre></td></tr></table></div>

<pre><a href="http://blog.chacuo.net/wp-content/uploads/2013/06/image46.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="京东商城jsonp漏洞" border="0" alt="京东商城jsonp漏洞" src="http://blog.chacuo.net/wp-content/uploads/2013/06/image_thumb46.png" width="853" height="514" /></a> </pre>
<pre>&#160;</pre>
</blockquote>
<p>总结，通过上面例子，对于jsonp跨站访问，带来资源别越权调用漏洞。我们应该知道了它的原理。如果要防止这类越权访问，我们一般只需要对<u><font color="#0000ff">访问来源：reffer进行授权 </font></u>这是最简单的方法！ 也是最常用方法了。如果有朋友会问，这个漏洞有什么危害呀，看起来好像没有什么问题？如果一个站点别有用心站点(这里叫A站)，在京东商城上面发了一个链接。有不小心朋友点过去。这个时候，你刚好自己登陆了。这个时候，A站就可以悄悄读到你在京东商城一些信息了。到此，对京东商城jsonp漏洞都分析完毕，国内这么大一个商城，在这个方面使用，几乎没有做任何检测，确实有些不应该！希望，以上分析对即将应用jsonp朋友有所帮助！也需要大家发表自己看法！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chacuo.net/323.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>京东商城Jsonp 漏洞分析 （京东商城XSS漏洞）</title>
		<link>http://blog.chacuo.net/304.html</link>
		<comments>http://blog.chacuo.net/304.html#comments</comments>
		<pubDate>Thu, 20 Jun 2013 07:27:45 +0000</pubDate>
		<dc:creator>程默</dc:creator>
				<category><![CDATA[web安全]]></category>
		<category><![CDATA[JSONP]]></category>

		<guid isPermaLink="false">http://blog.chacuo.net/?p=304</guid>
		<description><![CDATA[继续我们jsonp 安全使用分享吧！上一篇文章我们提到jsonp使用，常见2种类型漏洞出现！详细可以看看：Js [...]]]></description>
				<content:encoded><![CDATA[<p>继续我们jsonp 安全使用分享吧！上一篇文章我们提到jsonp使用，常见2种类型漏洞出现！详细可以看看：<a href="http://blog.chacuo.net/295.html">Jsonp常见安全漏洞分析</a> ，今天我们来结合实例分析下该漏洞的测试、及利用过程吧！</p>
<p><strong>题外话</strong></p>
<p>为什么我选择是京东商城来分析它的jsonp 漏洞呢，其实主要原因最近6.18一直在做活动，我也买了不少便宜东西。现在该商城越做越好了。它系统也非常庞大，速度性能也很好。当时在购物时候，只是想看看，它的系统分离设计方面。通过分析页面http请求，发现有很多jsonp调用（也许跟换域名有关系，2种域名都可以访问，中间用jsonp交换数据），于是就看看，jsonp常见2种安全方面，有没有做处理。结果一测试。发现完全没有做任何处理，几乎是完完全全暴露出来。个人认为，对于这么大站点，这一点还是头一次遇到！居然，没有任何参数处理、以及资源授权！</p>
<p><strong>京东商城Jsonp xss漏洞分析</strong></p>
<blockquote>
<pre><a href="http://blog.chacuo.net/wp-content/uploads/2013/06/image40.png"><img style="display: inline; border-width: 0px;" title="京东商城xss漏洞" alt="京东商城xss漏洞" src="http://blog.chacuo.net/wp-content/uploads/2013/06/image_thumb40.png" width="853" height="379" border="0" /></a></pre>
<p>我们看到，该请求就是一个jsonp，</p>
<p>默认返回：jsonp13**********({&#8220;Identity&#8221;:{&#8220;Name&#8221;:&#8221;",&#8221;IsAuthenticated&#8221;:false}})，我们知道callback传入参数，会在response中 作为函数调用名称返回！</p></blockquote>
<p><strong>分析callback 字符范围</strong></p>
<blockquote><p><span style="background-color: #ffffff; font-family: Arial;">1、测试下有没有屏蔽常见特殊字符” &lt;&gt; ()&#8217;&#8221;;. {}“，以下这些字符，经常会用到xss里面的。</span></p>
<pre><a href="http://blog.chacuo.net/wp-content/uploads/2013/06/image41.png"><img style="display: inline; border-width: 0px;" title="京东商城callback没有屏蔽特殊字符" alt="京东商城callback没有屏蔽特殊字符" src="http://blog.chacuo.net/wp-content/uploads/2013/06/image_thumb41.png" width="841" height="523" border="0" /></a></pre>
<pre></pre>
</blockquote>
<p>到这里，分析说明这里存在着xss注入漏洞的。而且，可以选择很多种方法注入！ 本编文章，旨在说明jsonp xss漏洞成因！不会具体去扩大漏洞拿到其它什么权限。以下还有个很有意思事情，callback其实，jd对一些特殊字符串做了处理的。我们看看：</p>
<blockquote>
<pre><a href="http://blog.chacuo.net/wp-content/uploads/2013/06/image42.png"><img style="display: inline; border-width: 0px;" title="image" alt="image" src="http://blog.chacuo.net/wp-content/uploads/2013/06/image_thumb42.png" width="832" height="470" border="0" /></a></pre>
<pre></pre>
</blockquote>
<p>从上图中，我们可以看到，京东商城，对输入callback对一些特定的字符串进行了屏蔽处理！这也是，我们做xss漏洞检查时候，经常出现问题。<span style="color: #0000ff;"><span style="text-decoration: underline;">屏蔽字符串能够屏蔽完吗？常见26字符，长度不一任意组合。该有多少字符串呢？ </span></span><span style="color: #000000;">很多朋友，在做安全检测时候，就是屏蔽某些觉得很不安全的标签就认为安全了。 其实，我们发现这样做法只能是一时安全，过不了多久，你会发现又有新的字符串出现。你会为此花费大量的人力物力！</span><span style="color: #0000ff;"><span style="text-decoration: underline;">好了，做类似事情，我们最好方法是，认证那些觉得安全的字符，予以放行！ </span></span></p>
<p>其实，<strong>为什么用白名单方法放行允许的字符呢？ 而不是去过滤一些字符串。</strong>原因刚刚说了，字符串太多了。过滤不过来！另外是，我们自己每个业务参数，会用到那些字符其实我们更清楚。另外有人会问，<strong>为什么不去屏蔽不用的字符呢？</strong>我们知道基础<a title="ascii码" href="http://doc.chacuo.net/ascii" target="_blank" rel="ascii码">ascii码</a>有0-127,128字符。往往我们，不会用到的字符可能更多呢，我们去过滤不会用到字符，有时候更困难！</p>
<p><strong>正确检查jsonp callback方法</strong></p>
<p>建议收到callback函数对它进行白名单字符范围检测！我们可以用一般函数检测规范来检查就可以了。 既然它是一个函数名称，<strong>一般都是字符+数字+下划线+点号（对象分割）。</strong>那么我们检测变得非常简单，代码类似如：</p>
<blockquote>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000088;">$callback</span> <span style="color: #339933;">=</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'callback'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>?<span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'callback'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">:</span><span style="color: #0000ff;">''</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/^[0-9a-zA-Z_.]+$/&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$callback</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'参数错误！'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

</blockquote>
<p>后记：以上是分析一个jsonp xss漏洞过程。要检测一个站点是否有该漏洞，其实简单方法，就是看通过参数传入进去的特殊字符，是不是原原本本的response 返回出来。 如果有朋友问我，怎么样利用该漏洞，它能做点什么？ 你可以把它比作一个蚁穴，能带来多大危害，看蚂蚁怎么样啃食啦！这些年，sql注入几乎难找了，不过xss漏洞是头号杀手。只要有xss漏洞出现，几乎可以做到无所不能，就看利用的人怎么用了。 以上漏洞，我反馈京东商城，这么好的一个网站，不能因为这个小小xss，给用户带来大的安全隐患了！最后，欢迎朋友提出自己建议！还有一个忘记说了，就是它的jsonp访问权限完全没有限制，下次再分享吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chacuo.net/304.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jsonp常见安全漏洞分析(京东商城Jsonp 漏洞分析)</title>
		<link>http://blog.chacuo.net/295.html</link>
		<comments>http://blog.chacuo.net/295.html#comments</comments>
		<pubDate>Wed, 19 Jun 2013 08:45:39 +0000</pubDate>
		<dc:creator>程默</dc:creator>
				<category><![CDATA[web安全]]></category>
		<category><![CDATA[JSONP]]></category>

		<guid isPermaLink="false">http://blog.chacuo.net/?p=295</guid>
		<description><![CDATA[JSONP（JSON with Padding）是资料格式 JSON 的一种“使用模式”，可以让网页从别的网域 [...]]]></description>
				<content:encoded><![CDATA[<p><b>JSONP</b>（<b>JSON with Padding</b>）是资料格式 JSON 的一种“使用模式”，可以让网页从别的网域要资料。这个解释来自于互联网上面的答案。jsonp只是 一种使用json模式，之所以能够很广泛使用。主要用它来解决跨域访问问题。可以方便跨域名传输数据。一些是一个jsonp的例子。但是，正确的使用jsonp是至关重要的，用得不好。将带来重要资料把超范围访问，还会带来各自xss漏洞。</p>
<p><strong>JSONP跨域请求例子</strong></p>
<blockquote><p>传统的ajax ，往往是 XMLHttpRequest ，读取一个接口，返回类似: {&#8220;Name&#8221;: &#8220;小明&#8221;, &#8220;Rank&#8221;: 7} json值。一般我们都采用xmlhttprequest方法通过状态判断执行请求是否完毕。</p>
<p>JSONP的使用模式里，该URL回传的是由自定义传入函数名，动态生成JSON作为该函数入参，这就是JSONP 的“填充（padding）”或是“前辍（prefix）”的由来。</p>
<p>请求：</p>
<pre>&lt;script type="text/javascript"
         src="http://www.example.com/RetrieveUser?UserId=1823&amp;callback=parseResponse"&gt;
     &lt;/script&gt;</pre>
<pre>返回：</pre>
<pre>parseResponse({"Name": "Cheeso", "Id" : 1823, "Rank": 7})</pre>
<pre></pre>
<pre></pre>
</blockquote>
<p>parseResponse是传入参数值决定的，这样好处通过script标签可以解决跨域问题，并且只要script src地址加载完，js解析引擎就开始执行src地址返回 js内容了。 我们使用者不用关心，什么时候src地址加载解析完。只用写好接收函数：parseResponse，到时候自动回执行该项目。比传统ajax确实多了很多方便！目前，象google翻译，地图等都用该方法。实现了跨域及异步调用！</p>
<p><strong>JSONP漏洞将来自哪里？</strong></p>
<p>它给我们带来的发布，是毫无疑问的。那么它将会有哪些漏洞呢？首先，我们知道，<span style="text-decoration: underline;"><span style="color: #0000ff;">一切输入是有害的</span></span>。传入callback 值会在结果里面直接返回。因此，如果该参数过滤不严格。可以随便输入：callback值为：alert(‘1’);parseResponse  字符串。返回结果会打印个alert窗口，然后也会正常执行。</p>
<p>那么另外我们知道，flash是可以跨域的。flash请求外部资源，现在都有个”<em>crossdomain.xml</em>”，可以授权允许那些来源的站点，访问指定站点的资源。其实目的就是为了防止，资源被越权调用了。 如果我们不对其授权，那么任何网站都可通过：创建script标记，读取我网站资源了！这个安全项，也就是是否有对访问来源进行了授权访问！</p>
<p><strong>JSONP漏洞总结：</strong></p>
<p>知道了JSONP漏洞点主要有：callback参数注入、资源访问授权设置！我们其实，可以通过这2项，来检测我们的做的JSONP项目，里面是否有安全隐患了。好了，今天先分析到这里。这些漏洞都是，技术实现型漏洞！只要，我们明白了方法，杜绝是很容易的。之所以会出现类似安全隐患，更多来自，<span style="color: #0000ff;"><span style="text-decoration: underline;">不知道这里有类似安全问题！ </span>，</span><span style="color: #000000;">题外话、发发感慨！！现在网上看到很多教程，以及书籍都只会讲，怎么样使用某个功能，它的方法、技巧等等！很少解决，技术功能点安全避免漏洞的调用方法！</span><span style="color: #0000ff;"><span style="text-decoration: underline;">做一个功能很重要，但是我始终认为，开发一个安全、稳定功能是最基础的前提。 如果做的功能不安全，稳定！它急着上线，只会带来更大的风险、或是损失！！！</span> </span><span style="color: #000000;">  欢迎大家交流，提出更换的建议！（”什么？这里不是说京东商城有JSONP漏洞吗？“  ”对!没错！” 今天我这里分析漏洞点，大家可以找找京东商城这方面使用漏洞，我们下次分享实例！)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chacuo.net/295.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
