API接口介绍
RPC
远程过程调用是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用,例:JavaRMI。
RPC一般直接使用TCP协议进行通信,通常不涉及到HTTP。HTTP下面有2种技术:
XML-RPCJSON-RPC
Webservice和RESTfulAPI都可算作远程过程调用的子集。
WebService是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。根据W3C的定义,Web服务应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是许多应用程序接口所组成的,它们透过网络,例如国际互联网的远程服务器端,执行客户所提交服务的请求。
尽管W3C的定义涵盖诸多相异且无法介分的系统,不过通常我们指有关于主从式架构之间根据SOAP协议进行传递XML格式消息。无论定义还是实现,Web服务过程中会由服务器提供一个机器可读的描述以辨识服务器所提供的Web服务。虽然WSDL不是SOAP服务端点的必要条件,但目前基于Java的主流Web服务开发框架往往需要WSDL实现客户端的源代码生成。一些工业标准化组织,比如WS-I,就在Web服务定义中强制包含SOAP和WSDL。
WebService是一种比较“重”和“老”的Web接口技术,目前大部分应用于金融机构的历史应用和比较老的应用中。
REST,全称是ResourceRepresentationalStateTransfer,通俗来讲就是,资源在网络中以某种表现形式进行状态转移。分解开来:
Resource:资源,即数据。比如newsfeed,friends等;Representational:某种表现形式,比如用JSON,XML,JPEG等;StateTransfer:状态变化。通过HTTP动词实现。
RESTfulAPI就是符合REST风格的API,传递数据也是2种形式:
XML,少见json,常见,现在Web应用基本使用这种形式的API。
Web应用程序和APP应用程序的API跟目前的流行框架和模式相关,主要有3种模式:MVC、MVP、MVVM。
MVC将整个应用分成Model、View和Controller三个部分,而这些组成部分其实也有着几乎相同的职责。
视:管理作为位展示到屏幕上的形和文字输出;控制器:翻译用户的输入并依照用户的输入操作模型和视;模型:管理应用的行为和数据,响应数据请求和更新状态的指令;
此类模式和架构的应用越来越多导致API接口的应用也越来越流行。想了解更多可以在网上查找相关资料。
API测试环境和测试工具
inurl:jws?wsdlinurl:asmx?wsdlinurl:aspx?wsdlinurl:ascx?wsdlinurl:ashx?wsdlinurl:dll?wsdlinurl:exe?wsdlinurl:php?wsdlinurl:pl?wsdlinurl:?wsdlfiletype:jwsfiletype:asmxfiletype:ascxfiletype:aspxfiletype:ashxfiletype:dllfiletype:exefiletype:phpfiletype:plfiletype:wsdlwsdl
测试工具
涉及主要工具:
SoapUIPRO,渗透测试流程的发起,通信报文的解析、集合payload之后通信报文的重新组装等,14天试用,可以做自动化测试。SoapUIFree,手工测试SOAPSonar,SOAPUI的替代。BurpSuite,代理拦截,跟踪通信过程和结果,对通信进行重放和二次处理等。WSSATWS-Attacker
测试项目
FuzzingXSS/SQLi/MalformedXMLFileUploadXpathInjectionXMLBomb(DoS)AuthenticationbasedattacksReplayattacksSessionfixationXMLSignaturewrappingSessiontimeoutHostCipherSupport/ValidCertificate/ProtocolSupportHashingAlgorithmSupport
手工测试方法
主要使用SoapUIOpenSource,有安全测试Case,需要配置SOAP代理到Burp,数据流,现在的版本是0。
代理配置
可以用Burp重放SOAP的探测Payload。使用SoapUIOpenSource,测试步骤:
创建工作空间新建SOAP项目增加WSDL,配置名称和WSDL链接选择要测试的TestSuite,增加一个安全测试
自动化测试
SOAP配置,2步,“File”-“Preference”-“Proxy”,设置Burp代理
直接在SoupUI主菜单上选择运行一个测试。
在弹出窗口中输入WSDL地址。
SUAPUI会自动探测接口。然后在项目-测试Case的右键菜单中选择安全测试
运行安全测试。
Burp代理会捕获所有的测试请求
其他工具介绍
WSSAT,选择加载存在WSDL列表的文件,运行。
AWVS的扫描也能直接测试WebService
测试工具
常见的浏览器插件
客户端工具
通常使用Postman的情况多些,有机会的话问下开发如何配置测试环境,直接配置一套一样的。
Postman的代理配置:
常见API相关漏洞和测试方法
还是主要以RestfulAPI说明。
逻辑越权类
本质上可以说是不安全的直接对象引用,可以通过修改可猜测的参数获取不同参数下的响应结果。参数可以是用户名、用户ID,连续的数字,变形的连续数字,通过直接修改参数值完成越权的操作。
示例:
https://wooyushuimugacom/bug/view?bug_no=189225https://wooyushuimugacom/bug/view?bug_no=150462https://wooyushuimugacom/bug/view?bug_no=140374https://wooyushuimugacom/bug/view?bug_no=106709
输入控制类
XXE,RestfulAPI的注入漏洞,XSS,溢出,特殊字符的处理。
示例:
https://wooyushuimugacom/bug/view?bug_no=211103https://wooyushuimugacom/bug/view?bug_no=132270https://wooyushuimugacom/bug/view?bug_no=8714
接口滥用
没有请求频率限制导致的各种爆破和遍历,如短信验证码爆破、登录爆破、手机号遍历、身份证遍历等。
示例:
https://wooyushuimugacom/bug/view?bug_no=141419https://wooyushuimugacom/bug/view?bug_no=66571https://wooyushuimugacom/bug/view?bug_no=36058https://wooyushuimugacom/bug/view?bug_no=147334
信息泄露
包括越权导致的信息泄露、畸形请求导致的报错响应。
示例:
https://wooyushuimugacom/bug/view?bug_no=171313https://wooyushuimugacom/bug/view?bug_no=160095https://wooyushuimugacom/bug/view?bug_no=127457
HTTP响应头控制
关于响应头:
发送X-Content-Type-Options:nosniff头。发送X-Frame-Options:deny头。发送Content-Security-Policy:default-src'none'头。删除指纹头-X-Powered-By,Server,X-AspNet-Version等等。在响应中强制使用content-type。
服务端配置漏洞
如服务端版本信息泄露,或服务端程序本身存在漏洞等。
API安全加固
根据上面讲的测试方法,一般需要做好:
认证和授权控制用户输入控制接口请求频率的限制输出控制添加安全响应头参数
参考API-Security-Checklist和历史上的渗透测试结果设计适合自己组织的API安全开发规范。
https://blocsdnet/cq1982/article/details/44728489https://t0datgitbooks.io/burpsuite/content/chapter1htmlhttps://www.owasp.org/index.php/Web_Service_Security_Testing_Cheat_Sheethttps://www.soapuorg/security-testing/getting-startehtmlhttp://blosecurelayernet/web-services-api-penetration-testing-part-2/https://www.soapuorg/security-testing/getting-startehtmlhttps://www.anquankcom/post/id/85910
https://githucom/shieldfy/API-Security-Checklisthttps://www.owasp.org/index.php/REST_Security_Cheat_Sheet
文章为作者独立观点,不代表股票交易接口观点