实验室:参数掩饰
从业者
这个实验室很容易受到伤害beplay体育能用吗网络缓存中毒因为它从缓存键中排除了某个参数。缓存和后端之间也存在不一致的参数解析。用户定期使用Chrome访问该网站的主页。
要解决实验室,请使用参数掩盖技术用执行警报(1)
在受害者的浏览器中。
暗示
该网站不beplay体育能用吗包括某个UTM分析参数。
解决方案
- 确定
UTM_CONTENT
支持参数。观察到它也从缓存键中排除。
- 请注意,如果您使用emicolon(
;
)将另一个参数附加到UTM_CONTENT
,缓存将其视为单个参数。这意味着额外的参数也从缓存键中排除。另外,在加载Param Miner的情况下,请右键单击请求,然后选择“ Bulk Scan”>“ Rails参数掩盖扫描”以自动识别漏洞。
- 观察每个页面都会导入脚本
/js/geolocate.js
,执行回调函数setcountrycookie()
。发送请求get /js/geolocate.js?callback=setCountrycookie
打burp recreteater。
- 请注意,您可以通过编辑来控制返回数据上调用的函数的名称
打回来
范围。但是,您不能以这种方式毒化其他用户的缓存,因为参数已键入。
研究缓存行为。观察,如果您添加重复打回来
参数,只有最后一个反映在响应中,但两者仍然被键入。但是,如果您附加第二个打回来
参数到UTM_CONTENT
参数使用半隆,将其排除在缓存键中,并且仍在响应中覆盖回调函数:
get/js/geolocate.js?callback=setCountrycookie&utm_content = foo; callback = arbitraryFunction http/1.1 200 ok x-cache-key:/js/geolocate.js?callback=setCountrycookie})
再次发送请求,但是这段时间已经过去了警报(1)
作为回调函数:
get /js/geolocate.js?callback=setCountrycookie&utm_content = foo; callback = alert(1)
- 获取响应缓存,然后将主页加载到浏览器中。检查
警报()
被触发。
- 重播请求使缓存中毒的请求。当受害者用户访问包含此资源导入URL的任何页面时,实验室将解决。