代碼審計:beescms 後臺上傳getshell復現
beescms
BEESCMS企業網站管理系統,SEO優化更快,無功能限制,後臺上手容易,各類行業模板供選擇使用!全面支持手機網站,電腦手機模板標籤全部通用,一個後臺管理,電腦、手機網站同步更新。
官網:http://www.beescms.com/
下載:https://www.mycodes.net/49/9318.htm
代碼審計
通過上一篇注入文章,我們拿到了管理員密碼,登錄後臺,尋找上傳點傳shell文件。
打開Seay,來到admin/upload.php文件,找到上傳函數。
檢查了上傳文件是否合法,實際上傳用的是up_img函數,跟進函數。
if(!in_array(strtolower($file_type),$type)){
msg('上傳圖片格式不正確');
}
這裏檢查了上傳文件的type,如果type不在白名單裏,就直接提示出錯,我們可以修改文件類型繞過。
$up_file_name=empty($pic_alt)?date('YmdHis').rand(1,10000):$pic_alt;
$up_file_name2=iconv('UTF-8','GBK',$up_file_name);
$file_name=$path.$up_file_name2.'.'.$pic_name['extension'];
從上面可以看出,並沒有做任何檢查就直接取了$file[‘name’](就是我們上傳時候的文件名)的後綴來給新生成的文件。
所以我們只要僞造合法的type就能上傳shell文件。
上傳getshell
來到上傳點,上傳shell文件抓包,修改type類型爲image/png,即圖片類型繞過。
蟻劍連接一句話php文件即可。