【安全漏洞】CVE-2021-32682 elFinder RCE 简单分析
簡介
elFinder 是一個開源的 web 文件管理器,使用 jQuery UI 用 Ja??vaScript 編寫。Creation 的靈感來自于 Mac OS X 操作系統(tǒng)中使用的 Finder 程序的簡單性和便利性。
漏洞描述
該漏洞源于,在創(chuàng)建新的zip存檔時,沒有對name參數(shù)進行嚴(yán)格的過濾,導(dǎo)致參數(shù)被帶入prox_open中執(zhí)行,造成命令注入
影響版本
elFinder <= 2.1.58
環(huán)境搭建
下載地址: https://github.com/Studio-42/elFinder
下載完成后,重命名/php/connector.minimal.php-dist為/php/connector.minimal.php
然后在瀏覽器中加載運行/elfinder.src.html即可
漏洞分析
源碼地址: https://github.com/Studio-42/elFinder/releases/tag/2.1.58
私信回復(fù)“資料”獲取Web網(wǎng)站開發(fā)、滲透測試、等級保護、內(nèi)網(wǎng)安全、源碼審計、風(fēng)險評估、安全巡檢、應(yīng)急響應(yīng)等全套視頻教程、課件、筆記、學(xué)習(xí)思路大綱【點擊查看】
得知是通過存檔功能,傳遞name參數(shù)造成命令注入,然后進行抓包
可以看出是在connector.minimal.php文件中進行操作
在connector.minimal.php文件中發(fā)現(xiàn),包含文件autoload.php
在autoload.php中,不確定在那個文件,不過通過名字大概率可以在elFinderVolumeLocalFileSystem.class.php和elFinder.class.php中可以找到
先進入elFinderVolumeLocalFileSystem.class.php中,通過抓包得知cmd=archive,可能有archive函數(shù)
發(fā)現(xiàn)果然有,跟進makeArchive函數(shù)
可以看出參數(shù)確實是傳到makeArchive,但是不是通過_archive傳進來的
接下來在elFinder.class.php中嘗試
先對name參數(shù)進行isset判斷,然后傳入archive函數(shù)中,繼續(xù)跟進
$name先進行了正則轉(zhuǎn)換后進行了字符串替換,然后先傳入到uniqueName中,后傳入到remoteArchive中,先跟進到uniqueName中
可以看出是對name進行了一些轉(zhuǎn)換替換,最后返回name進行了一些轉(zhuǎn)換替換,最后返回name進行了一些轉(zhuǎn)換替換,最后返回name值
接下來返回上一步,跟進到remoteArchive中
看見參數(shù)傳入到makeArchive函數(shù)中,繼續(xù)跟進
到這里參數(shù)通過escapeshellarg()進行轉(zhuǎn)義,然后拼接其它參數(shù)賦值給$cmd,然后進入到procExec函數(shù)中
可以看見$cmd被作為參數(shù),放入到proc_open中執(zhí)行命令
proc_open命令詳解如下:
自此整個流程分析完成,雖然中間對參數(shù)進行了正則和替換的過濾操作,但是因為程序會將name參數(shù)值解析為標(biāo)志(–foo=bar),可以通過zip的-TT指定要運行的測試命令,如:-TmTT="$(id>out.txt)foooo"
通過測試得到,參數(shù)在傳入到proc_open中執(zhí)行命令前,其值為"zip -r9 -q ‘a(chǎn)1.zip’ ‘./a.zip’",所以我們可以構(gòu)造成以下命令"zip -r9 -q ‘-TmTT="$(id>out.txt)foooo".zip’ ‘./a.txt’",執(zhí)行id命令并將結(jié)果輸出到out.txt中
總結(jié)
以上是生活随笔為你收集整理的【安全漏洞】CVE-2021-32682 elFinder RCE 简单分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php源代码保护——PHP加密方案分析解
- 下一篇: 【网络安全】浅析跨域原理及如何实现跨域