跳到主要内容

地图API漏洞新玩法更新

· 阅读需 13 分钟

hello,师傅们大家好,好久没更新了,我原以为地图api这个前端漏洞已经没啥进展了,基本按之前写的文章已经很全面了,并且在文章发表后也有很多师傅报喜,用这个漏洞不管是日常渗透项目上水洞,还是挖src上都挣到钱了。也有很多师傅疯狂挖这个洞,导致好多src都以“使用的免费api接口为理由”不收了,也是干的猛。这次为啥发新的文章呢,因为这个洞有了新的研究成果,所以发布出来让师傅们小赚一笔,新研究的漏洞方案呢,没有之前那么好挖,之前的直接干fofa、hunter搜就可以了。新的挖掘方法主要偏向于调用高德地图api的微信小程序还有调用GOOGLE地图的web网站。

该文章仅用于安全技术分享,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责。文章作者不为此承担任何责任。

最近看了好多前端漏洞相关的东西,也产生不少成果。发现现在cors还有jsonp之类和跨域有关的漏洞,很少师傅去挖,但是能获取到敏感信息的话,大多数src还是收取的。地图这个也属于前端组件的漏洞。如果师傅们能找到其它类似于网站经常调用的像天气、验证码、站长访问统计之类api接口深入研究的话也许会有通杀漏洞大捞一笔。

0X00回顾

1.先梳理一下地图API配置错误漏洞的发现到公开的时间线:

1697096555_6527a36bd7a2c7a0d8d7e.png!small?1697096556278

2.src漏洞收入情况:

这个漏洞价值肯定是广大师傅最关心的问题,我这边大致统计了一下,我这边挖了有1w左右,下表是每个漏洞提交到不同平台价钱个数统计,可以看到100块和50块还是比较多的。所以算是低危漏洞。当然也有几个给了高危但是比较少。1697096884_6527a4b45279927240715.png!small?1697096884615

不了解之前这个漏洞挖掘方法的白帽师傅可以看看我之前写的这篇文章:https://www.freebuf.com/articles/web/360331.html

3.其它师傅们的挖掘情况简介:

有很多师傅看了我的分享之后挖到了众测或src的相关漏洞,也有师傅催着我新的思路,但是一直没啥新的思路直到最近跟几位师傅探讨,重新翻看api文档时发现了新的思路。

1697097680_6527a7d00d66b8cc4141b.png!small?1697097680332

0x01 新的思路简单说明

之前的思路主要是围绕着前端调用了高德、腾讯、百度地图的key,而这个key是需要自己去这三家注册开发者账号申请完之后会获取到key,然后给自己的业务进行使用。在正常网站管理员在默认配置的情况下这样配置是存在问题的,攻击者前端抓包获取到key值,利用官方给的api就可以给自己的业务使用,或者恶意消耗key值导致达到key当日使用上限,影响正常用户使用。后来在大家伙的挖掘下很多网站都按照官方说明配置域名白名单等限制消除了这个问题。并且高德地图jsapi进行了更新现在除了需要key值以外,增加了jscode验证。百度和腾讯地图目前还没变化,所以大家按照以前的方法对使用百度和腾讯地图的api的业务可以照常挖掘。这次重心主要在之前没有研究出来的google api调用payload和新的高德js api利用的挖掘上。那我们如何在高德地图存在jscode的情况下进行挖掘呢。

0x02 开挖1号洞-jscode版地图api配置错误漏洞挖掘

1.高德地图api配置错误漏洞挖掘:

(1)先看文档,高德地图js api升级为2.0之后,在需要key的基础上增加了一个jscode密钥,两者相结合才能正确的调用api接口,安全的配置是增加一个nginx做反向代理:

1697099032_6527ad180198ecadc4e6c.png!small?1697099032599

(2)配置错误的情况,部分网站或小程序为了开发方便他并不会用上文的nginx反向代理的方式,而是直接使用明文设置,导致我们任然可以在前端同时获得key和jscode:1697099126_6527ad76b9d0a54f9c549.png!small?1697099127172

(3)案例一:web应用场景

普通使用地图api的网站怎么找,详见我上篇文章:传送门

(4)案例2:微信小程序场景

这是本次的重点在日常测试过程中我发现小程序采用这种错误配置的方案比较多,所以师傅们可以把挖掘重点又之前的web转到小程序上,鉴于有的师傅平时小程序挖的比较少,我详细介绍下如何最简单的在微信小程序挖掘这个漏洞。

  • 使用微信小程序电脑端(任意版本都可以,最新版也行)
  • 下载httpdebugger1697100304_6527b210af3e50cc9aced.png!small?1697100304875
  • 开启httpdebggerUI后打开你要测试的小程序,然后再小程序的各个功能乱点,基本找一些定位啊,关于我们、收货地址之类的可能会调用地图api的功能点,然后在httpdebugger里应用程序选择wechatappex.exe进行过滤,只看微信小程序的报文:1697100517_6527b2e5a91f70d91e419.png!small?1697100518083

然后当你功能都点过一遍后,在状态按钮旁边搜索jscode和key点击下方看详细信息即可找到key和jscode,漏洞验证仍然可以使用上方payload进行漏洞验证1697100718_6527b3aed777dea917ad0.png!small?1697100719300

0x03开挖2号洞-GOOGLE地图apikey泄露

google地图api漏洞利用算是上一篇留的一个坑最早研究高德、百度、腾讯的时候发现google也有key值但是一直没找到能验证可以调用成功的payload,这次研究出来了在这里补充一下:

  • 首先找到网站中调用google地图的页面
  • 全局搜索关键字如下图1697101041_6527b4f12f2c104611f22.png!small?1697101042125
  • 获取key值后使用如下payload进行调用,有两个,都试试:

(1)payload1:https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=**此处填写key值**

(2)payload2:https://maps.googleapis.com/maps/api/staticmap?center=40.714%2c%20-73.998&zoom=12&size=400x400&key=**此处填写key值**

  • 调用成功如下图所示:1697101153_6527b56156e195e566107.png!small?1697101153761

0x04增加挖掘效率

1 .其实各位师傅们通过上述可以看出,其实地图api说白了也是前端漏洞的一种,我们可以使用burp的hae插件进行被动标记,等我们把网站其它漏洞测得差不多的时候回头来看history也许有意外发现:

Compiled with problems:

×ERROR in ./blog/漏洞研究/2023-10-13-地图API漏洞新玩法更.md?truncated=true

Module build failed (from ./node_modules/@docusaurus/mdx-loader/lib/index.js): Error: Blog post not found for filePath=D:\cursor\ditusec - 副本\blog\漏洞研究\2023-10-13-地图API漏洞新玩法更.md at Object.createAssets (D:\cursor\ditusec - 副本\node_modules@docusaurus\plugin-content-blog\lib\index.js:83:27) at loadMDX (D:\cursor\ditusec - 副本\node_modules@docusaurus\mdx-loader\lib\loader.js:53:19) at async Object.mdxLoader (D:\cursor\ditusec - 副本\node_modules@docusaurus\mdx-loader\lib\loader.js:156:24)

ERROR in ./blog/漏洞研究/2023-10-13-地图API漏洞新玩法更.md

Module build failed (from ./node_modules/@docusaurus/mdx-loader/lib/index.js): Error: Blog post not found for filePath=D:\cursor\ditusec - 副本\blog\漏洞研究\2023-10-13-地图API漏洞新玩法更.md at Object.createAssets (D:\cursor\ditusec - 副本\node_modules@docusaurus\plugin-content-blog\lib\index.js:83:27) at loadMDX (D:\cursor\ditusec - 副本\node_modules@docusaurus\mdx-loader\lib\loader.js:53:19) at async Object.mdxLoader (D:\cursor\ditusec - 副本\node_modules@docusaurus\mdx-loader\lib\loader.js:156:24)

(1)进入burp BApp Store下载hae插件:

1697109587_6527d65322505935ef8a9.png!small?1697109586950

(2)点击添加1697109620_6527d6745d592d69a0edc.png!small?1697109619959

(3)增加如下规则:Regex:(webapi.amap.com|apis.map.qq.com|api.map.baidu.com|map.qq.com|restapi.amap.com)

1697109642_6527d68a98ce127bc4b24.png!small?1697109642297

(4)效果如下:1697109887_6527d77f0c910fc0d2a09.png!small?1697109886995

0x05 泼个凉水及忠告

该文章仅用于安全技术分享,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责。文章作者不为此承担任何责任1678760181_640fd8f52ea1bc4aed836.png!small?1678760182429

现在这个jscode类型的漏洞虽然没有被撸过一遍,根据fofa和hunter搜索来看存在这个问题的web还是比较少的,主要还是小程序会多一点,师傅们在挖的时候也还是放平心态,挖到了src不给过不要气馁。大家可以在挖 众测的时候多一种思路就行了。之前地图key刚发出来的之后,好多src都被挖了一遍,并且后来都直接说明不会再收地图api了,所以即使是新的思路也有可能以同样的原因不过洞。

写这篇文章的目的不仅是给白帽师傅们挖洞提供一些思路,并且也给甲方及网站技术负责人提供些许安全建议,当引用第三方组件的时候需要进行安全配置及对功能进行及时更新,而不是只关注自己的业务安全,最终导致业务被攻破的可能不是自己的问题,而是第三方组件的问题。永远记住,在你看不到的地方,黑客永远盯着你。