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

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

可是,它是什么缘由形成的,请听我娓(xia)娓(bi)道(bi)来。sql

如下全部代码都是我本身写的,可能有不美观,代码错误等等问题,但愿你们能够指正。数据库

漏洞讲解

以下,这是一个登录框,login.phpcookie

file

在平时的测试中,咱们每每能够去尝试直接访问某些关键的文件,若是它的验证代码有问题,咱们将能够直接访问到正常状况没法访问的内容session

这里咱们直接访问index.php页面函数

file

将直接能够访问到咱们只有在登录状况下,才能访问到的内容测试

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

PS:在正常的项目中,可能不是这样写的,可是这里为了方便你们理解,就将全部代码都简写了,原理都是同样的orm

login.phpblog

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进后台

本文由博客一文多发平台 OpenWrite 发布!

相关文章
相关标签/搜索