6、常用网络入侵手段
java web网站以及服务器防侵入,尽量保证安全
sql只是很基础很普遍的方式,如果网站对安全要求高的话,找网络安全公司,他们会帮你指定方案,模拟攻击~如果自己有信息安全团队那也行,不过后者国内绝大部分网站是没有的
学完java就可以入侵了吗
不能,JAVA和入侵相关性很小,想学入侵的话去找点黑客防线之类的杂志看吧,入侵需要的知识有点杂。不建议学习,违法行为
如何安全检测Java Web应用网站漏洞
如何安全检测Java Web应用网站漏洞.txt32因为爱心,流浪的人们才能重返家园;因为爱心,疲惫的灵魂才能活力如初。渴望爱心,如同星光渴望彼此辉映;渴望爱心,如同世纪之歌渴望永远被唱下去。web开发应用程序(网站),是目前应用最广泛的程序。但是开发者的水平参差不齐,导致了各种各样web漏洞的出现。本文站在分层架构的角度,分析一下如何在java web程序中找到可能出现的种种漏洞。 本文讨论的只是web程序上的漏洞,和其它漏洞,是相对独立的。这句话看似废话,实际上却说明了时常被忽略的因素,即:“很多人认为只要我开发web程序没有漏洞,web服务器就安全了”,事实上,并非如此。一个合格的web程序开发人员,应该时刻清楚自己开发的程序会在什么环境中被使用,以及一旦自己的程序产生某种漏洞,最终会导致什么后果。简单的说,web程序被安装在一台或多台(分布式)web服务器上,一旦安装成功,就等于在为广大用户提供服务的同时,给入侵者打开了一条或N条新的思路。如果服务器管理员刚好对安全配置不了解(事实上,国内这种管理员居多),那么只好由我们的程序来守好最后的关卡最后一道防线。 看了本文题目,一定有一部分人会认为,“不就是讲JSP漏洞么,用得着披着这么厚的包装么?”,为了回答这个疑问,我们先看看JSP和ASP的开发有什么不同吧。在ASP时代(ASP,PHP等语言),开发一套系统往往比修改别人已经写好的系统痛苦的多,因为它们把所有的代码(包括链接数据库的代码、执行SQL语句的代码、控制页面显示的代码)统统都放在%......%中,我们时常会看到如下代码块: -----------代码来自某ASP SHELL----------- Function GetFileSize(size) Dim FileSize FileSize=size / 1024 FileSize=FormatNumber(FileSize,2) If FileSize 1024 and FileSize 1 then GetFileSize="font color=red" FileSize "/font KB" ElseIf FileSize 1024 then GetFileSize="font color=red" FormatNumber(FileSize / 1024,2) "/font MB" Else GetFileSize="font color=red" Size "/font Bytes" End If End Function ---------------------------------------- 如果客户的需求变了,要求页面不能使用“font color=red”等标签,全部应用“CSS”显示。挂了,把程序员召唤出来,一个一个的改吧。。。注意,这里强调下,特指“召唤程序员”才能改,如果是学美工的,只会HTML、JS、CSS,完了,这活还干不成。而这些只是简单的页面修改,如果客户今天说,MYSQL服务器承担不了这个数据量,要挂Oracle,可怜的程序员就要在一片一片的代码海洋里寻找执行SQL语句的代码,而每一个文件都可能存放着SQL语句,意味着每一个文件都可能在受SQL注入的威胁。
而JSP采用MVC模式分层架构进行开发,就可以把所有的文件分开,根据其用途,分别放在不同的文件夹下(分层),每个文件夹下的文件只负责自己的事情。例如数据访问层的代码就放在数据访问层的文件夹下,业务逻辑层的代码也都放在自己的文件夹下,当显示层(这一层是为了把最终的运算结果显示给用户看)的需求发生变化,就像前面的客户需求,我们只要修改这一层的文件就是了,其他层的代码根本不需要动,而修改者也不需要懂得其它层的代码。 代码分层了,意味着漏洞也在跟着分层,我们寻找JSP漏洞的思路也要跟着分层,才能与时俱进。 下面在讲述寻找漏洞的过程中,本文就拿一个简单的分层架构例子来做样板。样板程序的名称为“XX文章系统”,系统使用了STRUTS框架,和安全有关的层分为: “DB层”,这一层存放了链接数据库的字符串,以及JdbcTemplate类,直接访问数据库。因为在java中,执行SQL语句的函数按照返回值可以分为三类,所以在这一层定义了JDBC模版类(JdbcTemplate),每一次使用操作数据库时都要执行这一层的三个方法其中一个。 “DAO层(Data Access Object数据访问对象层)”,从安全角度上看,这一层存放了SQL语句(并不执行SQL语句,语句传给DB层执行)。这一层调用“DB层”访问数据库,它只知道“DB层”的存在,不知道数据库的存在。 “SERVICE层”,业务逻辑层,因为一个业务的实现,并不是一次数据库访问就可以完成的,所以这一层通过N次调用“DAO层的方法”实现业务逻辑,它只知道“DAO层”的存在,不知道“DB层”和数据库的存在。 “ACTION层”,调用业务逻辑层,根据返回的结果,控制JSP页面显示。它只知道业务层的存在。这一层是入侵者的攻击平台。 “Form层”,把用户POST提交的信息封装成Form对象,经过验证后提交给ACTION层处理。 “JSP层”(显示层),这一层是最终显示给用户看的页面,同时也是入侵者的攻击平台。 用户通过访问ACTION层,自动会发生:“ACTION调用SERVICE,SERVICE调用DAO,DAO调用DB,DB执行SQL语句返回结果给DAO,DAO返回给SERVICE,SERVICE返回给ACTION,ACTION把数据显示到JSP里返回给用户”。 有了样板,我们来分析这套程序中可能出现的各种web漏洞。 1、SQL注入漏洞 从SQL注入漏洞说起吧,在web漏洞里,SQL注入是最容易被利用而又最具有危害性的。怎么快速的找到呢?先分析流程,就拿用户查看文章这个流程为例:用户访问一个
action,告诉它用户想看ID为7的文章,这个action就会继续完成前面所说的流程。 如果是ASP程序,这就是最容易产生问题的时候,ASP是弱类型,接到参数后不需要转换类型,就和SQL语句连加起来。但是JSP就不一样,JSP是强类型的语言,接受有害的参数后:对于GET请求(直接在地址栏访问页面),如果这里要的是int型,即使不懂安全的程序员,也会把它(文章的ID)立刻转换成int,因为这里转换后在后面的处理中会更容易操作,而这时程序就出错了;对于POST请求,如果这里要的是int型,程序会在把它封装成Form对象时,因为自动要进行类型转化,同样发生错误,这两种错误发生后,根本不会访问后面的流程就跳出了,或许这就是JSP天生的安全性。所以,通常提交的变量是int时,不会发生问题,问题会出现在string参数这里,如果要查看某用户的信息,程序可能会让你提交如下参数:showuser.do? username=kxlzx。问题来了,因为这里是string类型,所以不懂安全的程序员顶多会判断一下是不是空,就连加成为SQL语句。有漏洞的程序大概会写成这个样子: ACTION的代码: showuser.do String username = null; username = request.getParameter("username"); Service service = new Service(); service.findByUsername(username); 得到参数后调用service,service层直接交给了Dao层,dao的代码: public Object findByUsername(String username) { JdbcTemplate jt=new JdbcTemplate(); String sql = "select * from Users where username=’"+username"’"; List list = jt.query(sql); ................... } dao调用了DB层的JdbcTemplate,把SQL语句拼好后,传给了JdbcTemplate去执行。不用再看这里的JdbcTemplate,就可以知道里面的代码使用了Statement的executequery()方法执行,导致了SQL注入。 分析了这么半天,有读者会问:“难道我要费这么大的力气才能找到漏洞么?”。的确,通常在ASP程序里找注入时的思路就是这样子,但是我们现在是在使用了开发模式分层架构的JSP程序里,应该按照分层架构的思维去找漏洞。在回答这个问题之前,我们还得绕个弯子,看看怎么在这里预防SQL注入(java始终都是这么优美,它不会直接告诉你答案,而是一层一层的让你拨开云雾)。 刚才分析流程,是从正向分析的,从用户输入到产生漏洞,我们在防御的时候,不妨倒过来看看,从DB层入手。JdbcTemplate调用执行SQL语句,可以有两个类供我们选择,一个是Statement,另一个就是预处理的Statement,两者有着效率上和安全上的显著差别。在效率上,只要数据库支持预处理技术(sqlserver,mysql,oracle等都支持,只有少数access等不支持),就会在大量执行SQL语句时增加速度;在安全上,使用预处理,会把接受的参数也经过预处理,从而不会作为SQL语句的一部分执行,而是仅仅作为SQL语句中的参数部分
内容被执行。一旦DB层使用了预处理,DAO层的SQL语句也会发生变化,成为这个样子: public Object findByUsername(String username) { JdbcTemplate jt=new JdbcTemplate(); String sql = "select * from Users where username=?"; List list = jt.query(sql,new Object[1]{username}); ................... } 这样,SQL注入就和我们的程序几乎无关了,注意我说的是几乎,而不是全部。知道了怎么防御,于是一切在这里变的简单极了,我们应该直接去DB层找到JdbcTemplate,看看代码,一旦使用了Statement,很好,这个系统十有八九有漏洞,下面要做的是使用Editplus搜索“request.getParameter”。没有使用预处理的系统,可能会在action层进行防御,对参数过滤,但总有防御不到的时候,因为战线拉的太长了,每一个action里都可能接受参数并存在漏洞。 还有一种情况,系统一部分使用了预处理,一部分没有,这样的情况可能是因为项目赶的比较仓促,人员没有经过正规培训,最后艰难的整合到了一起。这种情况也好办,直接在DAO层搜索("’)或(’"),这些符号用于和字符串变量连加,拼SQL语句,肯定是这些语句之后的代码使用了Statement。然后再往上层找,看看哪个action调用了这个有问题的dao类,也可能发生SQL注入。 即使系统使用了预处理,别忘了,程序给客户使用后,客户有权利去扩展的。程序拿到客户那里,客户有了新的需求,而这个需求又不大,很可能不愿意花钱重新雇人来实现扩展功能,在这个时候也可能出现问题,客户使用自己的程序员扩展AJAX功能,这个程序员因为怕出问题,不敢动源程序,就在web.xml里加了一个servlet,这个servlet直接去调用conn。可怕的事情发生了。所以,我们的搜索漏洞规则中又加上了一条,在非dao层的文件中,搜索“select,update,delete”等字符串。 2、暴露程序信息漏洞 这个漏洞是怎么来的呢?我们需要从异常说起。有经验的入侵者,可以从JSP程序的异常中获取很多信息,比如程序的部分架构、程序的物理路径、SQL注入爆出来的信息等,这个漏洞很容易防御,却很难快速定位漏洞文件。出现这样漏洞的时候,通常是我们在写代码的时候,少了一些可能性的考虑而导致的。这样的问题都是经验造成的,而寻找漏洞也要通过经验加运气(要有仙缘。。。),我个人技术有限,就不多说了。防御的方法就是在程序中加上“Exception层”,自定义异常,把系统产生的异常统统包装起来,不要放过任何一个可能产生异常的地方。像腾讯的异常就包装的很好“对不起,今天的注册人数已经达到十万,请您明天再来。。。”,废话,日注册量都十万,还让不让人活啦,铁定是程序发生了异常,不敢让各位大大们看到真实的面孔。
写的java web页面会被人入侵数据库,然后我的数据库的数据都是null,怎么办,怎么防
页面有输入框的,尽量不要使用字符串拼接出sql语句进行查询等操作;sql语句要用到url链接里的参数时,要进行判断;或通过Hibernate API编写访问数据库的代码,这样可以减少被sql注入的危险
如何用java入侵?
http://www.newzz.cn/Program/JAVA/0742864805.html
虽然我不懂JAVA,但是我还是帮你找了找一些JAVA入侵的资料.不知道管用不管用,呵呵,谢谢了
常用网络入侵手段
入侵技术技术细分下来共有九类,分别为入侵系统类攻击、缓冲区溢出攻击、欺骗类攻击、拒绝服务攻击、对防火墙的攻击、利用病毒攻击、木马程序攻击、后门攻击、信息战。
1. 入侵系统类攻击
这种攻击手法千变万化,可是攻击者的最终目的都是为了获得主机系统的控制权,从而破坏主机和网络系统。这类攻击又分为:信息收集攻击、口令攻击、漏洞攻击
信息收集型攻击并不对目标本身造成危害,这类攻击被用来为进一步入侵提供有用的信息。主要包括:扫描技术攻击;体系结构探测攻击;利用信息服务攻击;假消息攻击;网络监听攻击等。黑客还会运用社会工程收集信息。
口令攻击是网上攻击最常用的方法,入侵者通过系统常用服务或对网络通信进行监听来搜集帐号,当找到主机上的有效帐号后,就采用字典穷举法进行攻击,或者他们通过各种方法获取password文件,然后用口令猜测程序破译用户帐号和密码。
利用系统管理策略或配置文件的漏洞,获得比合法权限更高的操作权,如:电子邮件DEBUG、Decode、Pipe、Wiz;FTP的CWD~root、Site Exec;IP碎片攻击、NFS猜测、NFS Mknod、NFS UID检查、Rlogin-froot检查等。
利用系统配置疏忽的入侵攻击,如:利用CGI脚本权限配置错误的入侵攻击;利用环境变量配置疏忽的入侵攻击;Setuid 漏洞入侵攻击。
协议漏洞攻击,如:FTP协议攻击;服务程序漏洞攻击,如wu-ftpd漏洞攻击、IIS漏洞攻击;CGI漏洞攻击等。
利用WEB服务器的不合理配置,或CGI程序的漏洞进行攻击,达到获取脚本源码,非法执行程序,使WWW服务器崩溃等目的。如:对NT的IIS服务器的多种攻击,对许多免费CGI程序;对asp,java script程序漏洞的攻击等。
2.缓冲区溢出攻击
通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其它的指令,如果这些指令是放在有root权限的内存中,那么一旦这些指令得到了运行,黑客就以root权限控制了系统,达到入侵的目的。缓冲区攻击的目的在于扰乱某些以特权身份运行的程序的功能,使攻击者获得程序的控制权。
缓冲区溢出的一般攻击步骤为:在程序的地址空间里安排适当的代码(植入法或利用已存在的代码),然后,通过适当的地址初始化寄存器和存储器,让程序跳到黑客安排的地址空间中执行(如激活纪录、函数指针或长跳转缓冲区等)。
3.欺骗类攻击
TCP/IP协议本身的一些缺陷可以被利用,使黑客可以对TCP/IP网络进行攻击,网络欺骗的技术主要有:HoneyPot和分布式HoneyPot、欺骗空间技术等。主要方式有:IP欺骗;ARP欺骗;DNS欺骗;Web欺骗;电子邮件欺骗;源路由欺骗(通过指定路由,以假冒身份与其它主机进行合法通信、或发送假报文,使受攻击主机出现错误动作;地址欺骗(包括伪造源地址和伪造中间站点)等。
以IP欺骗攻击为例说明如下,其的实施步骤为:选定目标主机——发现主机间的信任模式——使被信任主机葬失工作能力——TCP序列号的取样和预测——冒充被信任主机进入系统,并留下后门供以后使用。
4. 拒绝服务攻击
通过网络,也可使正在使用的计算机出现无响应、死机的现象,这就是拒绝服务攻击,简称DoS(Denial of Service)。这种攻击行为通过发送一定数量一定序列的报文,使网络服务器中充斥了大量要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷以至于瘫痪、停止正常的网络服务。
常见的DoS工具有:同步洪流、WinNuke、死亡之PING、Echl攻击、ICMP/SMURF、Finger炸弹、Land攻击、Ping洪流、Rwhod、tearDrop、TARGA3、UDP攻击、OOB等。
分布式拒绝服务攻击:这种攻击采用了一种比较特别的体系结构,从许多分布的主机同时攻击一个目标,从而导致目标瘫痪,简称DDoS(Distributed Denial of Service)。攻击步骤如下:探测扫描大量主机以找到可以入侵的脆弱主机——入侵有安全漏洞的主机并获取控制权——在每台被入侵的主机上安装攻击程序(整个过程都是自动化的,在短时间内即可入侵数千台主机)——在控制了足够多的主机之后,从中选择一台作为管理机,安装攻击主程序——到指定逻辑状态后,该管理机指挥所有被控制机对目标发起攻击,造成目标机瘫痪。如:Trinoo、TFN、Stacheldraht、TFN2K、Blitznet、Fapi、Shaft、Trank攻击等。
5.对防火墙的攻击
一般来说,防火墙的抗攻击性很强,可是它也不是不可攻破的。其实,防火墙也是由软件和硬件组成的,在设计和实现上都不可避免地存在着缺陷。对防火墙的探测攻击技术有:Firewalking技术、Hping。
绕过防火墙认证的攻击手法有:地址欺骗和TCP序号协同攻击、IP分片攻击、Tcp/Ip会话劫持、协议隧道攻击、干扰攻击、利用FTP-pasv绕过防火墙认证的攻击。
直接攻击防火墙系统的常见手法有:CiscoPix防火墙的安全漏洞:CiscoPIX防火墙的拒绝服务漏洞、CISCOPIX防火墙FTP漏洞允许非法通过防火墙。
6.利用病毒攻击
病毒是黑客实施网络攻击的有效手段之一,它具有传染性、隐蔽性、寄生性、繁殖性、潜伏性、针对性、衍生性、不可预见性和破坏性等特性,而且在网络中其危害更加可怕,目前可通过网络进行传播的病毒已有数万种,可通过注入技术进行破坏和攻击。
计算机病毒攻击的传播途径有电子邮件、传统的软盘、光盘、BBS、WWW浏览、FTP文件下载、新闻组、点对点通信系统和无线通信系统等。
7.木马程序攻击
特洛依木马是一种骗子程序,提供某些功能作为诱饵,背地里干一些鬼事,当目标计算机启动时,木马程序随之启动,然后在某一特定的端口监听,在通过监听端口收到命令后,木马程序根据命令在目标计算机上执行一些操作,如传送或删除文件,窃取口令,重新启动计算机等。常见的特洛伊木马程序有:BO、Netspy、Netbus等。
8.后门攻击
后门是指入侵者躲过日志,使自己重返被入侵系统的技术,后门种类很多,常见的有:调试后门、管理后门、恶意后门、Login后门、Telnet后门、rhosts +后门、服务后门、文件系统后门、内核后门、Boot后门、TCP Shell后门等。
9.信息战
信息战指利用现代信息手段,通过夺取信息优势来达到自己的军事目的,它既包括了攻击对方的认识和信念,也包括了利用信息优势在实际战斗中打败对方。包括:进攻性信息战(如:电子战进攻、计算机网络进攻、截获和利用敌方的信息、军事欺骗、进攻性心理战、物理摧毁、微处理芯片攻击、利用电磁辐射窃取信息、高功率微波武器等)和防御性信息战(如:电子战防卫、计算机通信和网络安全防护、反情报、防御性的军事欺骗及反欺骗、防御性心理战、防物理摧毁、防御性信息武器等)。
java中新定义的类实现接口后侵入性怎么解释
框架的侵入性问题可以拿实际例子来说明:
A. IOC容器
1. Avalon采用Interface Injection,如果你采用这个框架做IOC,它的侵入性就是要实现一个接口
2. Spring和Pico采用Javabean setter或者Constructor injection,采用他们做IOC,侵入性就是要满足Javabean规范
3. 同它们相比,不需要interface,也不需要满足Javabean规范,无所不能的ajoo的IOC容器就是号称无侵入性
B. MVC架构
1. struts的侵入性是需要扩展它的一堆base class,以及写一堆带有http request/response签名的方法
2. webwork则只要是普通的javabean就可以了
做同样事情的不同框架,如果侵入性越低,通常框架本身的实现比较复杂,效率也比较低,也有可能把侵入性从Java对象的本身移到了其他地方(比如配置文件)。
入侵电脑用什么语言java可以吗
可以用JAVA编写,可以写简单的脚本程序,也可以写复杂的后台隐藏程序。
使用JAVA还有它自身的优势
1、如网页脚本就可以用JAVA轻易的写出
2、通讯协议本身就是JAVA的强项。