网安-API-crAPI

发布于:2025-07-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

API

API使用场景

操作系统系统功能级别调用

前端调用后端 

系统内部相互调用

企业间相互调用 

SDK

API格式

API类型

API文档生成工具

API安全的目标

常见的API风险

1.欺骗(Spoofing)

2.篡改(Tampering)

3.抵赖(Repudiation)

4.信息泄露(Information disclosure)

5.拒绝服务(Denial of service)

6.越权(Elevation ofprivilege)

 

OWASP API TOP 10

总结:

API安全与Web安全

API安全特点

API安全测试清单

API 安全测试的 31 个 Tips

REST 安全备忘单

crAPI

API1 - 失 效的对象级别授权(水平越权)

API2 - 失效的用户身份验证

API3 - 过度的数据暴露

API4 - 资源缺乏和速率限制

API5 - 失效的功能级授权(垂直越权)

API6 - 批量分配

API7 - SSRF

API8 - 注入

API9 - 资产管理不当

API10 - 日志和监控不足


API

ApplicationProgrammingInterface 应用编程接口

一般指一些预先定义的函数,无需访问源码和理解工作细节,轻松实现与其他软件的交互,API是两个应用程序之间的通信桥梁。

API使用场景

数据交换
API接口可以通过定义一定的数据格式和协议,实现不同系统之间的数据交互
应用集成
如果一个应用需要使用另外一个应用的数据或者功能,可以通过API接口来实现应用之间的集成
数据分析(fofa)
API接口可以帮助用户获取大量的数据,并对这些数据进行分析处理
自动化任务
API接口可以让程序实现自动化操作,提高工作效率
移动应用开发
API接口可以提供各种数据和服务,帮助开发者快速构建移动应用

操作系统系统功能级别调用

1.Windows操作系统根据硬件的架构,提供了现成的操作系统接口
2.Java语言的核心类库调用了Windows操作系统的接口
3.直接调用了Java编程语言的API(import一下即可),实现了文件读取

前端调用后端 

系统内部相互调用

企业间相互调用 

SDK

SoftwareDevelopmentKit软件开发工具包
通常SDK里面会包含很多API
SDK 将开发和运行软件所需的一切都集中在一处。此外,它们还包含文档、教程和指南之类资源,以及用于加快应用程序开发的 API 和框架。

API格式

1.服务器地址
2.通信协议http tcp(传输层,通信更加稳定) 消息中间件MQ(中间件先储存请求再由服务器慢慢响应)
3.endpoint
4.版本
5.消息格式
6.请求响应字段描述
7.响应码
8.接口安全要求

 
OPENAPIMAP
OpenAPI Map

API类型

1.SOAP/WebService(HTTP+XML)

API文档生成工具

Swagger
API文档示例:
百度地图API
https://lbsyun.baidu.com/
FOFA API
https://fofa.info/api
微信支付
https://pay.weixin.qq.com/docs/merchant/products/jsapi- payment/introduction.html
钉钉API
https://open.dingtalk.com/document/ability/list
短信平台
https://unisms.apistd.com/pricing/standard/


API安全的目标

网络安全、信息(数据)安全、应用安全
信息系统安全三要素(CIA)
1.机密性(Confientiality)
2.完整性(Integrity)
3.可用性(Availability)

常见的API风险

1.欺骗(Spoofing)
2.篡改(Tampering)
3.抵赖(Repudiation)
4.信息泄露(Information disclosure)
5.拒绝服务(Denial of service)
6.越权(Elevation ofprivilege)
https://learn.microsoft.com/zh-cn/azure/security/develop/threat- modeling-tool-threats#stride-model

1.欺骗(Spoofing)

伪装成某个人或者某个物体
举例1:某银行使用6位验证码登录。黑客对验证码进行暴破,登录成功,并且转
移了用户的资金。
举例2:黑客使用密码重置漏洞,修改了用户的密码,登录成功。
问题:登录或重置密码的API不安全,没有验证身份

2.篡改(Tampering)

将不希望被修改的数据、消息或设置改掉
举例1: 用户转账1元,在发送转账请求的时候,被黑客拦截到数据,并且篡改了
交易金额和账号,导致向黑客账号转账10000元。
问题:转账的API不安全,没有对报文加签

3.抵赖(Repudiation)

用户不承认自己的操作
举例1:用户使用信用卡5万元,但是拒不还款,并且声称不是自己消费的。
问题:消费的API不安全,没有抗抵赖性

4.信息泄露(Information disclosure)

将你希望保密的信息披露出来
举例1:网站明文传输密码,被黑客监听抓包
举例2:用户通过枚举ID,获取了全站用户的敏感信息
问题:登录、查询用户信息的API不安全,没有控制权限

5.拒绝服务(Denial of service)

阻止正常用户访问信息和服务
举例1:黑客向服务器发送巨量请求,导致系统资源被耗光,服务瘫痪
举例2:购物网站放出了1万张优惠券,直接被薅羊毛团队用机器一次抢完
问题:某些消耗系统大资源的API不安全;领取优惠券的API不安全,没有做速率
限制

6.越权(Elevation ofprivilege)

攻击者做了你不希望他能做的事
举例1:用户通过修改ID,获得了其他用户的信息
举例2:用户找到了某些未公开的管理接口,对网站做了高权限的操作
问题:查看个人信息的API不安全,没有控制权限

OWASP API TOP 10

英文版:https://owasp.org/API-Security/editions/2023/en/0x00-header/
中文版:http://www.owasp.org.cn/OWASP-CHINA/owasp-project/owasp- api-security-top-104e2d6587987976ee/
参考资料:
《OWASP-API安全Top10-2023-v1-0818.pdf》
《OWASP API TOP 10详细解读.docx》

总结:

1、水平越权漏洞(ID被遍历操作)
2、身份验证漏洞(重置邮箱漏洞)
3、操作了未被允许的字段(查询用户密码或更新用户ID)
4、高并发缺陷(DDoS)
5、垂直越权(普通用户使用管理员接口)
6、业务安全漏洞(薅羊毛、恶意退款)

API安全与Web安全

2021年 OWASP TOP 10榜单
A01访问控制失效(Broken Access Control)——垂直、水平越权
A02加密失败(Cryptographic Failure)——属性级别授权失败
A03注入(Injection)(旧版有)
A04不安全设计(Insecure Design)——敏感业务访问无限制
A05安全配置错误(Security Misconfiguration)——错误的安全配置
A06易受攻击和过时的组件(Vulnerable and Outdated Component)
A07识别与认证失败(Identification and Authentication Failure)——认证失效
A08软件和数据完整性故障(Software and Data Integrity Failure)
A09安全日志与监测失败(Security Logging and Monitoring Failure)(旧版有)
A10服务器端请求伪造(Server-Side Request Forgery)——SSRF

API安全特点

1、入口更多
2、更新变化更多
3、无法靠参数过滤防护

API包括:

后端提供给前端的。

提供给公司内部其他系统的。

提供给其他公司的。

提供给大众用户的。

API安全测试清单

API 安全测试的 31 个 Tips

(英文)
GitHub - inonshk/31-days-of-API-Security-Tips: This challenge is Inon Shkedy's 31 days API Security Tips.
API 安全测试的 31 个 Tips - Eleven_Liu - 博客园(中文)API 安全测试的 31 个 Tips - Eleven_Liu - 博客园

REST 安全备忘单

REST Security - OWASP Cheat Sheet Series

crAPI

 (基于OWASP API TOP 10 2019) 

注册账号


API1 - 失 效的对象级别授权(水平越权)

挑战1:访问其它用户车辆的详细信息
挑战2:访问其它用户的机械报告

抓包看到自己车辆的编号

添加一个机械报告,抓包看看

响应中有个连接看到id=34

 drop后,利用之前抓到的get请求包,尝试改变id的值获取其他用户的机械报告

 

API2 - 失效的用户身份验证

挑战3:重置其它用户的密码

退出账号后找到忘记密码的地方,先用自己的邮箱尝试找回自己的密码时,发现会向邮箱发送四位数的验证码。

利用上一关拿到的邮箱

 抓包爆破OTP

 

结果达到尝试次数的上限,(验证码过期)

因为接口的限制,将v3改为v2,降低版本后重发验证码

 得到验证码,密码重置成功,尝试登录

 

API3 - 过度的数据暴露

挑战4:找到泄露其它用户敏感信息的API接口
挑战5:找到泄露视频内部属性的API接口

泄露其它用户敏感信息的API接口:

 

泄露视频内部属性的API接口:

在个人信息页面上传一个视频,抓包

 

API4 - 资源缺乏和速率限制

挑战6:使用"contact mechanic"功能完成第7层DoS

抓包后看到

API5 - 失效的功能级授权(垂直越权)

挑战7:删除另一个用户的视频

拦截到put包,修改成delete

 换成admin

API6 - 批量分配

挑战8:免费获得一件物品
挑战9:将您的结余增加1000元或以上
挑战10:更新内部视频属性

购买一个座椅,抓order details包看到购买信息

再买一个,抓购买的包

修改为

成功零元购

 

 

修改购买包

{
    "product_id":36,
    "quantity":20,
    "status":"returned"
}

成功return,获得返回的钱

 

抓修改包,换成GET

添加修改属性

API7 - SSRF

挑战11:让crAPI发送一个HTTP调用到“www.baidu.com”并返回HTTP响应

SSRF

1.扫描内网端口
2.结合其他漏洞发起攻击,比如SQL注入
3.读取敏感文件,比如file、dict、gopher协议
4.访问大文件,造成服务器内存溢出
5.结合Redis获得shell


API8 - 注入

挑战12:想办法在不知道优惠券代码的情况下获得免费优惠券

挑战13:通过修改数据库找到一种方法来兑换您已经认领的优惠券

抓优惠券的包

特殊字符被编码

API9 - 资产管理不当

挑战14:查找不为用户执行身份验证检查的接口

同API3

API10 - 日志和监控不足

挑战 15 - 找到伪造有效 JWT 令牌的方法


网站公告

今日签到

点亮在社区的每一天
去签到