米斯特白帽培训讲义 漏洞篇 越权

    越权漏洞是 Web 应用程序中一种常见的安全漏洞。它的威胁在于一个账户即可控制全站用户数据。当然这些数据仅限于存在漏洞功能对应的数据。越权漏洞的成因主要是开发人员在对数据进行增、删、改、查时对客户端请求的数据过于信任而遗漏了权限的判定。所以测试越权就是和开发人员拼细心的过程。

    • 垂直越权:身份不变,权限改变

    这段代码首先从 URL 参数中读取 ID,之后与现存 ID 比对,如果存在则输出 ID 和密码,不存在则报错。这里 ID 是被查询的信息,假设系统里一共就五个 ID。由于这里不存在过滤,那么我们可以不绕过任何东西来查询它们。

    信息遍历属于水平越权,因为用户还是普通用户,但是身份变成了其它的普通用户。当遇到带有的页面时,我们要留意它,因为这里可能存在越权漏洞。我们可以手动测试,将id改为其他值,也可以使用 Burp 的爆破功能来测试。

    一些网站的后台不存在任何用户校验,反之,它会把后台隐藏起来。隐藏之后,公开页面上不存在任何到后台的链接,但是如果直接输入 URL,还是可以访问的。那我们就能使用扫描器扫出后台地址,然后直接访问。

    隐藏式后台属于垂直越权,因为用户的身份没有变,但是它拥有了管理员权限。

    首先看一段代码:

    这段代码模拟了登录页面,如果账号是admin,密码是admin123,则在 Cookie 中将name设置为,然后跳到user.php

    再来看user.php

    这段代码先检验 Cookie中的name,不存在则跳回去,存在则输出其值。

    这段代码的最大问题就是验证极其不严密,它拿到name之后并没有验证它是谁,也没有使用数据库来查询。就像劲舞团里面,我们按特定的键才能通过,他这个漏洞就相当于,游戏需要我们按下,但是我们按下X也能通过,甚至按任意键也可以。

    既然 Cookie 是用户可控的,那我们就可以伪造一个值了,我们接下来会用到 BurpSuite。首先在 浏览器中将代理设为127.0.0.1:8888

    漏洞篇 越权 - 图1

    漏洞篇 越权 - 图2

    假设我们不经过登录页面,直接访问user.php,Burp 中应该能看到拦截到的请求:

    漏洞篇 越权 - 图3

    我们伪造Cookie: name=xxx,然后放行:

    漏洞篇 越权 - 图4

    成功绕过了验证。

    那我们就不必改什么 Cookie了,直接访问服务器拿到纯文本,之后不解释 JS 就可以了。