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

0x00前言

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

0x01 文件包含漏洞

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

1608391500_5fde1b4c23aa719c7e3c6.png!small?1608391502369

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

1608391519_5fde1b5f2879a1b7ca0bd.png!small?1608391521270

1608391522_5fde1b623d1377f9681c0.png!small?1608391524477

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

1608391533_5fde1b6da84b27e161af2.png!small?1608391535881

2.逻辑漏洞

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

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

1608391551_5fde1b7f1fb5b86bff8b5.png!small?1608391553254

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

1608391617_5fde1bc10563aa1a75ab2.png!small?1608391619185

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

1608391620_5fde1bc4d37d449728368.png!small?1608391622976

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

1608391626_5fde1bca709bc711212b1.png!small?1608391628530

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

1608391632_5fde1bd0dc77e60f9c1b0.png!small?1608391635347

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

1608391640_5fde1bd812791751e2c94.png!small?1608391642315

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

1608391648_5fde1be09d9207e4731a4.png!small?1608391650664

1608391655_5fde1be72cdb018b2efa5.png!small?1608391657471

3.sql注入

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

1608391660_5fde1bec335f02b305afb.png!small?1608391662362

  1. 直接构造payload:1′ or updatexml(1,concat_ws(database(),0x7e,0x7e),1) #1608391664_5fde1bf0bf14f0be1ef6b.png!small?1608391666917

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

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论