利用Tomcat的用户名和密码构建“永久”后门
Simeon
从本案例中可以学到:
(1)关于JSP的一些基础知识
(2)利用Tomcat的用户名和密码来构建后门
本文首先要感谢《黑客手册》“非安全.后生”编辑为本为提供了帮助,还要感谢网友“伤心的鱼”,本文借鉴了“看小菜如何搞定tomcat”一文中的思路,该文中提供的war生成比较模糊,且操作复杂,本文提供的方法简单易行。
JSP是Java Server Pages的缩写,是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段和JSP标记,就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plug-in,无ActiveX,无Java Applet,甚至无Frame。
Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
在Tomcat中,应用程序的部署很简单,只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,可以在远程通过Web部署和撤销应用,当然本地也可以,本案例就是利用这个特性来构建后门程序的。
Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache。可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet.这种集成只需要修改一下Apache和Tomcat的配置文件即可。
(一)检查Tomcat设置。服务器安装了Apache Tomcat后会默认开放8080端口供外部连接,一般在浏览器中输入“IP:8080”或者域名来访问Apache Tomcat页面,如图1所示。
图1 连接到Tomcat的页面
(二)查看Tomcat用户配置文件。Tomcat安装完成后有一个配置文件“tomcat-users.xml”,它位于Tomcat程序安装目录下的conf目录下,直接打开该文件可以看到其中关于用户名和密码的明文值,如图2所示,找到并记住包含“admin,manager”那一行的用户名和密码。
图2 获取用户配置的用户名和密码
说明:
(1)有很多对tomcat不是很了解的管理员在安装完Tomcat后并没有修改默认密码,用户名是admin,密码为空,如果是这种情况可以直接登录。
(2)如果用户修改了该密码,那么其密码一定保存在“tomcat-users.xml”中,因此可以通过Webshell来获取这个文件的内容。
(三)进入Tomcat管理。Tomcat提供了在线管理,本案例也正式利用在线管理来构建后门的。在图1中单击左上角下面的“Tomcat Manager”链接后,会弹出一个要求输入用户名和密码的窗口,该窗口跟Windows登录窗口有点类似,如图3所示。
图3 登录Tomcat管理应用
(四)查看部署情况。在图3中输入从“tomcat-users.xml”文件中获取的具有管理员权限的用户名和密码,验证通过后进入部署管理页面,如图4所示。
图4 部署管理页面
说明:
(1)在部署管理页面中可以“Start”(启动)、“Stop”(停止)、“Reload”(重载)、“Undeploy”(删除部署)已经部署的项目,单击“Undeploy”会对文件进行物理删除。
(2)部署的文件夹是以*.war文件的名称,例如上传的文件是job.war,则在Tomcat目录中会对应生成一个“job”文件夹 。
(五)部署JSP WebShell后门程序。在部署管理页面的下方有一个“WAR file to deploy”,单击浏览选择一个已经设置好的后门war文件,在本例中的后门程序为job.war,单击“deploy”将该文件部署到服务器上,如图5所示。
图5 上传后门war文件到服务器
说明
(1)部署是其文件必须是war文件。
(2)将winzip软件安装在系统中,然后将单一或者多个jsp后门文件压缩成一个压缩文件,压缩成功后,将“*.zip”文件更名为“*.war”即可。
(3)上传文件后,tomcat会自动进行部署并运行。
(六)测试后门程序。在地址栏中输入“部署文件名称/jsp文件”,例如在本例中其正确的访问是“http://127.0.0.1:8080/job/job.jsp”,如果设置正确会显示如图6所示的Webshell登录窗口。
图6 登录webshell
(七)在Webshell中执行命令。在Webshell中输入密码后,进入到Webshell管理界面,默认显示服务器的一些信息,在功能菜单中选择“执行命令”,并在执行命令输入框中输入“netstat -an”命令可以查看网络连接等,如图7所示。
图7 执行命令
说明
(1)通过这种方式部署的Jsp后门程序具有较大权限,可以执行添加用户等危险命令。
(2)jsp后门中可以通过“文件系统”模块来对文件进行操作;通过“数据库”模块来连接数据库等操作;
(3)本案例构建后门也正是这里,平时可以在系统中保留一个小的后门程序,如果后门程序被杀毒软件查杀或者被管理员发现并删除掉了,则可以通过以上步骤重新进行部署,从而循环永久保留后门。
小结
本案例介绍的情况适合于管理员(admin)密码为空的情况,同时也适合于获取了tomcat中的tomcat-users.xml文件中的用户名和密码的情况。一般来讲内网相对防护要弱一些,因此该案例对于内网渗透时有一定的帮助。由于本人对jsp不是特别熟悉,尤其是部署设置,不知道在jsp中是否也可以进行诸如IIS中的严格权限限制,能否禁止jspwebshell的执行,本案例是对服务器攻防的一种探讨,功能强大的应用程序往往一个弱小的漏洞就可以攻破整个系统。
后记
通过google对tomcat的一些关键字进行了搜索,没有遇到管理员为空的,我使用inurl:8080 关键字进行搜索的,不知道还有什么好的方法来进行搜索。
==========================
最近被攻击了,被人放了病毒:Dropper.Win32.Gpigeon.lp
程序名为:20.exe
然后在tomcat上发现了:
JFolder V0.9 windows platform
@Filename: JFolder.jsp
@Description: 一个简单的系统文件目录显示程序,类似于资源管理器,提供基本的文件操作,不过功能弱多了。
JFolder V0.9 windows platform
@Filename: JFolder.jsp
@Description: 一个简单的系统文件目录显示程序,类似于资源管理器,提供基本的文件操作,不过功能弱多了。
所以到网上找tomcat怎么回事。原来没有设置admin密码有这么严重的后果。以后装好tomcat要改admin密码,也不要用8080端口容易让人猜到