【API渗透测试】第二步:攻击
2023-11-26 19:38:41 0 举报
AI智能生成
登录查看完整内容
API渗透测试脑图,全方位、全流程的分析API接口如何进行信息收集、如何发现接口风险和如何实施攻击方式,帮你快速梳理出API场景下的风险。
作者其他创作
大纲/内容
OTP 功能
Login 功能
CVV / PIN认证
内部资源欺骗
Referer 操控
IP Range 欺骗
绕过
……
缺乏资源和速率限制
e.g:/api/v1/admin/delete?resource_id=/api/v1/admin/update?resource_id=/api/v1/admin/post?resource_id=
API 方法
DELETE
PATCH
PUT
HTTP 请求方式
管理员功能
匿名用户访问功能需要经过身份验证的用户
匿名用户访问功能检索经过身份验证的用户数据
授权不当
例如:/api/v1/users/info?uID=1/api/v1/admin/users/info?uID=1
例如:/api/v1/users/?id=myID/api/v1/users/all
操控请求方式和功能点
访问“admin”端点下的某些端点时,有时可以检索敏感信息
这里有些应用程序会阻止除当前用户 ID 之外的整数标识符,但是如果您输入以下内容:“all”可以检索整个应用程序的用户信息
例如: /api/v1/Ajax/resource?url=/end/point/api/v1/Ajax/resource?url=../..//etc/passwd
例如: /api/v1/Ajax/resource?url=/end/point/api/v1/Ajax/resource?url=http://127.0.0.1
例如: /api/v1/Ajax/PUT?url=/user/profile/pic/api/v1/Ajax/PUT?url=http://127.0.0.1/shell.ext
通过功能点执行内部资源
利用已有功能可能访问内部功能
例如,利用普通函数尝试通过 LFD 访问内部资源
将普通资源抓取器变成 SSRF 易受攻击的机器,使您能够执行 SSRF 攻击及其上下文
功能级别授权损坏
有些应用程序删除、添加或更新信息的行为是正常的,因此这些行为会被视为基于应用程序逻辑的漏洞。
env
test
example
branches
old releases
公开可访问的其他环境产品功能
heapdump
dump
例如: springboot
自动启用某些框架的默认端点
使用在大多数情况下不受保护的非生产资源来攻击生产资源
资产管理不当
价格操纵
金额操纵
货币操控
金融攻击
删除资源
操纵资源
权限提升例如:{“is_admin”:true}
特权攻击
例如: {\"verified\":true}
email 验证
例如: {\"default_pass\":true}
默认密码启用
在某些应用程序中,这允许用户更改密码而无需限制/验证
绕过限制
批量处理
参数值
URL对象
PDFs
Docs
Invoices
可下载资源
国家身份证
护照
个人信息
用户标识符
一些网络应用程序将用户的附件名称就像他们在应用程序中的 ID 一样e.g: 12.pdf
某些网络应用程序需要上传个人文档才能在其上注册,并且用户应该有权访问他的文档,并且这些文档有时也以其所有者 ID 命名
事务对象/标识符
参数中的值
作为 URL 中的对象
凭证
licenses
医学文件
Usernames
除了上面提到的类型之外用户标识符部分,在用户名中,这些文档也可能将用户名作为文件的名称。例如:cyberguy_10.csv
…… (基于应用的逻辑设计)
检查每个功能有什么
哈希会话/cookie
序列化会话/cookie
编码会话/cookie
加密cookie
检查:
有些 cookie 使用对称加密进行加密,因此如果您能够通过某种方式获得私钥,您将能够解密 cookie 并更改其值
有时,用户的用户名被散列并用作授权值,您可以通过猜测应用程序的用户名并对它们进行散列来利用这一点
认证headers / cookies
应用程序的验证器
从服务器的响应中操控权限或用户状态
一些开发人员定义了用户根据服务器的响应来确定访问资源时权限,如:{\"authorized\
操控
资源访问行为
OTP 存储在某个接口中
由 API 使用某种方法生成
脆弱点
将值从 true 更改为 false 或者是逻辑代表。例如:{“OTP”:1},这里的数字 1 指的是 true
可操控
OTP
在访问应用程序中的特定敏感、关键资源时,某些应用程序需要远程授权才能继续
有些应用需要远程授权,例如移动应用程序,因此我们可以操纵响应绕过用户的内容例如:{\"authorization_done\
远程授权
etc
2FA 访问特定用户内容
认证前
email
username
id
身份证ID
电话号码
护照ID
机密信息/个人信息
标识符的操控
已认证
动态的应用程序响应
有些应用程序通过服务器的响应来确定用户身份,例如,我们可以操作 JSON 响应,然后为注入的电子邮件加载动态生成的内容
应用程序的响应
e.g: /api/v1/users/getToken/12e.g: /api/v1/users/getToken/13
数字标识符
1. e.g: /api/v1/users/getToken/username122. e.g /api/v1/users/getToken/username13
字母+数字标识符
逐步识别
可欺骗的标识符
由于应用程序会生成 QR 码以进行身份验证/授权操作,因此我们可以利用生成前的这些错误配置,来解码生成后的 QR 码,以获得其他用户的 access_tokens
预生成攻击
后端更改的值将用于稍后生成二维码以检索数据。例如:{\"username\":\"someUser\
后端更改的值将用于稍后生成二维码以执行操作。例如:{\"username\":\"someUser\
基于响应内容
实时应用
动态攻击
二维码攻击
对象级访问破坏
验证码重用
验证码太弱
验证码未生效
未授权访问验证码生成接口
验证码攻击
可以用来自动填充验证码
导致爆破攻击
获取验证码间隔时间太短
公共数据库泄露
目标有暴露在公开情报的凭据
凭证填充
admin:admin
administrator:administrator
root:toor
默认高权限凭证
guest:guest
test:test
user:user
默认低权限、自定义权限账号
默认凭证
脆弱的凭证
通过GET Request / URLs传输数据
加密机制薄弱
加密秘钥较弱
明文传递数据
不安全的方式传输敏感数据
身份验证安全性薄弱设计
操纵服务器的响应以绕过动态应用中的身份验证机制
Response可操控
脆弱的API keys
使用较弱的 API Keys
不当的API接口跳转
API Keys 攻击
使用低权限访问令牌执行高权限功能
使用攻击者的访问令牌访问其他用户的内容/数据
访问令牌验证不当
Access token 攻击
脆弱的secret
缺乏 JWT 验证(可接受任何令牌)
例如: None 算法
弱算法
例如:kid注入+SQL注入
签名绕过
JWT攻击
针对时间攻击
基于Token的攻击
实施不安全的认证逻辑
身份验证系统因应用程序而异,因此没有标准方法可以破解它们,这取决于您的创造力
攻击各种认证系统
用户身份验证被破坏
例如: /api/clients/show?id=13
先分析其构造
e.g: /api/{orders}/show?order_id=202
利用系统的检索功能
这里{orders}将成为攻击的一部分,以使应用程序返回敏感信息[这不是必需的,但应用程序可能会检索它]
评论功能
消息功能
通知功能
通讯功能
日志功能
过多的数据暴露
CORS 配置错误
例如: ASP.NET 堆栈跟踪
堆栈跟踪
老旧版本的系统
例如: S3 Buckets
暴露的存储或服务器管理面板
安全措施配置错误
SQL 注入
NoSQL 注入
LDAP 注入
OS Command 注入
XML 注入
注入
API渗透测试脑图-攻击
某些应用程序返回的数据多于所需的数据,因此攻击者可以访问敏感信息,例如 CVV、位置、国家安全号码等。
0 条评论
回复 删除
下一页