对SEMCMS再一次审计

# 前言 最近在社区看文章的时候,发现了这一篇文章:https://forum.butian.net/share/291 感觉应该还有洞,所以通读了下代码,所以有了这篇文章。 # sql注入1 在/Include/web_inc.php中我们可以...

前言

最近在社区看文章的时候,发现了这一篇文章:https://forum.butian.net/share/291 感觉应该还有洞,所以通读了下代码,所以有了这篇文章。

sql注入1

在/Include/web_inc.php中我们可以发现这一串代码:

我们可以看到先让$web_urls接收$_SERVER["REQUEST_URI"]的值,然后分割后,传进web_language_ml函数中,所以继续跟进该函数:

很明显的sql注入,而且是用$_SERVER["REQUEST_URI"]接收值,而代码只过滤了传入的参数,对这个是没有对其过滤,所以直接注入就ok了

这里用的是时间盲注,但是$_SERVER["REQUEST_URI"]接收值不会解码,所以空格要简单的绕过一下,不然传入的就是%20,后面的注释直接or'就好了!

sql注入2

如果想要访问后台的文件,其所有文件都存在这段代码:

<?php include_once 'SEMCMS_Top_include.php'; ?>

所以跟进查看,发现内容是:

发现会使用checkuser()函数来进行判断,所以继续跟进:

发现它是通过使用cookie中的值,方入sql中进行执行,这里先把verify_str,test_input两个函数的过滤内容奉上:
test_input:

function test_input($data) { 
      $data = str_replace("%", "percent", $data);
      $data = trim($data);
      $data = stripslashes($data);
      $data = htmlspecialchars($data,ENT_QUOTES);
      return $data;

   }

verify_str:

function verify_str($str) { 

   if(inject_check_sql($str)) {

       exit('Sorry,You do this is wrong! (.-.)');
    } 

    return $str; 
} 

inject_check_sql:

function inject_check_sql($sql_str) {

     return preg_match('/select|insert|=|%|<|between|update|\'|\*|union|into|load_file|outfile/i',$sql_str); 
} 

可以看到,过滤了很多东西,正常的sql注入似乎没办法搞,但是,这里是想要登录后台,所以我们完全可以不用注入得到密码,可以直接想办法构造使该sql语句正确就好了,所以这里的想法是构造出'xxx' or 1=1这种形式,所以直接上payload:

scuseradmin:fthgb\\
scuserpass:or 1#

总结

这个cms感觉漏洞挺多的,最近有些事,没看完,有兴趣的小伙伴可以全篇通读一下,不出意外还能找到一些洞...

  • 发表于 2021-08-03 15:02:17
  • 阅读 ( 6314 )
  • 分类:代码审计

0 条评论

请先 登录 后评论
fthgb
fthgb

学生

3 篇文章

站长统计