给JBoss种蛊分析
JBoss又發現漏洞了,安全圈兒為之一緊。?知道創宇安全研究團隊再次本著科普的情懷收集跟JBoss安全相關的材料,為安全行業再出一把力。
這里先給JBoss正下名。通常所說的JBoss,全稱是JBoss Application Server。?它是JavaEE體系里,?一個很流行的應用服務器開源實現。?除了這個JBossAS外,JBoss打頭的還有不少產品。不過,由于其它的弟兄在安全視野里很少出場,下文也為了說明方便,?就把JBossAS也簡稱為JBoss。
關于JBoss安全,網上這方面的東西不少,但初看時,?總是云里霧里的,?搞不明白究竟是說什么的。?這里,?咱試著換另外一種方式來介紹。
先來看基本的攻擊思路:利用漏洞部署一個war(war是JavaEE里基本部署單位,對此不了解的請自行google),這個war里一般只有一個jsp的webshell,利用此shell,黑客可做各種猥瑣事。
整個過程中,怎么能搞上去一個webshell是核心。這個“搞上去”,在JBoss世界里,就是deploy一個war。?JBoss可真是煞費苦心地提供了N多種部署策略,又在無意中為這N多種部署策略提供M種調用方式,于是乎,跟JBoss相關的漏洞也就理所當然出現了N*M種。這也是造成JBoss漏洞紛繁復雜不好理解的一大原因。咱這篇文章就是要從這紛繁復雜的亂象里趟出一條“血路”來。
話題扯的有些遠了,回到主題上來。?這里用最流行的那個漏洞形象地介紹上面的過程和其中的關鍵概念。
看下圖,用這么個url可以方便地部署個“一句話后門”。這里,為了方便閱讀方便,對這個長url做了分行處理并加了適當的說明。
JBoss收到這個請求后,就會部署一個shell.war的文件夾,它里面只有一個文件shell.jsp。隨后就可以利用此shell.jsp執行各種命令啦。
簡短介紹了部署流程后,重點說下上圖中紅框內標示的三部分。
1,?先說第二個“DeploymentFileRepository”,?它是JBoss運行環境里創建的JMX對象,可通過“jboss.admin:service”名找到。?這個對象實質上是一個服務,? DeploymentFileRepository名字出賣了它的作用,?可以deploy一個file。
2,?再回過頭來看第一個"jmx-console/HtmlAdaptor",??它本質上是JBoss內在服務的調用接口。?這里關于JMX多說兩句。?JMX作為JavaEE體系里一個標準,是為了方便運維(與監控)而設計的,其基本思想是給每一個服務主體創建一個“影子”對象,這個“影子”對象可控制查看主體對象的一切。這里的“jmx-console/HtmlAdaptor”正是控制查看所有影子對象的一個總入口。
3,?第三部分不用太多地說明,?它是黑客行為的最終目標。??其內容可以定制,表現形式又隨具體的攻擊組合不同而異。?也就是“蠱”可以隨場景和目的不同而定制。
?
借助這個典型事件分析,從而對JBoss攻擊所涉及概念有形象了解后,看針對JBoss常見的攻擊方式,也就是種蠱方式。
1,jmx-console/HtmlAdaptor + DeploymentFileRepository。?也就是上面詳細分析的那個。?之所以這里再列出來,?完全是為了向其致敬。?可以說,?這個種蠱方式最方便。?也正是它,才有了當年大名鼎鼎的JBoss蠕蟲事件。?不過,?隨著行業對JBoss安全的重視,適合此組合的場景已經很少有了。
2,/jmx-console/HtmlAdaptor +? BSHDeployer。?跟上面的類似,?不過,?換了另一種部署方式。?這里的BSH是一種shell語言,?JVM支持,?JBoss也可就出于順便支持了。??這個方式是實際是通過HTTP請求給BSHDeployer傳了一段beanshell腳本,黑客關心的webshell就內嵌在這個腳本里。
3,?web-console/Invoker +? DeploymentFileRepository。?跟第一種類似,?只不過是換了調用的入口,背后的服務還是DeploymentFileRepository。
4,invoker/JMXInvokerServlet + application/x-java-serialized-object;class=org.jboss.invocation.MarshalledInvocation?+ BSHDeployer。這個在利用方式上跟前面幾個稍稍不同。前面幾個上傳的payload還是肉眼可以直接讀出的文本,這個有變化了,它實質是發送了一個用HTTP請求發送RMI。這個過程在原理上相當于在第2個的基礎上套了一層?MarshalledInvocation調用。稍微介紹下?MarshalledInvocation。?Java里,可以方便地把一次方法調用用一個Java類描述下來,隨后再編譯后字節碼通過網絡發送,服務端收到請求后,再解析這個字節碼里的調用信息。這里,最終又把請求轉給了?BSHDeployer。
5,? invoker/JMXInvokerServlet +application/x-java-serialized-object;class=org.jboss.invocation.MarshalledInvocation?+ MainDeployer。回到這些天爆出的利用方式(http://www.exploit-db.com/exploits/28713/)了。?這種方式跟第4種類似,不同體現在MainDeployer。上面第4種用BSHDeployer時,?webshell全部內容可以在請求中傳送,而MainDeployer就不行了,?它需要一個指向遠程war的url,MainDeployer把這個war下載下來后,再正常地部署。
...
就到這里吧,上面的組合是比較典型的,不過,借助它們可以很好地理解JBoss漏洞利用了。
危害呢??JBoss漏洞的利用本質上是創建一個webshell,這樣它的危害就轉化成webshell的功能和Jboss進程的用戶權限。如果放任自流,然后…?就沒有然后了。
如何防御?從上面的分析,我們知道,webshell的部署過程有兩個關鍵點:找到合適的入口調用合適的服務。順著這個思路,把用不著的服務統統關掉,盡可能地減少訪問入口(或關掉訪問入口或加強權限攔截)。當然,加速樂已經完全做了相應的防護,運維的筒子們可放心滴使用啦。
轉載于:https://www.cnblogs.com/firstdream/p/5977396.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的给JBoss种蛊分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MongoDB学习总结(一) —— Wi
- 下一篇: Segments POJ 3304 直线