web渗透--45--不安全的对象引用

1、漏洞描述

在有不安全直接对象引用漏洞的情况下,通过修改用于直接检索对象的参数的值,攻击者就可以绕过授权对资源进行访问。被访问的资源甚至可以完全属于其他用户,也可以是系统文件等。该漏洞是应用程序未做充分授权检查的情况下,使用用户提供的输入数据对对象进行检索造成的。

2、测试方法

测试人员首先需要找出所有应用程序中使用用户输入索引对象的位置。例如,使用用户输入访问数据库的行、文件、应用页等。接下来,测试人员需要检测是否可以通过修改引用对象的参数,来索引属于其他用户的对象来绕过授权机制。

测试直接对象引用的最佳的办法是需要至少两个拥有不同对象和功能的账户。通过这样两个账户,来检测是否存在被直接引用的应用程序功能。

场景一:直接用于检索数据库记录的参数

请求示例:

http://foo.bar/somepage?invoice=12345

在这个示例中,参数invoice值被用于数据库中表单索引。应用程序使用这个参数值查询数据库,然后返回结果信息给用户。

既然invoice的值被直接用于查询中,可以通过修改这个参数就能无视信息的归属,而检索任意数据。测试人员可以使用其他用户的invoice标识数据,并检查是否存在非授权访问的现象。

场景二:用于在系统执行操作的参数

请求示例:

http://foo.bar/changepassword?user=someuser

在这个示例中,参数user告诉应用程序应该修改哪个用户的密码。测试人员可以尝试能否使用当前登录的账户修改其他用户的密码。

场景三:用于检索文件系统资源的参数

请求示例:

http:

你可能感兴趣的:(web渗透)