某cms代码审计

2023-05-09

前言

  前几个礼拜上课老师带着挖cms的洞,挖出个cookie反序列化注入漏洞,和报错注入并且提交了cnvd。昨天去找源码的时候发现它更新了一个版本,更新日志上也没说修复,就想着看看漏洞还存不存在,或者修复后能不能绕过。

先来看看旧版本的sql报错注入漏洞

查看漏洞文件

                          <?php
//switch(act)
.....
.....
case 'ajax':
$json = new Services_JSON;
switch($_REQUEST['type'])
{
case 'username':
$username = trim($_REQUEST['username']);
$sql = "SELECT count(*) FROM {$table}member WHERE username='$username'";
$count = $db->getOne($sql);
if($count>0) {
echo $json->encode(false);
exit;
} else {
echo $json->encode(true);
exit; ?>

  在member.php139开始,在switch循环中当,可以看见当act=ajax、type=username 、接收$_REQUEST['username']的值去空格后赋值给$username后,拼接进下面的$sql语句中执行,关键的是它没给$username进行任何过滤!!

尝试注入

1.当我查询username=1的时候,回显ture。

2.使用单引号闭合

报错了,说明存在注入。

3.进一步确认

1' and updatexml(1,concat(0x7e,(select version())),1)#

看看更新后的版本

直接到上个版本的注入点进行测试

1.无论我使用什么语句测试都是返回ture

2.使用xdebug调试一下

发现被过滤了。

先使用Beyond Compare对比一下跟新的文件。

1.可以看见include文件夹里的common.php的文件进行了修改,给所有

2.未完。

某cms代码审计的相关教程结束。