地图API配置错误漏洞导致的key或者ak泄露
一个想当文人的黑客 渗透测试 5666浏览 · 2024-09-03 13:14

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 可能带来的问题

  1. 滥用和超额使用
    • 如果 API Key 泄露,其他人可能会滥用你的 API Key,导致你的账户超额使用配额,从而产生额外费用或服务中断。
  2. 费用增加
    • 高德地图 API 通常有免费配额,但一旦超出免费额度,额外的请求可能会产生费用。泄露的 API Key 可能会导致不必要的费用增加。
  3. 数据安全和隐私问题
    • 通过泄露的 API Key,恶意用户可能会访问你的应用程序的数据或进行不当操作,这可能会影响你的数据安全和隐私。
  4. 服务中断
    • 如果发现 API Key 被泄露并被滥用,服务提供商可能会对相关密钥进行封禁或其他措施,可能导致你的应用服务中断。

三、如何应对 API Key 泄露

  1. 立即更换密钥
    • 尽快在高德地图开发者控制台中生成新的 API Key,并替换掉泄露的旧密钥。
  2. 限制 API Key 的使用范围
    • 在高德地图的 API 控制台中,你可以为 API Key 设置访问限制,例如限制 IP 地址、设置配额等,以减少被滥用的风险。
  3. 监控使用情况
    • 定期检查 API 使用情况,了解是否有异常的请求模式或超额使用情况。
  4. 安全存储密钥
    • 避免将 API Key 硬编码在代码中,使用安全的方式存储密钥,例如环境变量或配置文件。
  5. 设置警报和监控
    • 配置警报和监控,及时发现和响应 API Key 的异常使用。

可以参考高德地图的官方文档:

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=银行&region=北京&output=json&ak=这里写key

 百度webapiIOS版
 https://api.map.baidu.com/place/v2/search?query=ATM机&tag=银行&region=北京&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=银行&region=北京&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漏洞。

最后,希望师傅们能够看完这篇文章能够有满满的收获!

文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担。

2 条评论
某人
表情
可输入 255