接口安全道亦有道

xKungfoo是XCon组委会与北京未来安全信息技术有限公司共同主办的只属于中国人自己的技术交流大会。会议将聚焦当今热点话题,专注于网络安全领域中最新的研究成果和信息交互。xKungfoo的会议精神是为推动中国网络安全技术、攻防技术水平的发展,不断找寻创新想法、经验、解决方案。2018年,xKungfoo将首次在杭州举办!

x功夫峰会,我分享了关于接口安全的议题,在此我以文字版的形式分享下。

0x01 为什么单独的讲接口安全?

  1. 关于OWASP Top10 2017版的漏洞变化:变化点除了日志监控外就是XXE和反序列化漏洞,其实这两种漏洞的上榜也间接体现了基于微服务架构的快速迭代的一种趋势

    52767290833

  2. 关于当前安全开发的形态,众多功能为了提供服务方便,均预留接口,但基于接口的认证、访问控制等的安全机制存在机制缺陷以及不安全的调用

  3. 接口安全存在的意识形态很容易被忽略

曾记否,近段事件的币安平台帐号被盗、以太坊的偷渡漏洞。前者利用高权限的api自动化结合金融打法做空货币高价获利。 后者以JSONRPC接口持续调用转账操作,最后实现恶意转账。都与接口的权限控制有关系。

0x02 什么是接口?

​ 正常的知识逻辑,都要有定义。但传统的开发意义的接口又不足以作为研究的对象,所以梳理了两种类型:

  1. 核心关键资源,凡是资源的调用(CRUD)都与接口有关系
  2. 凡是不是直接连接,需要“桥梁”过渡,均需要接口的辅助

0x03 接口有哪些分类?

​ 按照功能来讲接口类型比较多,并且有对应的漏洞,比如登录接口、支付接口、数据接口等;按照技术来讲其实主要是SOAP、REST、RPC。但归纳到数据形态主要还是XML和JSON。

52767321083

0x04 接口相关案例

功能接口关联分析案例

功能均为平常业务系统正常功能,但根据小漏洞的串联以及再关联,造成的影响却是整个帐号体系甚至敏感数据。

52767364176

52767366147

Webservice之SOAP SQL注入案例

WebService的三要素是:

  1. SOAP (Simple Object AccessProtocol):简易对象访问协议,soap用来描述传递信息的格式。
  2. WSDL (WebServices DescriptionLanguage):Web服务描述语言,用来描述如何访问具体的接口。
  3. UDDI (Universal DescriptionDiscovery and Integration):通用描述、发现及整合,用来管理、分发、查询webService。

在web URL中经常会看到关于这种写法的WebService.asmx?wsdl接口存在,此时就需要留意有无对应漏洞了。

52767378867

52767379643

REST接口越权遍历案例

直接请求API的个人信息链接,竟然获得直播妹子的小视频。根据结果数据x信息结构构造展示Demo

5276738429452767384943

JSONP接口跨域数据篡改漏洞

某省的流量助手,在查询是隐藏手机四位,但数据传输分析调用过程中,可以查看完整信息,且未授权访问。构造后可以直接对其进行业务订阅

5276739288652767393554

5276739890552767401844

微信phpyun三方接口注入漏洞案例

当网站绑定了微信公众号时,我们提交的内容先传到微信服务器。然后经过微信生成xml格式的数据,附加上效验码传到网站。网站根据发送的内容进行判断整理,将生成好的数据返回给微信服务器。微信服务器接收到数据后进行解析,最终再反馈给用户。

此次的问题在于,phpyun对于微信提交过来的数据没有转义,保持了信任。最终导致注入的发生。

52767405307

52767406286

某公众号-消息注入领红包漏洞

5276741045352767410873

关于OAuth接口的安全漏洞

登录系统时的微博登录方式
微博帐号验证成功后返回跳转网址

http://i.tao123.com/sina_login.php?jump=http://i.tao123.com/#access_token=xxxxxxxxxxxxxx&remind_in=******&expires_in=******&uid=******
只要更换后面的uid 如果这个帐号ID在网站存在
网站则会授权登录访问此帐号

52767420105

关于Oauth的进一步延伸

52767423246

车联网的接口安全案例

通过API漏洞控制全球的NissanLEAFs

52767425900

LEAF是一种电动汽车,在挪威这样的国家尤其受欢迎,它们提供巨大的财政激励来远离内燃机

LEAF的电池状态,VIN是唯一识别他的LEAF底盘的车辆识别号码 ;{获得汽车状态、远程充耗电、打开关闭空调、驾驶历史}

任何人都可能枚举VIN并控制任何响应的车辆的物理功能

5276742868552767429121

0x05 如何获得API地址或URI资源地址

基于BrupSuite的sitemap二次分析。

有两种方式

第一种,直接依据sitemap的访问记录结果进行结果筛选,比如结合正则获取响应包的包含href|callback|<xml|{.*}

第二种,基于Sitemap的二次开发的接口地址查找插件,类似被动式扫描原理,需要测试者渗透过程中交互点击的数据包,包括请求包和返回包。针对数据包信息,进行标签匹配和文本匹配。

本来第二种方式可实现漏洞的二次预判,迫于时间,现在实现的是接口地址的定位发现。

52767434868

被动扫描器之输入源分析规则——取可能的标签Value

52767438070

最终实现的效果

52767440451

52767448391

0x06 聚合归类

​ 列举了众多的接口相关的漏洞案例,归纳汇总后其实主要基于数据形态xml和json的安全演变。

52767454319

52767460453

0x07 接口安全道法自然

漏洞挖掘:

  1. 基础服务端漏洞和业务漏洞的防御相对成熟;
  2. 对于接口甚至敏感接口:安全关注度、自身机制的缺陷、再与典型漏洞的关联利用
  3. 没有低危的漏洞,只是还没碰到可利用的场景

漏洞演化规律:

  1. 漏洞的场景化,一定是结合实际业务(应用业务、营销活动、具体厂家)
  2. 漏洞的行业化,比如金融证券行业的打法
  3. 漏洞的利益化,BTC勒索
  4. 漏洞的关联化,单独一个漏洞点影响有限,递归迭代关联后的影响不可估

漏洞挖掘道与术

  1. 博弈对手升级
  2. 知识集合储备
  3. 漏洞本质原理
  4. 逻辑流程演变
  5. 利用形式组合
  6. 结果奇点临近(道VS术)

在安全技术中,例如二进制更侧重道,Web安全方向更侧重术,随着对抗技术的发展,大多有意义漏洞都会是组合拳趋势,既考虑道又要考虑术,二者找一个结合点。