API 接口渗透测试

isnull   ·   发表于 2019-04-04 14:08:55   ·   漏洞文章

1 API 接口介绍

1.1 RPC(远程过程调用)

远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用,例:Java RMI。

RPC 一般直接使用 TCP 协议进行通信,通常不涉及到 HTTP。HTTP 下面有2种技术:

  • XML-RPC(https://zh.wikipedia.org/wiki/XML-RPC)
  • JSON-RPC(https://zh.wikipedia.org/wiki/JSON-RPC)
  • Web service 和 RESTful API 都可算作远程过程调用的子集。

    1.2 Web Service

    Web Service 是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。

    根据 W3C 的定义,Web 服务(Web service)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口(API)所组成的,它们透过网络,例如国际互联网(Internet)的远程服务器端,执行客户所提交服务的请求。

    尽管W3C的定义涵盖诸多相异且无法介分的系统,不过通常我们指有关于主从式架构(Client-server)之间根据 SOAP 协议进行传递 XML 格式消息。无论定义还是实现,Web 服务过程中会由服务器提供一个机器可读的描述(通常基于WSDL)以辨识服务器所提供的 Web 服务。另外,虽然 WSDL 不是 SOAP 服务端点的必要条件,但目前基于Java 的主流 Web 服务开发框架往往需要 WSDL 实现客户端的源代码生成。一些工业标准化组织,比如 WS-I,就在 Web 服务定义中强制包含 SOAP 和 WSDL。

    Web Service 是一种比较“重”和“老”的 Web 接口技术,目前大部分应用于金融机构的历史应用和比较老的应用中。


    1.3 RESTful API

    REST,全称是 Resource Representational State Transfer,通俗来讲就是,资源在网络中以某种表现形式进行状态转移。分解开来:

  • Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;
  • Representational:某种表现形式,比如用JSON,XML,JPEG等;
  • State Transfer:状态变化。通过HTTP动词实现。
  • RESTful API 就是符合 REST 风格的 API,传递数据也是2种形式:

  • XML,少见
  • json,常见,现在 Web 应用基本使用这种形式的 API。
  • 1.4 MVC、MVP、MVVM

    Web 应用程序和 APP 应用程序的 API 跟目前的流行框架和模式相关,主要有3种模式:MVC、MVP、MVVM。

    MVC 将整个应用分成 Model、View 和 Controller 三个部分,而这些组成部分其实也有着几乎相同的职责。

  • 视图:管理作为位图展示到屏幕上的图形和文字输出;
  • 控制器:翻译用户的输入并依照用户的输入操作模型和视图;
  • 模型:管理应用的行为和数据,响应数据请求(经常来自视图)和更新状态的指令(经常来自控制器);


  • 此类模式和架构的应用越来越多导致 API 接口的应用也越来越流行。想了解更多可以在网上查找相关资料。

    2 API 测试环境和测试工具

    2.1 Web Service 测试

    2.1.1 找 Webservice 接口

  • Google hacking

  • inurl:jws?wsdl
  • inurl:asmx?wsdl
  • inurl:aspx?wsdl
  • inurl:ascx?wsdl
  • inurl:ashx?wsdl
  • inurl:dll?wsdl
  • inurl:exe?wsdl
  • inurl:php?wsdl
  • inurl:pl?wsdl
  • inurl:?wsdl
  • filetype:jws
  • filetype:asmx
  • filetype:ascx
  • filetype:aspx
  • filetype:ashx
  • filetype:dll
  • filetype:exe
  • filetype:php
  • filetype:pl
  • filetype:wsdl wsdl
  • fuzzing

  • 爬虫

  • 2.1.2 测试工具

    涉及主要工具:

  • Soap UI PRO,渗透测试流程的发起,通信报文的解析、集合payload之后通信报文的重新组装等,14天试用,可以做自动化测试。
  • SoapUI Free,手工测试
  • SOAPSonar,SOAP UI 的替代。
  • Burp Suite,代理拦截,跟踪通信过程和结果,对通信进行重放和二次处理等。
  • WSSAT
  • WS-Attacker
    ### 2.1.3 测试项目
  • Fuzzing
  • XSS /SQLi/ Malformed XML
  • File Upload
  • Xpath Injection
  • XML Bomb (DoS)
  • Authentication based attacks
  • Replay attacks
  • Session fixation
  • XML Signature wrapping
  • Session timeout
  • Host Cipher Support/ Valid Certificate/ Protocol Support
  • Hashing Algorithm Support
  • 2.1.4 手工测试方法

    主要使用 Soap UI Open Source,有安全测试Case,需要配置 SOAP 代理到 Burp,数据流,现在的版本是5.4.0。



    代理配置



    可以用 Burp 重放 SOAP 的探测 Payload。
    使用 Soap UI Open Source,测试步骤:

    1. 创建工作空间
    2. 新建 SOAP 项目
    3. 增加 WSDL,配置名称和 WSDL 链接
    4. 选择要测试的 TestSuite,增加一个安全测试



    5.选择测试的类型,运行测试



    2.1.5 自动化测试

    SOAP 配置,2步,“File”-“Preference”-“Proxy”,设置 Burp 代理



    直接在 Soup UI 主菜单上选择运行一个测试。



    在弹出窗口中输入 WSDL 地址。




    SUAP UI 会自动探测接口。然后在项目-测试Case的右键菜单中选择安全测试



    运行安全测试。



    Burp 代理会捕获所有的测试请求



    其他工具介绍
    WSSAT,选择加载存在 WSDL 列表的文件,运行。



    WS-Attacker



    AWVS 的扫描也能直接测试 Web Service


    打赏我,让我更有动力~

    0 条回复   |  直到 2019-4-4 | 1199 次浏览
    登录后才可发表内容
    返回顶部 投诉反馈

    © 2016 - 2024 掌控者 All Rights Reserved.