代码审计之未授权访问及修复

26次阅读

共计 924 个字符,预计需要花费 3 分钟才能阅读完成。

未授权访问,在平时的测试中,应该是比较容易的一个漏洞,只需要通过御剑等等软件来进行扫描,就可能得到一个未授权访问漏洞。

但是,它是什么原因造成的,请听我娓 (xia) 娓(bi)道 (bi) 来。

以下所有代码都是我自己写的,可能有不美观,代码错误等等问题,希望大家可以指正。

漏洞讲解

如下,这是一个登陆框,login.php

在平时的测试中,我们往往可以去尝试直接访问某些关键的文件,如果它的验证代码有问题,我们将可以直接访问到正常情况无法访问的内容

这里我们直接访问 index.php 页面

将直接可以访问到我们只有在登陆情况下,才能访问到的内容

接下来,我们看一下代码是如何写的

PS:在正常的项目中,可能不是这样写的,但是这里为了方便大家理解,就将所有代码都简写了,原理都是一样的

login.php

logins.php

index.php

PS:包含的 fun.php 为数据库操作函数

相信大家都能看懂这部分代码

login.php 为登陆页面的代码,仅有一个 form 表单,在这里我们可以看到,它是将内容都传给了 logins.php

logins.php 内容为接收传过来的账号密码,先判断账号密码是否都填写了,然后带入数据库进行查询,如果存在,设置 session 并返回登陆成功,并跳转到 session 页面;否则将返回登陆失败。

接下来,主要是关注 index.php 文件的代码,这里才是我们造成未授权访问的最主要的部分

这里我将查询时的 uid 默认设置为 1,方便我们操作

这里可以很明显的知道,它没有进行任何的检测,直接进行了 sql 查询,然后就可以在页面中查看到内容了

简单修复

因为在登陆成功的时候,设置了 session,我们这里就可以直接在开头加一个判断 session 值的,如果 session 不存在,就直接跳出,不进行 sql 查询。

修改后代码如下

此时的效果为

就可以防止了未授权访问

拓展

这里还是要提一下,在写代码的时候一定要判断 session 值,而不能判断 cookie,众所周知 cookie 值是存放在客户端,是可以伪造的。

经典案例,请阅读 –》传销站经典案例之篡改 cookie 进后台

文章首发公众号:无心的梦呓(wuxinmengyi)

这是一个记录红队学习、信安笔记,个人成长的公众号

扫码关注即可

正文完
 0