越权漏洞(IDOR)测试技巧「建议收藏」

越权漏洞(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介绍IDOR,InsecureDire.

大家好,又见面了,我是你们的朋友全栈君。


一、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

三、总结

IDOR是一类逻辑漏洞的思路,思路主要是贴合业务。需要站在业务流的角度去思考,如何产生安全隐患。案例只是对于思路的一种应用,对于不同的业务流程和特点,IDOR是能够变化出各种各样的独特思路。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131615.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • cglib BeanCopier的使用

    cglib BeanCopier的使用一、概述  选择Cglib的BeanCopier进行Bean拷贝的理由是,其性能要比Spring的BeanUtils,Apache的BeanUtils和PropertyUtils要好很多,尤其是数据量比较大的情况下。  之前的一篇文章:Easy-mapper教程——模型转换工具提到了Cglib的BeanCopier使用ASM字节码生成技术,所以性能会非常好。  下面的文章内容直接整理…

    2025年9月13日
    7
  • 《java虚拟机》汇总所有关键要点

    《java虚拟机》汇总所有关键要点《java虚拟机》汇总所有知识点

    2022年10月18日
    3
  • drupal教程 Drupal安装指南

    drupal教程 Drupal安装指南译者:老葛从开始学习Drupal到现在,安装的都是5.1,5.2的版本,由于使用的是wdp开发工具,所以安装基本上不需要做什么的,大概都是建立数据库名,修改一下settings.php配置文件,在浏览器里面敲入install.php,就可以自动完成安装了。所以说,drupal的安装是极其简单的,而且很容易上手。  但是由于客户的要求,需要使用drupal4.7的版本,由于用过5.1+的版

    2022年5月2日
    46
  • android app反编译_安卓反编译教程

    android app反编译_安卓反编译教程在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。下面是我参考了一些文章后简单的教程详解。(注:反编译不是让各位开发者去对一个应用激活成功教程搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平。)测试环

    2025年7月3日
    4
  • java中string转date类型_cookie和session区别

    java中string转date类型_cookie和session区别注意事项格式描述字符串为”yyyy-MM-dd”特别提醒:月份描述字符串为大写的M。importjava.text.SimpleDateFormat;importjava.util.Date;publicDatedateFromString(StringdateStr){ SimpleDateFormatsimpleDateFormat=newSimp…

    2022年10月3日
    4
  • ant接口用什么天线_电视后面有个接口写的是 标准ANT 75 欧输入,请问是什么意思,是天线吗?可不可以接闭路线啊?…「建议收藏」

    可以接的,ANT是天线接口的意思,ANT是的缩写。ANT天线输入端口,又称射频接口,是家庭有线电视采用的接口方式。射频成像原理是将视频信号(CVBS)和音频信号混合编码输出,然后复经过一系列的分离/解码过程,在显示设备上输出成像。输出质量不是很理想,因为步制骤太复杂,音频和视频混合编码会相互干扰。目前生产的液晶彩电有这个接口,在接收时,只需连接有线电视的可靠性线,就可以直接观看有线电视。扩展资料:…

    2022年4月8日
    167

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号