地图Key泄露漏洞利用方式
地图Key相关漏洞利用技巧
参考文章:
https://blog.csdn.net/2401_83799022/article/details/142357733
https://www.cnblogs.com/l1l1l1/p/18006433
https://www.freebuf.com/articles/web/360331.html
地图API简介
高德/百度/腾讯Web服务API向开发者提供HTTP接口,开发者可通过这些接口使用各类型的地理数据服务,返回结果支持JSON和XML格式。
Web服务API对所有用户开放。使用本组服务之前,需要申请应用Key。不同类型用户可获取不同的数据访问能力。
下面这篇文章就是高德地图的key创建的官方文档:[https://lbs.amap.com/api/webservice/create-project-and-key]
在我们使用一些导航地图的时候,在创建web服务的API时候,就可能会把我们的key值或ak值(百度地图的密钥 叫ak)给泄露出来,像这个可以直接在改站点的网页源代码检索泄露出来的key或者ak值

泄露的 API Key 可能带来的问题
滥用和超额使用:
如果 API Key 泄露,其他人可能会滥用你的 API Key,导致你的账户超额使用配额,从而产生额外费用或服务中断。
费用增加:
高德地图 API 通常有免费配额,但一旦超出免费额度,额外的请求可能会产生费用。泄露的 API Key 可能会导致不必要的费用增加。
数据安全和隐私问题:
通过泄露的 API Key,恶意用户可能会访问你的应用程序的数据或进行不当操作,这可能会影响你的数据安全和隐私。
服务中断:
如果发现 API Key 被泄露并被滥用,服务提供商可能会对相关密钥进行封禁或其他措施,可能导致你的应用服务中断。
如何应对 API Key 泄露
立即更换密钥:
尽快在高德地图开发者控制台中生成新的 API Key,并替换掉泄露的旧密钥。
限制 API Key 的使用范围:
在高德地图的 API 控制台中,你可以为 API Key 设置访问限制,例如限制 IP 地址、设置配额等,以减少被滥用的风险。
监控使用情况:
定期检查 API 使用情况,了解是否有异常的请求模式或超额使用情况。
安全存储密钥:
避免将 API Key 硬编码在代码中,使用安全的方式存储密钥,例如环境变量或配置文件。
设置警报和监控:
配置警报和监控,及时发现和响应 API Key 的异常使用。
可以参考高德地图的官方文档:
https://lbs.amap.com/faq/webservice/webservice-api/basic-configuration/43238
https://lbs.amap.com/faq/quota-key/key/41186
FOFA语法批量检索
(body="webapi.amap.com" || body="api.map.baidu.com" || body="apis.map.qq.com" || body="map.qq.com/api/js?v=") && is_domain=true
可以看到有很多的icon图标都存在地图API相关关键字,且都很多可能存在相关key或者ak值 的一个泄露

可任意看到检索匹配出来了九万多个独立的IP了,数量很多,师傅们可以多去尝试下,打几个简单的地图API泄露的漏洞还是蛮简单的

高级检索语法技巧汇总
这个是使用网络空间引擎来进行一个批量检索,可以很好的检索到地图API配置错误的漏洞,你只要把你要挖的网站等更域名替换下面我写的语法即可,搜到后打开网站在源代码中搜索关键字ak=或key=得到key值。
奇安信hunter
(web.body="webapi.amap.com"||web.body="api.map.baidu.com"||web.body="apis.map.qq.com"||web.body="map.qq.com/api/js?v=")&&domain.suffix="根域名替换"
FOFA
(body="webapi.amap.com"||body="api.map.baidu.com"||body="apis.map.qq.com"||body="map.qq.com/api/js?v=")&&domain="根域名替换"

360Quake
domain:"根域名替换" AND (response: "webapi.amap.com" OR response: "api.map.baidu.com" OR response: "map.qq.com")
一、漏洞发现
一般的地图key泄露都在源代码或者抓包中可以获取


普通使用地图api的网站怎么找?
Web端的:
- 打开网站按F12,点击源代码:

– ctrl+shift+F全局搜索关键字:jscode和key=,这两个大概率在一个js文件下,或使用burp在history中搜索jscode=
当我们同时获得这两个值后,就可以使用payload进行调用测试。
小程序APP端的:
在日常测试过程中我发现小程序采用这种错误配置的方案比较多,所以师傅们可以把挖掘重点又之前的web转到小程序上,鉴于有的师傅平时小程序挖的比较少,我详细介绍下如何最简单的在微信小程序挖掘这个漏洞。
- 使用微信小程序电脑端(任意版本都可以,最新版也行)
- 下载httpdebugger

– 开启httpdebggerUI后打开你要测试的小程序,然后再小程序的各个功能乱点,基本找一些定位啊,关于我们、收货地址之类的可能会调用地图api的功能点,然后在httpdebugger里应用程序选择wechatappex.exe进行过滤,只看微信小程序的报文:

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

二、漏洞利用
相关POC如下:直接在后面的key=填入泄露的API地图key进行验证
高德webapi:
https://restapi.amap.com/v3/direction/walking?origin=116.434307,39.90909&destination=116.434446,39.90816&key=这里写key
高德jsapi:
https://restapi.amap.com/v3/geocode/regeo?key=这里写key&s=rsv3&location=116.434446,39.90816&callback=jsonp_258885_&platform=JS
高德小程序定位:
https://restapi.amap.com/v3/geocode/regeo?key=这里写key&location=117.19674%2C39.14784&extensions=all&s=rsx&platform=WXJS&appname=c589cf63f592ac13bcab35f8cd18f495&sdkversion=1.2.0&logversion=2.0
百度webapi:
https://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行®ion=北京&output=json&ak=这里写key
百度webapiIOS版:
https://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行®ion=北京&output=json&ak=这里写key=iPhone7%2C2&mcode=com.didapinche.taxi&os=12.5.6
腾讯webapi:
https://apis.map.qq.com/ws/place/v1/search?keyword=酒店&boundary=nearby(39.908491,116.374328,1000)&key=这里写key
谷歌地图的API key利用POC:
-
首先找到网站中调用google地图的页面
-
全局搜索关键字如下图

– 获取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=400×400&key=__此处填写key值__
-
调用成功如下图所示:

高德地图Key泄露利用注意点:
高德地图js api升级为2.0之后,在需要key的基础上增加了一个jscode密钥,两者相结合才能正确的调用api接口,安全的配置是增加一个nginx做反向代理:

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

三、漏洞验证
如果出现错误代码10006或10008,说明不存在这个漏洞;如果返回了地理位置,说明漏洞存在。
如果出现10008说明,漏洞不存在。

如果返回地址,说明key可以被利用,漏洞存在

四、地图key漏洞相关利用工具
(1)HAE:
(1)进入burp BApp Store下载hae插件:

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

效果如下:

(2)地图key验证利用小工具
https://github.com/cury-w/map-key

- 感谢你赐予我前进的力量