phpcms 2008 變數覆蓋漏洞

2022-09-08 04:27:11 字數 3437 閱讀 9876

1.雙擊執行桌面phpstudy.exe軟體

2.點選啟動按鈕,啟動伺服器環境

1.雙擊啟動桌面seay源**審計系統軟體

3.點選新建專案按鈕,彈出對畫框中選擇(c:\phpstudy\www\ phpcms 2008),點選確定

漏洞分析

1.點選展開/yp/web/include/common.inc.php

<?php 

defined('in_phpcms') or exit('access denied');

$userid = $userid ? $userid : intval(query_string);

$r = $db->get_one("select * from `".db_pre."member_company` where `userid`='$userid'");

if($r)

if(!$userid)

程式首先賦值乙個use

rid變

量,然後

使用賦值

完成變數

拼接sq

l語句執

行,sq

l語句執

行完成以

後返回數

據給us

erid

變數,然

後使用賦

值完成變

量拼接s

ql語句

執行,s

ql語句

執行完成

以後返回

資料給r變數陣列,如果r變數

存在內容

,則將變

量陣列內

容加入到

當前檔案

的符號表

中。如果

r變數存

在內容,

則將變數

陣列內容

加入到當

前檔案的

符號表中

。如果userid變數內容為false則將顯示錯誤頁面內容,但是目前use

rid並

沒有找到

在**獲

取。2.如

果2.如果us

erid

並沒有找

到在**

獲取。2

.如果userid不為false,則接著往下執行

if(empty($tplname)) $tplname = 'default';

//使用者選擇的預設模板

$companytpl_config = include phpcms_root.'templates/'.tpl_name.'/yp/companytplnames.php';

$tpl = $companytpl_config[$tplname]['tplname'];

define('tpl', $tpl);

define('web_skin', 'templates/'.tpl_name.'/yp/css/');

if($diy)

else

$menu = string2array($menu);

**接著進行初始化模板檔案,最後將men

u變數傳

輸到st

ring

2arr

ay()

函式,目

前又來疑

問,me

nu變數

傳輸到s

trin

g2ar

ray(

)函式,

目前又來

疑問,menu變數從何而來?

3.現在需要了解一下string2array()到底什麼作用,string2array函式存放在include/global.func.php

function string2array($data)

看到函式發現,內部有eval敏感函式,並且把傳送過去的men

u進行執

行,現在

有這麼個

假設,如

果men

u進行執

行,現在

有這麼個

假設,如

果menu變數可以控制,那麼完全進行任意**執行。

4.目前成立這個假設use

rid主

要是為了

去資料庫

查詢內容

,然後將

返回的內

容構成一

個陣列,

使用ex

trac

t()將

陣列的內

容新增到

當前符號

表中,從

而也就生

成use

rid主

要是為了

去資料庫

查詢內容

,然後將

返回的內

容構成一

個陣列,

使用ex

trac

t()將

陣列的內

容新增到

當前符號

表中,從

而也就生

成menu變數,如果能夠讓資料庫返回空,不讓他覆蓋或者生成新的men

u變數,

然後在別

的位置生

成新的m

enu變

量,然後

在別的位

置生成新

的menu變數,從而執行想執行**。

5.在include/common.inc.php檔案中,會將get、post、cookie轉換成變數

if($_request)

else

if(!defined('in_admin')) $_request = filter_xss($_request, allowed_htmltags);

if($_cookie) $db->escape($_cookie);

}

所以可以利用這個位置提前生成men

u變數和

menu

變數和userid變數,並且把use

rid內

容置位數

據庫不存

在的內容

,use

rid內

容置位數

據庫不存

在的內容

,menu變數內容為想要執行的**。

漏洞利用

1.訪問

菜刀直接連線

//密碼 menu

phpcms2008修改登入密碼

update phpcms member set password eb75120cc80bdd839f3aeccd1ffb5965 where phpcms member userid 1 limit 1 update phpcms member cache set password eb7512...

phpcms2008模組開發目錄檔案分析

1 模組目錄說明。install 模組安裝目錄,安裝模組時呼叫 uninstall 模組解除安裝目錄,解除安裝模組時呼叫 admin 模組的後台管理目錄 api 個人空間新增的應用api介面 include 引用檔案目錄 2 各相關檔案說明 a 模組安裝檔案說明 install目錄下 模組安裝時按順...

phpcms2008製作標籤以及標籤模板教程

標籤設定教程 我們從簡單到複雜 第一種 中文標籤 這種再簡單不過了,就是通過後台設定標籤引數呼叫 通過選擇讀取段來進行呼叫,這裡設定都是中文字,我們都是中國人,也就不多說了。欄目 常用變數表示 catid 可以用這個變數呼叫,也可以指定到某個欄目下面,用變數呼叫,它會根據當前頁面的欄目來獲取id從而...