什么是IDOR(不安全的直接对象引用)

什么是IDOR(不安全的直接对象引用)自从2010年开始,不安全的直接对象引用(IDOR)就已经成为了OWASPTop10Web应用安全风险中影响程度排名第四的安全漏洞了。IDOR将允许一名授权用户获取其他用户的信息,意指一个已经授权的用户通过更改访问时的一个参数,从而访问到了原本其并没有得到授权的对象。Web应用往往在生成Web页面或服务时会用它的真实名字,且并不会对所有目标对象的请求访问进行用户权限检测,所以这就造成了不安…

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

自从2010年开始,不安全的直接对象引用(IDOR)就已经成为了OWASP Top 10 Web应用安全风险中影响程度排名第四的安全漏洞了。

IDOR将允许一名授权用户获取其他用户的信息,意指一个已经授权的用户通过更改访问时的一个参数,从而访问到了原本其并没有得到授权的对象。Web应用往往在生成Web页面或服务时会用它的真实名字,且并不会对所有目标对象的请求访问进行用户权限检测,所以这就造成了不安全的对象直接引用的漏洞。换句话说,不安全的直接对象引用漏洞将允许攻击者通过页面或服务向特殊对象资源发送访问请求,如果系统不会对请求发送者的身份权限进行合理认证的话,就说明这个系统中存在不安全的直接对象引用。

OWASP定义
不安全的直接对象引用允许攻击者绕过网站的身份验证机制,并通过修改指向对象链接中的参数值来直接访问目标对象资源,这类资源可以是属于其他用户的数据库条目以及服务器系统中的隐私文件等等。导致这种情况出现的原因是,系统在接受用户输入并利用输入信息获取对象之前没有对用户身份权限进行检测。

应用程序在SQL查询语句中直接使用了未经测试的数据,而攻击者可以利用这一点来访问数据库中的其他账号数据。

漏洞利用场景
我们假设下面这种场景:Web应用允许已登录用户修改自己的秘密值。首先,这个秘密值肯定是要跟用户在数据库中的账号绑定在一起的。当前用户“bee”已经登录了Web服务器,他可以随意修改他自己的秘密值,但他并不打算这样做。因为他准备做一次恶作剧,然后修改其他用户的秘密值。

不安全的直接对象引用漏洞入门指南

在BurpSuite的帮助下,我们捕获到了浏览器发送的请求。你可以从下图中看到,登录用户为bee,秘密值为hello。接下来,我们使用其他用户来修改这个用户的信息。

SQLquery = “SELECT * FROM useraccountsWHERE account = ‘bee’;
[外链图片转存失败(img-lmsoSx8Z-1567062948873)(https://image.3001.net/images/20170706/14993334728966.png)]
不安全的直接对象引用漏洞入门指南

接下来,我们准备将该用户的用户名修改为raj。想要在应用中执行这种攻击的话,则至少需要两个用户账号。

SQLquery = “SELECT * FROM useraccountsWHERE account = ‘raj’;
在这里插入图片描述
不安全的直接对象引用漏洞入门指南

非常好!!!我们成功地修改了用户raj的秘密值。请注意,如果攻击目标是任意一个官方网站,那么攻击者的目标肯定是管理员账号。

不安全的直接对象引用漏洞入门指南

场景二
接下来我们一起看看第二种漏洞利用场景,这跟绝大多数的IDOR攻击场景非常相似。

现在我们准备通过一个电影购票网站来在线订购电影票,示例网站地址为 bookmyshow.com,这个网站中存在不安全的直接对象引用漏洞。

在这个网站中,我打算订购十张电影票,每张票的加个为十五欧元。接下来,我们确认订单,然后使用BurpSuite来捕捉浏览器请求。

不安全的直接对象引用漏洞入门指南

捕获到的请求如下图所示,高亮部分包含了需要订购的电影票数量、每张票的价格(十五欧元)以及订单类型。接下来,我们就要尝试修改订单金额,将加个修改成我们想要的价格:

不安全的直接对象引用漏洞入门指南

我将单张票价修改为了一欧元,这也就意味着我只需要花十欧元就能买十张票了。下图中显示了请求信息:

不安全的直接对象引用漏洞入门指南
[外链图片转存失败(img-laLrtyf7-1567062911849)(https://image.3001.net/images/20170706/14993335431357.png)]
没错,我们成功地用十欧元购买了十张电影票!

总结
这篇文章只是一篇不安全的直接对象引用漏洞入门指南,这种漏洞的利用方式和利用场景还远远不止本文所描述的这么简单,感兴趣的用户可以自行动手搭建一个这样的测试环境,然后亲自尝试去利用这种漏洞,毕竟实践出真知嘛。有关此漏洞的其他信息,可参考OWASP给出的内容。

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

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

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


相关推荐

  • hive表数据去重

    hive表数据去重

    2021年5月13日
    148
  • 你愿意成为一名全栈设计师吗?

    你愿意成为一名全栈设计师吗?

    2022年3月5日
    38
  • 学生个人网页制作html表格_用html制作学生成绩表

    学生个人网页制作html表格_用html制作学生成绩表HTML的嵌入式精美学生表格代码Contributor:国民老公45Type:代码Datetime:2019-11-0620:35:07Favorite:4Score:2返回上页Report请选择举报理由:AdvertisingPoliticallyPornographicGarbagearticleOtherCollectionModifythetypolegend{text-…

    2022年8月11日
    6
  • Python wxPython基本教程「建议收藏」

    Python wxPython基本教程「建议收藏」PythonwxPython在资源上比较小,而且官方文档也不好找,wxPython在python2.x和python3.x安装上有区别:以下为python3.x安装为例:1.网上下载whl文件安装:路径:https://wxpython.org/Phoenix/snapshot-builds/文件名解释:wxPython_Phoenix-3.0.3.dev2812+b3485d4-c…

    2022年5月21日
    33
  • 解决哈希冲突的方法「建议收藏」

    解决哈希冲突的方法「建议收藏」在实际的应用中,选取合适的哈希函数可减少冲突,但冲突是不可避免的。所以我就想给大家说几种解决哈希冲突的方法啦~首先就是开放定址法,用这个方法处理冲突的核心思想就是在冲突发生的时候,形成一个地址序列,顺着这个序列挨个去检查探测,一直等到找到一个“空”的开放地址。把我们发生冲突的关键字值存放到这个“空”地址中去。这个地址的算法一般就是:Hi=(H(key)+di)%m  这里面的i=1,2,。

    2022年6月17日
    41
  • Apache有哪两种虚拟主机的方式_服务器如何搭建虚拟主机

    Apache有哪两种虚拟主机的方式_服务器如何搭建虚拟主机Apache虚拟主机的实现方式有3种。基于IP的虚拟主机基于端口的虚拟主机基于域名的虚拟主机配置环境系统:CentOS7.5工具:XShell6**配置准备**1.安装httpdyuminstallhttpd-y2.查看安装了内容rpm-qlhttpd|less3、配置Selinux文件,SELINUX=disabled。4、关闭防火墙s…

    2025年12月16日
    2

发表回复

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

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