歡迎光臨
每天分享高質量文章

【每日安全資訊】透過JBoss反序列化(CVE-2017-12149)淺談Java反序列化漏洞

前段時間學校學習J2EE,用到了jboss,順便看了下jboss的反序列化,再淺談下反序列化漏洞。

Java序列化,簡而言之就是把java物件轉化為位元組序列的過程。而反序列話則是再把位元組序列恢復為java物件的過程,然而就在這一轉一變得過程中,程式員的過濾不嚴格,就可以導致攻擊者惡意構造的程式碼的實現。

舉個簡單的例子,jboss的反序列化漏洞出現在jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet目錄下的ReadOnlyAccessFilter.class檔案中的doFilter中。

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throw IOException,ServletException { HttpServletRequest httpRequest=(HttpServletRequest)request; Principal user=httpRequest.getUserPrincipal(); if((user=null)&&(this.readOnlyContext!=null)) { ServletInputStream sis=request.getInputStream(); ObjectInputStream ois=new ObjectInputStream(sis); MarshalledInvocation mi=null; try { mi=(MarshalledInvocation)ois.readObject(); } catch(ClassNotFountException e) { throw new ServletException(“Failed to read MarshalledInvocation”,e); } request.serAttribute(“MarshalledInvocation”,mi); mi.setMethodMap(this.namingMethodMap); Method m=mi.getMethod(); if(m!=null){ validateAccess(m,mi) } } chain.doFilter(request,response); }

程式獲取http資料儲存到了httpRequest中,序列化後儲存到了ois中,然後沒有進行過濾操作,直接使用了readObject()進行了反序列化操作儲存到了mi變數中,這其實就是一個典型的java反序列化漏洞。

復現jboss反序列化漏洞(CVE-2017-12149)

靶機 xp_sp3 10.10.1.34

CVE-2017-12149的主要影響範圍是jbossas 5.x和6.x,下載jboss5.1.0 GA並安裝(需要有java環境)。執行時如果發現只能透過localhost或者127.0.0.1進行訪問,可以透過執行時增加命令 run.bat -b 0.0.0.0 ,或新建start.bat 內容run.bat -b 0.0.0.0

當出現這個的時候說明已經部署好了,可以進行訪問了

可以訪問到頁面,

訪問10.10.1.134:8080/invoker/readonly

出現此頁面則可以判斷含有java反序列化漏洞

進行漏洞利用,我使用的是香草反序列化工具,網上還有很多工具,包括ysoserial,都可以進行漏洞利用

列出了檔案目錄

關於修複漏洞,建議如果不使用此元件,可以刪除。或新增程式碼,進行監控。

*本文作者:哲哥哥丶,來自FreeBuf.COM

更多資訊

◈ 賽門鐵克:2017年Q4“加密貨幣劫持”事件增多85倍

http://t.cn/RnaH9yW

◈ 俄國防部網站遭到密集駭客攻擊 來自西歐北美等地

http://t.cn/RnaH9jb

◈ 駭客手段攻擊網站植入木馬病毒傳送提款指令

http://t.cn/RnaH9dC

◈ 駭客的狂歡?去年日本虛擬貨幣丟失總額超6.6億日元

http://t.cn/RnaHCAX

(資訊來源於網路,安華金和蒐集整理)

贊(0)

分享創造快樂