linux调用ocx插件_Wordpress file manager插件任意文件上传
白斬雞@衛兵實驗室
近日,Wordpress 插件file manager被爆出嚴重0day漏洞,本著技術研究角度,和大家分享、探討其漏洞原因。
該修復程序已在同一天發布,并且WP File Manager插件6.9版通過刪除允許未經授權的文件上傳訪問的端點來解決當前問題。影響版本。
該安全漏洞存在于文件管理器版本,范圍從6.0到6.8。WordPress的統計數據表明,目前約有52%的安裝易受攻擊。由于File Manager的700,000個站點中已安裝的漏洞中有一半以上,因此損壞的可能性很高。運行任何這些版本的網站都應盡快更新到6.9
影響范圍
file manager 6.0至6.8
漏洞報告
漏洞的文件為connector.minimal.php.
首先對$opts進行了初始化,這里存儲了后面上傳文件存儲路徑root信息。
通過創建elFinderConnector對象,進而調用$connector->run();。
elFinderConnector::run()
方法限制了請求為POST。并且讀取了所有的請求參數保存到$src中。其中$cmd為傳遞cmd變量
隨后對通過循環foreach ($this->elFinder->commandArgsList($cmd) as $name => $req)來對$src進行校驗,需要符合請求方法的參數類型。
通過elFinder::commandArgsList($cmd)中我們查看$this->commands發現了可以調用的方法(意味著我們可以直接調用以下列表的所有方法,例如創建文件、創建文件夾、刪除文件等等)
完成變量校驗后就進行一次input_filter(addslashes和去除\00截斷)隨后進入$this->output($this->elFinder->exec($cmd, $args));執行真正調用的方法代碼。
根據上面可用方法的array,我們控制$cmd=upload,即可調用upload方法。
具體exec方法如下介紹
elFinder::exec(\$cmd, \$args)
當我們控制$cmd=upload時,遇到第一個分支。意味著我們需要傳入一個$target變量或$dst變量。
進入$this->volume($dst)可以看到是對$this-volume進行了選擇。
id分別為t1_和l1_,我們將選擇l1_,即傳入的$target必定為l1_前綴。
之所以這么做的理由是由于l1_中的root=/Users/steven/Desktop/code/phpCode/wordpress/wp-content/plugins/wp-file-manager/lib/files,而t1_中為root=/Users/steven/Desktop/code/phpCode/wordpress/wp-content/plugins/wp-file-manager/lib/files/.trash。
而這個$root將會成為后面文件上傳路徑的前綴。
之后進入動態調用,通過$result = $this->$cmd($args);調用upload方法。
elFinder::upload(\$args)
一開始初始化很多變量,但是我們不必要傳入。并且也對volume進行了取值,后續還進行了校驗。
在3313行foreach ($files['name'] as $i => $name)通過foreach對每個上傳的文件進行處理。
許多分支并沒有執行,直接來到以下代碼if (!$_target || ($file = $volume->upload($fp, $_target, $name, $tmpname, ($_target === $target) ? $hashes : array())) === false),執行真正的upload函數。
elFinderVolumeDriver::upload(\$fp, \$dst, \$name, \$tmpname, \$hashes = array())
在這個if判斷中,需要關注dir($dst)。
跟進dir($dst)
跟進file($hash)
state(\$path)
decode(\$hash)
從上面的代碼看來就是把$target的值截取前面volume的id,剩下的做一個base64解碼,之后與volume['root']進行拼接,如果解碼之后的值為\\則直接設volume['root']為上傳路徑,如果不是則需要cache索引。如果直接$target解碼為../或../css等則會校驗不通過,直接報錯。
最終調用到if (($path = $this->saveCE($fp, $dstpath, $name, $stat)) == false)實現了文件的上傳。上傳路徑為wp-content/plugins/wp-file-manager/lib/files/bzj.php
補丁修復方式
刪除了connector.maximal.php-dist和connector.maximal.php兩個文件
增加了.htaccess
關于我們
人才招聘
二進制安全研究員(Windows內核方向)
工作地點:
1.杭州;
崗位職責:
1、負責研究Window內核相關漏洞利用技術;
2、負責分析Window內核漏洞的原理及緩解措施;
任職要求:
1、2年以上windows逆向工作經驗。
2、熟悉windows底層架構、運行機制,熟悉匯編語言?C/C++語言,熟悉win32/64開發,并有相關開發經驗;
3、熟悉windows驅動開發、熟悉windows平臺內核架構;能熟練運用Windows平臺下的軟件調試方法。
4、熟練使用ida、windbg等調試軟件工具調試分析漏洞。
5、有CVE編號、內核研究成果者優先;
6、具備良好的團隊溝通、協作能力、良好的職業道德。
二進制安全研究員(Linux內核方向)
工作地點:
1.杭州;
崗位職責:
1、負責研究Linux內核相關漏洞利用技術;
2、負責分析Linux內核漏洞的原理及緩解措施;
任職要求:
1、2年以上Linux逆向工作經驗。
2、熟悉Linux底層架構、運行機制,熟悉匯編語言?C/C++語言,熟悉x86/64開發,并有相關開發經驗;
3、熟悉Linux驅動開發、熟悉Linux平臺內核架構;能熟練運用Linux平臺下的軟件調試方法。
4、熟練使用ida、gdb、lldb等調試軟件工具調試分析漏洞。
5、有CVE編號、內核研究成果者優先;
6、具備良好的團隊溝通、協作能力、良好的職業道德。
二進制安全研究員(系統應用方向)
工作地點:
1.杭州;
崗位職責:
1、負責安全技術研究,跟蹤國內外最新的安全技術以及安全漏洞的追蹤;
2、負責進行二進制漏洞挖掘,包括不限于瀏覽器、chakara引擎、js引擎、office、pdf等等各種二進制類應用;
任職要求:
1、能主動關注國內外最新安全攻防技術,并在自己擅長和興趣的領域能夠進行深入的學習、研究;
2、熟練掌握windbg、ida、gdb等調試工具;
3、熟悉各類二進制安全漏洞原理(堆溢出、棧溢出、整數溢出、類型混淆等等)以及各種利用技術;
4、能夠無障礙閱讀英文技術文檔;
5、具備良好的團隊溝通、協作能力、良好的職業道德。
Web安全研究員
工作地點:
1.杭州;
崗位職責:
1、安全攻防技術研究,最新web應用及中間件(tomcat、jetty、jboss等等)、框架(struts、spring、guice、shiro等等)?組件(freemarker、sitemesh等等)漏洞挖掘研究;
2、跟蹤分析國內外的安全動態,對重大安全事件進行快速響應;
任職要求:
1、了解常見的網絡協議(TCP/IP,HTTP,FTP等);
2、熟練使用Wireshark等抓包工具,熟悉正則表達式;
3、掌握常見漏洞原理,有一定的漏洞分析能力;
4、具備php、python、java或其他相關語言編碼能力;
5、對常見waf繞過有一定的基礎經驗;
6、具備一定的文檔編寫能力,具備良好的團隊共同能力;
7、對安全有濃厚的興趣,工作細致耐心。
感興趣的小伙伴請聯系Nike,或將簡歷投送至下方郵箱。(請注明來源“研究院公眾號”,并附帶求職崗位名稱)
聯系人:Nike
郵箱:nike.zheng@dbappsecurity.com.cn
總結
以上是生活随笔為你收集整理的linux调用ocx插件_Wordpress file manager插件任意文件上传的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql中的double类型_MySQ
- 下一篇: mysql 查看编码方式_Mysql查看