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 ServiceWeb 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 APIREST,全称是 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、MVVMWeb 运用程序和 APP 运用程序的 API 跟目前的盛行框架和模式干系,紧张有3种模式:MVC、MVP、MVVM。
MVC 将全体运用分成 Model、View 和 Controller 三个部分,而这些组成部分实在也有着险些相同的职责。
视图:管理作为位图展示到屏幕上的图形和笔墨输出;掌握器:翻译用户的输入并依照用户的输入操作模型和视图;模型:管理运用的行为和数据,相应数据要求(常常来自视图)和更新状态的指令(常常来自掌握器);此类模式和架构的运用越来越多导致 API 接口的运用也越来越盛行。想理解更多可以在网上查找干系资料。
2 API 测试环境和测试工具2.1 Web Service 测试2.1.1 找 Webservice 接口Google hackinginurl: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:wsdl wsdlfuzzing爬虫2.1.2 测试工具涉及紧张工具:
Soap UI PRO,渗透测试流程的发起,通信报文的解析、凑集payload之后通信报文的重新组装等,14天试用,可以做自动化测试。SoapUI Free,手工测试SOAPSonar,SOAP UI 的替代。Burp Suite,代理拦截,跟踪通信过程和结果,对通信进行重放和二次处理等。WSSATWS-Attacker2.1.3 测试项目
FuzzingXSS /SQLi/ Malformed XMLFile UploadXpath InjectionXML Bomb (DoS)Authentication based attacksReplay attacksSession fixationXML Signature wrappingSession timeoutHost Cipher Support/ Valid Certificate/ Protocol SupportHashing Algorithm Support2.1.4 手工测试方法紧张利用 Soap UI Open Source,有安全测试Case,须要配置 SOAP 代理到 Burp,数据流,现在的版本是5.4.0。
代理配置
可以用 Burp 重放 SOAP 的探测 Payload。利用 Soap UI Open Source,测试步骤:
创建事情空间新建 SOAP 项目增加 WSDL,配置名称和 WSDL 链接选择要测试的 TestSuite,增加一个安全测试选择测试的类型,运行测试2.1.5 自动化测试SOAP 配置,2步,“File”-“Preference”-“Proxy”,设置 Burp 代理
直接在 Soup UI 主菜单上选择运行一个测试。
在弹出窗口中输入 WSDL 地址。
SUAP UI 会自动探测接口。然后在项目-测试Case的右键菜单中选择安全测试
运行安全测试。
Burp 代理会捕获所有的测试要求
其他工具先容:WSSAT,选择加载存在 WSDL 列表的文件,运行。
WS-Attacker
AWVS 的扫描也能直接测试 Web Service
2.2 RESTful API 测试2.2.1 测试工具常见的浏览器插件Chrome Restlet Client- Firefox RESTClient
客户端工具Postman
- Swagger
常日利用 Postman 的情形多些,有机会的话问下开拓如何配置测试环境,直接配置一套一样的。Postman 的代理配置:
3 常见 API 干系漏洞和测试方法
还是紧张以 Restful API 解释。
3.1 逻辑越权类实质上可以说是不屈安的直接工具引用,可以通过修正可预测的参数获取不同参数下的相应结果。参数可以是用户名、用户 ID,连续的数字,变形的连续数字(各种编码或哈希),通过直接修正参数值完成越权的操作。
示例:
https://a.xx.com/bug/view?bug_no=189225https://a.xx.com/bug/view?bug_no=150462https://a.xx.com/bug/view?bug_no=140374https://a.xx.com/bug/view?bug_no=1067093.2 输入掌握类XXE,Restful API 的注入漏洞,XSS,溢出,分外字符的处理。
示例:
https://a.xx.com/bug/view?bug_no=211103https://a.xx.com/bug/view?bug_no=132270https://a.xx.com/bug/view?bug_no=87143.3 接口滥用没有要求频率限定导致的各种爆破和遍历,如短信验证码爆破、登录爆破、手机号遍历、身份证遍历等。
示例:
https://a.xx.com/bug/view?bug_no=141419https://a.xx.com/bug/view?bug_no=66571https://a.xx.com/bug/view?bug_no=36058https://a.xx.com/bug/view?bug_no=1473343.4 信息透露包括越权导致的信息透露、畸形要求导致的报错相应。
示例:
https://a.xx.com/bug/view?bug_no=171313https://a.xx.com/bug/view?bug_no=160095https://a.xx.com/bug/view?bug_no=1274573.5 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。3.6 做事端配置漏洞如做事端版本信息透露,或做事端程序本身存在漏洞等。
4 API 安全加固根据上面讲的测试方法,一样平常须要做好:
认证和授权掌握用户输入掌握接口要求频率的限定输出掌握添加安全相应头参数参考 API-Security-Checklist 和历史上的渗透测试结果设计适宜自己组织的 API 安全开拓规范。
参考
Web Service 的渗透测试参考:
https://blog.csdn.net/cq1982/article/details/44728489
https://t0data.gitbooks.io/burpsuite/content/chapter17.html
https://www.owasp.org/index.php/Web_Service_Security_Testing_Cheat_Sheet
https://www.soapui.org/security-testing/getting-started.html
http://blog.securelayer7.net/web-services-api-penetration-testing-part-2/
https://www.soapui.org/security-testing/getting-started.html
https://www.anquanke.com/post/id/85910
Restful API 的参考:
https://github.com/shieldfy/API-Security-Checklist
https://www.owasp.org/index.php/REST_Security_Cheat_Sheet
来源:先知社区