phpcms前台和 後台低許可權 getshell1

2021-12-29 22:13:59 字數 3212 閱讀 8128

1、首先先說前台的吧,估計很多站都開始補了。是針對phpcms 2008的,二次攻擊範疇,二次解析getshell。

在upload_field.php中

$upload_allowext = !empty($c['upload_allowext']) ? $c['upload_allowext'] : $info['upload_allowext'];

// 漏洞觸發點 通過變數覆蓋$upload_allowext此變數賦值為html

$upload_maxsize = !empty($c['upload_maxsize']) ? $c['upload_maxsize'] : $info['upload_maxsize']*1024;

$isthumb = isset($c['thumb_enable']) ? $c['thumb_enable'] : ($phpcms['thumb_enable'] && $info['isthumb'] ? 1 : 0);

$iswatermark = isset($c['watermark_enable']) ? $c['watermark_enable'] : ($phpcms['watermark_enable'] && $info['iswatermark'] ? 1 : 0);

$thumb_width = isset($width) ? $width : (isset($c['thumb_width']) ? $c['thumb_width'] : ($info['thumb_width'] ? $info['thumb_width'] : $phpcms['thumb_width']));

$thumb_height = isset($height) ? $height : (isset($c['thumb_height']) ? $c['thumb_height'] : ($info['thumb_height'] ? $info['thumb_height'] : $phpcms['thumb_height']));

$watermark_img = phpcms_root.($info['watermark_img'] ? $info['watermark_img'] : $phpcms['watermark_img']);

$attachment = new attachment($mod); //例項化attachment上傳類

if($dosubmit)

$attachment->upload($uploadtext, $upload_allowext, $upload_maxsize, 1);

// 漏洞觸發點 引用attachment上傳類

這裡我們可以通過?c[upload_allowext]=html&c[upload_maxsize]=1024000這樣的方式來覆蓋上傳型別,達到上傳我們的利用惡意指令碼,但是不能直接上傳php之類的,你可以跟蹤一下這個attachment類檔案。但是我們可以通過上傳html

在preview.php中60行處

$head['description'] = $r['description'];

if(!$template) $template = $c[『template_show』]; // 通過變數覆蓋即可覆蓋$template變數

include template(『phpcms』, $template); // 呼叫template 模板解析函式

// 解析模板方法

function template($module = 'phpcms', $template = 'index', $istag = 0)

$compiledtplfile = tpl_cachepath.$module.'_'.$template.'.tpl.php';

if(tpl_refresh && (!file_exists($compiledtplfile) || @filemtime(tpl_root.tpl_name.'/'.$module.'/'.$template.'.html') > @filemtime($compiledtplfile) || @filemtime(tpl_root.tpl_name.'/tag.inc.php') > @filemtime($compiledtplfile)))

require_once phpcms_root.'include/template.func.php';

template_compile($module, $template, $istag); // 模板解析

return $compiledtplfile;

// 繼續跟蹤template_compile函式

在template.func.php中2行處

function template_compile($module, $template, $istag = 0)

$tplfile = tpl_root.tpl_name.『/』.$module.『/』.$template.『.html』; // 這裡$template可控

$content = @file_get_contents($tplfile); // 觸發漏洞,解析構造好的惡意檔案

if($content === false) showmessage("$tplfile is not exists!");

$compiledtplfile = tpl_cachepath.$module.'_'.$template.'.tpl.php';

$content = ($istag || substr($template, 0, 4) == 'tag_') ? '<?php function _tag_'.$module.'_'.$template.'($data, $number, $rows, $count, $page, $pages, $setting) ?>' : template_parse($content);

$strlen = file_put_contents($compiledtplfile, $content);

@chmod($compiledtplfile, 0777);

return $strlen;

}這是解析的地方

最終給出exp如下

第二步:

2、後台低許可權 getshell

很多人拿到phpcms 2008的後台苦於拿不到shell。。。苦苦琢磨琢磨啊

顧貢獻一枚0day,只要後台能發個帖,你就能拿shell

他這個原理是一樣的,後台上傳的時候同樣可以覆蓋變數,達到getshell

原理一樣,給出個exp演示

同樣getshell,隨意生成webshell

phpcms後台欄目許可權修改無效的原因和解決方法

現象 在phpcms後台中,新建角色,然後修改角色對應欄目許可權,結果一直只能選擇一半數量的欄目。剩下的欄目怎麼修改都不生效。對比 step1 再另乙個phpcms後台做同樣操作,依舊是這個結果。跟蹤了半天 也沒有發現什麼問題。setp2 把之前本地備份的 進行操作,卻發現可以修改。經過2個部分的對...

前台執行緒和後台執行緒

net的公用語言執行時 common language runtime,clr 能區分兩種不同型別的執行緒 前台執行緒和後台執行緒。這兩者的區別就是 應用程式必須執行完所有的前台執行緒才可以退出 而對於後台執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後台執行緒在應用程式退出時都會...

websevice 服務前台和後台

page title 登入 language c masterpagefile site.master autoeventwireup true codebehind login.aspx.cs inherits pdmv01.account.login register assembly ajax...