Walks

网络安全爱好者

代码审计:Semcms v2.3 PHP版多处问题

前言:

《代码审计:Semcms v2.3 PHP版多处问题》

如上图,在知道创宇看到了几个新出的漏洞,就想去看看漏洞出在什么地方,下载最新V2.3版本,发现了一个很有趣的问题,原来这个漏洞是V2.1版本就有的,至今未修复。下面就给大家简单的分析分析,其实漏洞也很简单。

Web_Mail注入:

if ($Type=="fintpassword"){
    
    
  if (@htmlspecialchars($_POST['Email']) !==""){ // 判断是否输入邮箱
        
    $sql="select * from sc_user where user_email='".$_POST['Email']."'"; 
    $result=mysql_query($sql); 
    $row = mysql_fetch_array($result,MYSQL_ASSOC); 
    if (mysql_num_rows($result)>0) 
        {

我们看代码,你是不是发现了问题?虽然if语句里面有htmlspecialchars这个用来过滤单双引号,但是后面sql执行的时候,过滤的东西跑哪去啦?这就产生了注入。

后台绕过:

function checkuser(){ //判断账号 
    [email protected]($_COOKIE["scuser"]);
    [email protected]($_COOKIE["scuserqx"]);
    $sql="select * from sc_user where user_ps='$cookieuser' and user_qx='$cookieuserqx'"; 
    $result=mysql_query($sql); 
    $row = mysql_fetch_array($result,MYSQL_ASSOC); 
    if (!mysql_num_rows($result)){ echo "<script language='javascript'>alert('账号密码不正确重新登陆!');top.location.href='index.html';</script>";} 
    else {echo'';}     
  
}

这是在function.php里面的代码,虽然有简单的过滤,但是依旧可以绕过。

当$cookieuser=\;$cookieuserqx=or 1=1# 的时候,sql语句等于select * from sc_user where user_ps='\' and user_qx='or 1=1#',后面的单引号跟前面的闭合了。产生了我们可控的参数。就可以后台登陆了。

还有其他几个漏洞不多说。给大家个V2.1版本漏洞的地址,反正跟V2.3的一样,也没修复,想看的自己看看吧。

参考地址:http://0day5.com/archives/4320/

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 3 = 6