日期:2014-05-17  浏览次数:20886 次

黑客安全与JAVA WEB
其实自己也一直上论坛,不过也没怎么发过贴。今天写些东西,献丑一下,和大家交流一下,不正确的地方还望高手指点。
从去年七月份,自己开始从事J2EE方面的开发。在此之前自己在做黑客方面的研究,所以接触到JAVA WEB方面的东西后,对WEB方面的项目开发的安全方面有点心得体会。本来这篇文章,最初是准备分成几篇来写的,免得麻烦,所以下面以小标题列出简单介绍一下。
言归正传,黑客在互联网中无处不在。所涉及到的面也非常广,今天我们就把范围缩小到“黑客与WEB”。虽然现在一些小型网站都是用asp做的,但入侵原理还是一样的。首先我们要搞清楚的是,黑客在是怎样入侵的,怎样才算入侵了一个站点、才算入侵了WEB项目?

1、木马——永恒的魅力
首先我们要明白的是,WEB项目只是我们入侵的一个跳板。我们要通过这个WEB项目设计的时候存在的bug,拿到最终运行这个WEB项目的服务器的最高权限。这才是黑客最终要达到的效果。而通过什么来达到这个效果呢,那就是木马。(其实也可以通过系统安全漏洞来达到攻击的效果,由于自己对那方面不是很在行,在这里只是介绍一下自己比较熟悉的)。木马就是我们在别人电脑或者服务器上打开的一个后门,通过这个后门可以使我们达到控制别人的效果。
为了让大家理解,这里简单介绍一下,木马在WEB中的分类。木马的控制原理很简单,就是利用工具,大家比较常听说的灰鸽子,生成一个EXE文件,只要别人运行这个文件,就可以达到控制的效果。但是由于杀毒软件的存在,我们的马儿就无处藏身,躲不过悲惨的命运。这涉及到另外一方面的东西,那就是木马的免杀,这儿就不再介绍。灰鸽子之类的木马都是exe文件,但木马到了WEB方面就有了分支。我总结出了WEB三木马——“网马、小马、大马”,供大家参考。

网马:通常所说的挂马,就是挂的网马,实质还是运行的exe文件。当进入一个页面的时候,通过该页面自动下载并运行exe文件,从而达到批量的控制。比如上次瑞星的卡卡网被挂马,进入页面自动下载并运行一种“机器狗”的木马,也就属于这种方式。再比如让我们男性比较郁闷的是,“妹妹五月天”被封。这个站点每天有十万次的点击率,就是通过大量的访问率,在上面放这儿所说的网马来达到赚钱的效果。

小马、大马:上面所说的网马只是运用的一方面,另外一方面小马和大马在WEB攻击方面运用的也非常广泛,大多数黑客攻击也都是这种方式,通常小马和大马是结合起来使用的。虽然网马、小马、大马最终的目的都是达到控制的效果,但大小马和上面的网马本质有所区别。网马实际上最终还是运行的exe文件,但大小马并不是exe文件。实际上他们是一个asp、或者jsp文件。比如我们在我们的Eclipse中的web项目中,加入一个jsp文件(jsp木马),运行tomcat,在地址栏中输入这个jsp的路径。我们可以惊奇的发现,通过这个jsp文件,我们可以操作本地磁盘上所有的文件,进程、注册表也可以操作。这就是我们最终要到达的目的与效果。那个jsp文件也是非常人能写出来的,大多数只会用就行了。最终我们的大马实现控制功能,也就是这个了不起的jsp文件。而大马由于文件较大,在实战中,不容易上传。我们的小马容易隐藏,不容易被发现,唯一的功能就是通过小马上传大马。最终达到控制作用的还是我们的大马,小马只是起个辅助作用,这里也是我为什么说小马和大马要结合起来使用了。

我们知道黑客在WEB攻击中通常用木马,明白这个后,其他的就好理解了。如果有上传漏洞的话,我们可以直接上传图片木马或者通过先传小马再传大马,最终达到控制的效果。“只要有上传,就可以拿webshell”这是以前流行的一句话,不过现在还存在上传漏洞的站点的话,相信也是老掉牙的站点了。
另外,我们可以通过破解一个项目的后台管理员账号和密码,最终达到控制的效果。怎样破解密码,我也不再介绍。sql注入曾经火爆了一段时间,不过知道的人多了,防范的人也就多了。个人比较喜欢用暴力破解,这里就不在过多繁琐的介绍。下面在“post提交密码存在暴力破解的风险”这一标题中简单的为大家介绍一下。
做过后台的人我相信都知道,在后台一般都可以上传图片,以及备份数据库等这些基本重要功能。这也为我们上传jsp木马提供了条件。如果能改上传文件的类型的话,我们改成支持jsp文件的类型。如果不行的话,我们上传一个图片木马(jpg或者其他图片格式),然后差异备份成jsp文件,这样也可以达到最终的效果。当然如果最终控制的权限不够的话,我们可以再利用工具来提权。这里就不再繁琐的介绍。

2、只要存在JavaScript验证,就可能入侵
在这里我们简单的举个例子,就明白我说的意思了。曾经在实战中,我遇到这么个有趣的事情。一个站点有个上传,也加了限制,只准上传图片格式的文件。于是我看了一下那个jsp页面的源码,让我意外的是,这个上传限制竟然是在jsp页面中做的。这让我不自主的想,服务端是不是没加验证呀。我很快验证了自己这个想法,我通过sniffer抓包工具截取了提交地址。然后自己手动构造了一个提交表单,结果能随意上传其他文件。所以这样的设计存在着很大的安全风险。因为我们可以得到提交页面,如果一些重要的限制放在客户端的话,我们可以直接绕过这些限制,直接向提交地址提交自己的数据,到达入侵的效果。
再比如自己在做项目的时候,遇到这么个问题。通常我们修改密码的时候,通常是不能修改用户名的。有些人就在页面input中加入了个readonly来限制用户不能修改文本框中的用户名,看似这样的就可以实习需求了。但大家仔细想想,这种情况不是和我前面举的上传文件的那个例子是同一样的性质吗?如果这样设计的话,我们可以直接向我们的服务器提交数据,这样不是还有可能修改其他用户的密码信息吗?虽然我们在开发中为了减少服务端的负担,可能会把有些验证放在客户端。但在用到客户端验证的时候,我们要掂量好了。

3、post提交密码存在暴力破解的风险
接触过JAVAWEB方面的人,相信大家对get和post提交数据方式都有所了解。post提交数据安全些,相信大家都会这么说。现在一些项目中,大多都是用的post提交密码以及其他一些信息。但相信大多数人都没考虑一个问题,那就是数据的加密。我们打开WEB QQ或者登录QQ邮箱的时候,我们输入密码,然后通过抓包工具,发现这些密码都是加密了的。但现在绝大多数项目以及一些大型的网站中,我都发现了post提交的密码并没有加密。所以这样就为我们破解提供了条件。向大家推荐一款工具,小榕的嗍雪。这款工具可以达到破解的效果,有兴趣的大家可以尝试一下。这里就不再过多的繁琐的介绍。我们知道在实际的项目中,客户就是我们的上帝。而实际的项目中,客户的资料以及一些信息也是整个项目中的核心部分。所以信息的安全也是非常重要,账号和密码就是这个项目让用户管理这些信息的一座桥梁。所以在项目设计中,我们有必要进一步考虑这些安全方面的需求。
简单的写了这些与大家分享一下。一口气写完的,所以存在错别字之类的,大家别见怪。
  作者——乔锐杰

------解决方案--------------------
敬仰中
------解决方案--------------------
敬仰中
------解决方案--------------------
顶上!先悄悄问声,收徒不??
------解决方案--------------------
有见地,长见识了
------解决方案--------------------
如果用户名和密码要做到很高的安全性的话,比如网上银行登录,那就必须使用 HTTPS 传输。
------解决方案--------------------
你很细心,有前途,希望你继续努力。
------解决方案--------------------
顶一下!!!那几只马有例子就更好了
------解决方案--------------------