IDOR测试常见绕过技巧小结

简介: 一、IDOR介绍二、常见的测试技巧1.改变HTTP请求方法2.路径穿越绕过3.改变Content-type(内容类型)4.用数字ID替换非数字5.大小写替换绕过6.用通配符替换ID7.给Web应用提供一个请求ID,哪怕它没作要求8.HTTP参数污染,为同一参数提供多个值。9.更改文件类型。添加不同的文件扩展名(例如`.json, .xml, .config`)10.JSON参数污染11.在请求体用数组包装参数值12.尝试不同版本的API

  • 一、IDOR介绍
  • 二、常见的测试技巧
  • 1.改变HTTP请求方法
  • 2.路径穿越绕过
  • 3.改变Content-type(内容类型)
  • 4.用数字ID替换非数字
  • 5.大小写替换绕过
  • 6.用通配符替换ID
  • 7.给Web应用提供一个请求ID,哪怕它没作要求
  • 8.HTTP参数污染,为同一参数提供多个值。
  • 9.更改文件类型。添加不同的文件扩展名(例如`.json, .xml, .config`)
  • 10.JSON参数污染
  • 11.在请求体用数组包装参数值
  • 12.尝试不同版本的API


一、IDOR介绍


IDOR,Insecure Direct Object reference,即"不安全的直接对象引用",场景为基于用户提供的输入对象进行访问时,未进行权限验证。IDOR漏洞其实在越权(Broken Access Control)漏洞的范畴之内,也可以说是逻辑漏洞,或是访问控制漏洞,国内通常被称为越权漏洞。


二、常见的测试技巧


1.改变HTTP请求方法

如果某个请求方法无效,那么可以试试其它方法,如GET, POST, PUT, DELETE, PATCH…等,一个通常的技巧就是用PUT和POST进行互换,原因在于服务端的访问控制措施不够完善。

GET /users/delete/VICTIM_ID  --> 403 Forbidden
POST /users/delete/VICTIM_ID  --> 200 OK

2.路径穿越绕过

POST /users/delete/VICTIM_ID  -->  403 Forbidden
POST /users/delete/MY_ID/../VICTIM_ID --> 200 OK
POST /users/delete/..;/delete/VICTIM_ID --> 200 OK

3.改变Content-type(内容类型)

Content-type: application/xml --> Content-type: application/json

4.用数字ID替换非数字

GET /file?id=90ri2xozifke29ikedawOd
GET /file?id=302

5.大小写替换绕过

GET /admin/profile --> 401 Unauthorized
GET /ADMIN/profile --> 200 OK

6.用通配符替换ID

GET /api/users/<user_id>/ --> GET /api/users/*

7.给Web应用提供一个请求ID,哪怕它没作要求

如果Web应用在请求动作中没有ID号要求,那么可以尝试给它添加一个ID号看看会发生什么。比如添加一个随机ID号、用户ID、会话ID,或是其它的对象引用参数,观察服务端的响应内容。

GET /api_v1/messages --> 200 OK
GET /api_v1/messages?user_id=victim_uuid --> 200 OK

8.HTTP参数污染,为同一参数提供多个值。

用HTTP参数污染方式针对同一参数去给它多个不同的值,这样也是可以导致IDOR漏洞的。因为Web应用可能在设计时不会料想到用户会为某个参数提交多个不同值,因此,有时可能会导致Web后端接口的访问权限绕过。

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 /api_v1/messages?user_id[]=ATTACKER_ID&user_id[]=VICTIM_ID
GET /api_v1/messages?user_id[]=VICTIM_ID&user_id[]=ATTACKER_ID

9.更改文件类型。添加不同的文件扩展名(例如.json, .xml, .config)

切换请求文件的类型可能会导致Web服务端在授权处理上发生不同,如在请求URL后加上一个.json,看看响应结果如何。

GET /user_data/123 --> 401 Unauthorized
GET /user_data/123.json --> 200 OK

10.JSON参数污染

POST /api/get_profile
Content-Type: application/json
{"user_id" :<id_1>,"user_id" :<id_2>}

11.在请求体用数组包装参数值

{"id":111} --> 401 Unauthriozied
{"id":[111]}  --> 200 OK

12.尝试不同版本的API

GET /v2/users_data/1234 --> 403 Forbidden
GET /v1/users_data/1234 --> 200 OK
目录
相关文章
|
SQL 测试技术 网络安全
[ 渗透工具篇 ] sqlmap 详解(一) sqlmap 安装详解
[ 渗透工具篇 ] sqlmap 详解(一) sqlmap 安装详解
2722 0
[ 渗透工具篇 ] sqlmap 详解(一) sqlmap 安装详解
|
存储 域名解析 供应链
阿里云 OSS对象存储攻防
本文分为两个部分 第一部分介绍OSS对象存储攻防的方式 第二部分为真实漏洞案例
3406 0
阿里云 OSS对象存储攻防
|
7月前
|
Linux 虚拟化 iOS开发
GNS3 v3.0.5 - 开源免费网络模拟器
GNS3 v3.0.5 - 开源免费网络模拟器
679 3
GNS3 v3.0.5 - 开源免费网络模拟器
|
12月前
|
安全 JavaScript 前端开发
阿里云先知安全沙龙(西安站) ——浅谈XSS漏洞挖掘与构造思路
本文介绍了DOM-XSS构造、运算符的威力和模板字符串妙用三个主题。通过多个实例图解,详细展示了如何利用DOM特性构造XSS攻击、JavaScript运算符在代码中的巧妙应用,以及模板字符串在开发中的灵活运用。这些内容对提升Web安全意识和编程技巧具有重要参考价值。
|
数据安全/隐私保护
OAuth2.0实战案例
OAuth2.0实战案例
312 0
OAuth2.0实战案例
|
Ubuntu 关系型数据库 MySQL
Ubuntu 中apt 安装MySQL数据库
Ubuntu 中apt 安装MySQL数据库
461 0
|
12月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
安全 NoSQL 关系型数据库
2024年护网行动全国各地面试题汇总(3)作者:————LJS
2024年护网行动全国各地面试题汇总(3)作者:————LJS
|
存储 网络协议 安全
Kali渗透测试:拒绝服务攻击(二)
Kali渗透测试:拒绝服务攻击(二)
870 0
|
SQL 安全 JavaScript
0x00.基础漏洞篇
0x00.基础漏洞篇
467 3