2017版OWASP top 10 将API安适纳入此中,足以说明API被广泛使用且安适问题严重。本身测验考试整理一下,但限于本人搬砖经验还不敷、程度有限,本文只能算是抛砖引玉,但愿大伙不吝见教。
了解Web Service(API) Web Service是一种跨编程语言和跨操纵系统平台的长途挪用技术。目前被广泛运用于移动端APP、物联网IoT、WEB应用等场景。 主流Web Service实现方法 SOAP/XML 简单东西访谒协议(SOAP)接口,通过HTTP进动作静传输。它是基于xml语言开发,使用Web处事描述语言(WSDL)来进行接口描述。是一种很成熟的Web Service实现方法,整体上有被REST代替的趋势。 REST/JSON 表示层状态转移(REST),素质上讲的是一种ROA(Resource Oriented Architecture)架构气势派头。切合这种架构气势派头的API接口,我们称之为RESTful API。 PS: REST气势派头的接口既可以使用JSON,也可以使用XML,但由于JSON越发轻,故而根基不用XML。XML示例:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8" ?>
<person>
<name>Jason</name>
<age>99</age>
<sex>male</sex>
<contact>
<mobile>13888888888</mobile>
<email>[email protected]</email>
<wechat>bingo</wechat>
</contact>
</person>
JSON示例:
1
2
3
4
5
6
7
8
9
10
11
12
{
"person": {
"name": "Jason",
"age": "99",
"sex": "male",
"contact": {
"mobile": "13888888888",
"email": "[email protected]",
"wechat": "bingo"
}
}
}
API安适 API的安适要素
认证和鉴权 - 认证用户身份 & 确定用户权限
凡是情况下,,webAPI是基于HTTP协议的,也是无状态传输的。故而认证任务就需要我们本身实现,所以原则上每一次API请求都需要带上身份认证信息,凡是使用的是API key。
加密和签名 - 保证信息的保密性和完整性
凡是使用SSL/TLS来加密通信动静,由API客户端发送和接收。签名用于确保API请求和响应在传输过程中未被篡改。
缝隙 - 注入打击 & 敏感数据泄露 & 越权访谒
打击面检测尽可能多的了解API端点、动静、参数、行为。
发明API中可能存在问题的元数据。
记录流量进一步学习API
爆破 - 暴力破解路径或资源
打击方法1.模糊测试
使用自动化工具并行的将大量的随机内容(各类可能的值或可能的打击向量)作为输入参数进行永劫间的测验考试,并自动验证响应信息,确认是否获取到不测收获(系统或代码相关的信息)。2.注入打击
使用SQL,XML,Xpath,JSON,JavaScript等的常见打击向量测验考试进行代码注入,并验证不测响应。3.无效/越界内容
测验考试各类无效或者超范畴的内容,并验证响应信息。4.恶意内容
在上传成果点测验考试上传可执行文件或脚本等,使处事器测验考试进行解析。5.XSS
上传常见打击向量进行XSS(反射型,存储型等)测试。6.CSRF
测试API是否含有token,token是否能复用,是否可被伪造。7.不安适的直接东西引用
测验考试对挨次化的id号进行越权访谒,测验考试访谒无权限的要领或操纵。8.其它考虑
会话认证(token是否正确使用) 安适配置(前述打击照成系统/应用等信息泄露) 打击演示 1. DVWS | WSDL Enumeration前端页面
源码中袒露wsdl文件
wsdl文件中可以检察到四种要领
使用READY!API(SOAPUI升级版)可以直不雅观的看到4种要领并进行接口测试
测验考试使用check_user_information要领,测验考试填入username(实际测试中可能需要结合爆破方法),接口返回了相关数据,从而导致数据泄露。
提交正常请求:
1
<name>Mr.Bingo</name>
提交payload:
1
<?xml version="1.0"?> <!DOCTYPE bingo [ <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><name>&xxe;</name>
特别测试: