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

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

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

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

漏洞讲解

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

file

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

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

file

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

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

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

login.php

file

logins.php

file

index.php

file

file

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

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

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

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

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

file

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

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

简单修复

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

修改后代码如下

file

此时的效果为

file

就可以防止了未授权访问

拓展

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

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

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

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

扫码关注即可

file

posted @ 2019-09-28 08:35  信安本原  阅读(335)  评论(0编辑  收藏  举报