代码角度分析及简单防护之未授权访问

文章首发公众号:无心的梦呓
代码角度分析及简单防护之未授权访问_第1张图片
安全库:http://www.seclibs.com/
网络安全爱好者的安全导航,专注收集信安、红队常用网站、工具和技术博客

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

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

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

漏洞讲解

如下,这是一个登陆框,login.php
代码角度分析及简单防护之未授权访问_第2张图片
在平时的测试中,我们往往可以去尝试直接访问某些关键的文件,如果它的验证代码有问题,我们将可以直接访问到正常情况无法访问的内容

这里我们直接访问index.php页面
代码角度分析及简单防护之未授权访问_第3张图片
将直接可以访问到我们只有在登陆情况下,才能访问到的内容

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

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

login.php
代码角度分析及简单防护之未授权访问_第4张图片
logins.php
代码角度分析及简单防护之未授权访问_第5张图片
index.php
代码角度分析及简单防护之未授权访问_第6张图片
代码角度分析及简单防护之未授权访问_第7张图片
PS:包含的fun.php为数据库操作函数

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

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

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

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

代码角度分析及简单防护之未授权访问_第8张图片
这里我将查询时的uid默认设置为1,方便我们操作

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

简单修复

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

修改后代码如下
代码角度分析及简单防护之未授权访问_第9张图片
此时的效果为
代码角度分析及简单防护之未授权访问_第10张图片
就可以防止了未授权访问

拓展

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

  • 本文首发于圈子社区

你可能感兴趣的:(信息安全)