0x1 前言
哈喽,师傅们!
这篇文章主要是带师傅们掌握下地图API配置错误漏洞导致的key或者ak泄露,然后进行使用我们总结的payload进行打一个漏洞利用。下面也会给师傅们举例我挖到的部分地图API漏洞,其中企业src部分企业会收这个漏洞,部分不收,我之前在众测挖的这个漏洞,收的多点。
0x2 地图API简介
一、Web服务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
0x3 API漏洞挖掘技巧
一、地图大师API payload总结
高德地图api、百度地图api、腾讯地图api最终总结了以下这些payload,师傅们可以直接将key值或ak值(百度地图的密钥叫ak)直接代入我总结的payload进行验证:
高德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值进行一个payload的利用,那么师傅们就会问了,如何利用这个payload呢,还有就是如何验证这个漏洞呢?
我们在打这个目标站点,使用这个payload,如何判断这个站点存在,打入成功。在我们打入这个payload的时候,在页面上如何判断这个是否存在,下面我来给师傅们演示下,然后带师傅们了解下页面的情况。
1、下面先给师傅们演示下可以成功打地图API泄露的站点,可以成功回显一些敏感信息,我们把我们收集到的key值或ak值(百度地图的密钥叫ak)放入我们上面总结的payload中,如下:
2、错误的案例演示如下,如果提示类似于app调用失败,或者错误代码10006或10008就代表这个问题已经修复了,就不用再看了。我这里出现了10008说明,漏洞不存在。
三、src地图API 漏洞漏洞报告参考
这个是用地图大师师傅的一个src漏洞报告的文档,专门针对小白师傅们对于src漏洞报告不太会描述的师傅,可以参考下地图大师的漏洞报告文档。
漏洞标题:xx网站-xx管理后台-存在xx地图api接管漏洞
漏洞描述:xx网站-生活圈管理后台-存在高德地图api接管漏洞,攻击者可利用抓取的高德地图ak值任意调用属于xx的高德地图的api额度造成XX的高德地图api额度被恶意盗用,消耗等。当额度被消耗完毕后,会造成地图加载异常,定位服务无法使用等,影响用户体验。
漏洞复现:
1、浏览器访问https://xxx.xxxx.com/
2、F12查看页面源代码搜索key获得key值:
3、由于此处XX管理员对于XX地图控制台配置错误,导致任意用户均可调用该api用以消耗额度,此处参考高德地图官方web调用接口构造payload:https://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行®ion=北京&output=json&ak=这里写key
调用成功如下图所示:
若配置正确攻击者调用该接口会提示错误代买10006或10008无法通过该接口获取地图信息
修复方案:
参考XX地图官方文档
0x4 地图API 漏洞利用
一、浅谈
我们平常怎么去挖掘这个地图API 值泄露,然后导致敏感信息泄露的一个漏洞呢?
首先我们得去学会找这个漏洞,那么在什么地方,在什么情景下容易挖到,找到这方面的漏洞呢?
下面我给师傅们做一个总结,让新手师傅们也可以很简单的挖到人生中第一个地图API泄露的漏洞。在挖这方面的漏洞的时候,你会发现这些漏洞都有一个特点,那就是这个站点的功能点存在能够调用地图API,能够有导航地图的这么一个功能点,那么我们师傅们要是遇到这样的站点,就得注意下了,我们这个时候可以F12下,看看我们这个站点的网页源代码,然后直接检索key或者ak值,然后找到了,就可以去拿我们的payload去利用了。
二、FOFA语法批量检索
下面是我总结的一个使用fofa进行批量检索地图API 配置错误,key值泄露的一个语法,感兴趣的师傅们可以去尝试使用这个语法检索下,然后去挖挖这个漏洞
(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泄露的漏洞还是蛮简单的
三、漏洞利用
1、案例一
师傅们可以看到下面的这个租车管理系统,像这个的系统很有可能存在地图API配置错误,然后导致这个系统的key或者ak值的一个泄露。
所以师傅们也是可以根据这个租车系统的关键字,然后把我们刚才的fofa语法进行一个修改也是可以的,这样在我们的目标资产的范围就变小了,便于我们进行测试利用。
找到目标,检测漏洞的方式也比较简单,直接拿到这个页面,然后按我们电脑的F12即可,查看改站点的网页源代码,如下图可以看到我们找到的这个key值,直接是泄露在网页源代码中的
我们可以看到泄露的时候会是下面的这样的一大串字符,那么下面就来带师傅们认识这个key泄露的是哪家地图厂商的值
https://map.qq.com/api/js?v=2.exp&libraries=place&key=xxxxxxxxxxxx
我们可以直接把前面的host值直接放到百度上面去,然后可以看到下面显示的腾讯地图,同理别的地图厂商也是一样的,比如常用的高德地图和百度地图
然后就是直接拿我们上总结的payload值了,由于是腾讯的腾讯webapi
https://apis.map.qq.com/ws/place/v1/search?keyword=酒店&boundary=nearby(39.908491,116.374328,1000)&key=这里写key
直接把我们收集到的改站点泄露的key值放进我们的payload中,即可看到泄露的敏感信息了
2、案例二
下面这个案例是我在一个我之前的CNVD漏洞上面找的,那个公司的资产比较多,之前挖的漏洞也比较多,然后拿这个公司的一个站点来给师傅们演示下。
师傅们也是可以看到下面的这个站点,是不是跟我上面说的一样,是不是存在一个可以调用地图的一个功能点或者接口,那么像这样的是不是得去测试下,F12查看下网页源代码
直接右击查看网页源代码,可以看到下面的这一串字符,泄露了一个关键ak,这个ak前面也给师傅们介绍了,是百度地图的一个ak泄露,跟上一个案例的key值泄露一个意思
也是可以放到百度上看看的,都是可以看出是百度的
https://api.map.baidu.com/api?type=webgl&v=1.0&ak=xxxxxxxxxxxx
可以看到泄露的一些地图上面的敏感信息
3、案例三
下面这个案例是一个src的一个商城的一个地图API漏洞,是一个企业src漏洞了,像这个的找特定的资产,然后去挖特点的企业src的技巧也是有的,包括去检索的方法,后面给师傅们总结下面。
下面的这个商城的功能点也是存在一个可以调用地图的功能点,那么我们是不是也是可以去利用下呢,像这样的站点,一看就感觉存在地图API漏洞。
直接F12,查看网页源代码,然后去检索关键字——key或者ak
可以看到都是一样的,直接就检索出来了我们的地图API漏洞泄露的key值了
老方法,直接把前面的host值放入到百度中去看看是什么类型的key,然后再去使用对应的payload值
type: 'get',
url: 'https://restapi.amap.com/v3/geocode/geo',
data: {
key: 'xxxxxxxxxxxxxxxx',
address: 'xxxxxxxxxxxxxxxxxxx',
}
还是我们熟悉的高德地图,那么就可以使用高德地图的payload了
高德webapi:https://restapi.amap.com/v3/direction/walking?origin=116.434307,39.90909&destination=116.434446,39.90816&key=这里写key
直接再次拿下一个站点,感兴趣的师傅们可以去尝试挖下,跟着我的步骤和思路去
0x5 高级检索骚技巧汇总
这个是使用网络空间引擎来进行一个批量检索,可以很好的检索到地图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")
0x6 总结
这篇文章呢,也是到这里给师傅们介绍完了。
这篇文章前面给师傅们介绍下这个地图API key的相关简介,让新手师傅们也可以了解和认识这个漏洞,而不是简单的只会挖,更多的是去感受和对这个漏洞的思考。
后面给师傅们演示的那几个漏洞都是我总结的,师傅们也是可以去按照我的思路和步骤去挖一挖,然后记个小笔记,好好感受这个地图API漏洞。
最后,希望师傅们能够看完这篇文章能够有满满的收获!
文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担。