熊海cms代码审计-学习篇 – 作者:掌控安全帆先生

38次阅读
没有评论

0x00前言

本次尝试审计了熊海cms,总结一下审计的几个漏洞

0x01 文件包含漏洞

  1. 使用seay代码审计,自动审计,看到第一条可能存在文件包含漏洞打开进行审计

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. index.php文件源代码,get方式获取r传参,接着三元运算符,如果值是空的就包含index,这里的r变量是可控的,可以实现文件包含漏洞。构造payload:r=../xx

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. admin/index.php文件下同样存在文件包含漏洞

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

2.逻辑漏洞

  1. 登陆处存在登陆处的逻辑漏洞,如下有一段登陆的判断代码,这里如果添加一个cookie,给任意一个传参,那么就可以绕过登陆

$user=$_COOKIE['user'];
if($user==""){
header("Location: ?r=login");
exit;  
}
  1. 首先来看一下后台登陆的一个流程,使用phpstrom debug断点。

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. 它的登陆流程使用了4个文件,首先r默认值为login,文件包含login.php,追踪

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. login.php下文件包哈了inc/conn.php,这个文件就是获取传入的账号密码去判断。继续追踪到文件下

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. 这个inc/conn.php文件下主要是连接mysql用的

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. 最后又回到了login.php,他回去判断登陆的用户名和密码是否有效。最后还写入了cookie,user变量

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. 这个cookie的接收漏洞点位置在:./inc/check_login.php下,刚才第一句话就说了,这里只判断了user等于空的操作。如果它不等于空,给一个任意值那么他还是会登陆成功的,来操作一下。正常登录的情况下是r=index

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. 那么退出后台,新增一个cookie,给一个任意值,然后输入r=index,登陆成功

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

3.sql注入

  1. 在admin/login.php下,执行sql语句的位置存在sql注入,没有做过滤,直接讲用户输入的账号传入到$user中,不过这里不能用万能密码,它先判断了$login不等于空执行语句,又去判断了$password,如果密码不正确则退出。这里使用了mysql_error函数,可以使用报错注入来进行操作

熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

  1. 直接构造payload:1′ or updatexml(1,concat_ws(database(),0x7e,0x7e),1) #熊海cms代码审计-学习篇 - 作者:掌控安全帆先生

这个cms还有许多xss,就没写出来了

来源:freebuf.com 2020-12-19 23:29:50 by: 掌控安全帆先生

正文完
 0
评论(没有评论)