更新两之前其他地方发过的章
1. 关于request merging和其产生的问题
request merging : 浏览器会把多次相同的请(并非所有请求)合并成次,以加快资源载速。
e.g.
1 2 3
| <script type="text/javascript" src="https://0.0.0.0:8888/jsonp/1"></script> <script type="text/javascript" src="https://0.0.0.0:8888/jsonp/1"></script> <script type="text/javascript" src="https://0.0.0.0:8888/jsonp/1"></script>
|
只会请并载一次”https://0.0.0.0:8888/jsonp/1"资源。
经有研究指出,这种请合想象在iframe里也存在,那么浏览器的这种特就可以用来bypass分程序的referer的判断,如jsonp防御机制。
2. 环境POC
绕过referer检测,攻击者能否拿进行referer保护的用户息?
击者服务: https://example.com:8081
目标服器: https://example.com:8082
referer检测: referer是否以https://example.com:8082”开头
目标: 攻击者拿到属于用户的 “security content”
环境:
/jsonp.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?php
function startsWith($url, $domain) { $length = strlen($domain); return (substr($url, 0, $length) === $domain); }
$referrer = @$_SERVER['HTTP_REFERER'];
if (startsWith($referrer, "https://example.com:8082")) { $js_code = 'function jquery() { return "security content";}'; echo $js_code; } else { $js_code = 'function jquery() { return "nothing";}'; echo $js_code; }
|