0x00前言
本次尝试审计了熊海cms,总结一下审计的几个漏洞
0x01 文件包含漏洞
-
使用seay代码审计,自动审计,看到第一条可能存在文件包含漏洞打开进行审计
-
index.php文件源代码,get方式获取r传参,接着三元运算符,如果值是空的就包含index,这里的r变量是可控的,可以实现文件包含漏洞。构造payload:r=../xx
-
admin/index.php文件下同样存在文件包含漏洞
2.逻辑漏洞
-
登陆处存在登陆处的逻辑漏洞,如下有一段登陆的判断代码,这里如果添加一个cookie,给任意一个传参,那么就可以绕过登陆
$user=$_COOKIE['user'];
if($user==""){
header("Location: ?r=login");
exit;
}
-
首先来看一下后台登陆的一个流程,使用phpstrom debug断点。
-
它的登陆流程使用了4个文件,首先r默认值为login,文件包含login.php,追踪
-
login.php下文件包哈了inc/conn.php,这个文件就是获取传入的账号密码去判断。继续追踪到文件下
-
这个inc/conn.php文件下主要是连接mysql用的
-
最后又回到了login.php,他回去判断登陆的用户名和密码是否有效。最后还写入了cookie,user变量
-
这个cookie的接收漏洞点位置在:./inc/check_login.php下,刚才第一句话就说了,这里只判断了user等于空的操作。如果它不等于空,给一个任意值那么他还是会登陆成功的,来操作一下。正常登录的情况下是r=index
-
那么退出后台,新增一个cookie,给一个任意值,然后输入r=index,登陆成功
3.sql注入
-
在admin/login.php下,执行sql语句的位置存在sql注入,没有做过滤,直接讲用户输入的账号传入到$user中,不过这里不能用万能密码,它先判断了$login不等于空执行语句,又去判断了$password,如果密码不正确则退出。这里使用了mysql_error函数,可以使用报错注入来进行操作
-
直接构造payload:1′ or updatexml(1,concat_ws(database(),0x7e,0x7e),1) #
这个cms还有许多xss,就没写出来了
来源:freebuf.com 2020-12-19 23:29:50 by: 掌控安全帆先生
请登录后发表评论
注册