最近看过此主题的会员

返回列表 发帖

发帖弹鸡鸡

过儿  内裤  德石   我要弹你们鸡鸡
非安全中国网免责声明 1、本帖所有言论和图片纯属发表者个人意见,与本站立场无关;
2、本话题由:achitaka发表,本帖发表者achitaka符合《关于版权及免责声明》6大管理制度规定,享有相关权利;
3、其他单位或个人使用、转载或引用本帖时必须征得发表者achitaka和本站的同意;
4、本帖作品部分转载自其它媒体并在本站发布,转载的目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责;
5、本帖如有侵犯到贵站或个人版权问题,请立即告知本站,本站将及时予与删除,并致以最深的歉意;
6、本站管理员和版主有权不事先通知发帖者而删除本文。

Windows Internet服务器安全配置
Windows Internet服务器安全配置原理篇我们将从入侵者入侵的各个环节来作出对应措施一步步的加固windows系统.加固windows系统.一共归于几个方面1.端口限制2.设置ACL权限3.关闭服务或组件4.包过滤5.审计我们现在开始从入侵者的第一步开始.对应的开始加固已有的windows系统.1.扫描这是入侵者在刚开始要做的第一步.比如搜索有漏洞的服务.对应措施:端口限制以下所有规则.都需要选择镜像,否则会导致无法连接我们需要作的就是打开服务所需要的端口.而将其他的端口一律屏蔽2.下载信息这里主要是通过URL SCAN.来过滤一些非法请求对应措施:过滤相应包我们通过安全URL SCAN并且设置urlscan.ini中的DenyExtensions字段来阻止特定结尾的文件的执行3.上传文件入侵者通过这步上传WEBSHELL,提权软件,运行cmd指令等等.对应措施:取消相应服务和功能,设置ACL权限如果有条件可以不使用FSO的.通过 regsvr32 /u c:windowssystem32scrrun.dll来注销掉相关的DLL.如果需要使用.那就为每个站点建立一个user用户对每个站点相应的目录.只给这个用户读,写,执行权限,给administrators全部权限安装杀毒软件.实时杀除上传上来的恶意代码.个人推荐MCAFEE或者卡巴斯基如果使用MCAFEE.对WINDOWS目录所有添加与修改文件的行为进行阻止.4.WebShell入侵者上传文件后.需要利用WebShell来执行可执行程序.或者利用WebShell进行更加方便的文件操作.对应措施:取消相应服务和功能一般WebShell用到以下组件WScript.NetworkWScript.Network.1WScript.ShellWScript.Shell.1Shell.ApplicationShell.Application.1我们在注册表中将以上键值改名或删除同时需要注意按照这些键值下的CLSID键的内容从/HKEY_CLASSES_ROOT/CLSID下面对应的键值删除5.执行SHELL入侵者获得shell来执行更多指令对应措施:设置ACL权限windows的命令行控制台位于WINDOWSSYSTEM32CMD.EXE我们将此文件的ACL修改为某个特定管理员帐户(比如administrator)拥有全部权限.其他用户.包括system用户,administrators组等等.一律无权限访问此文件.6.利用已有用户或添加用户入侵者通过利用修改已有用户或者添加windows正式用户.向获取管理员权限迈进对应措施:设置ACL权限.修改用户将除管理员外所有用户的终端访问权限去掉.限制CMD.EXE的访问权限.限制SQL SERVER内的XP_CMDSHELL7.登陆图形终端入侵者登陆TERMINAL SERVER或者RADMIN等等图形终端,获取许多图形程序的运行权限.由于WINDOWS系统下绝大部分应用程序都是GUI的.所以这步是每个入侵WINDOWS的入侵者都希望获得的对应措施:端口限制入侵者可能利用3389或者其他的木马之类的获取对于图形界面的访问.我们在第一步的端口限制中.对所有从内到外的访问一律屏蔽也就是为了防止反弹木马.所以在端口限制中.由本地访问外部网络的端口越少越好.如果不是作为MAIL SERVER.可以不用加任何由内向外的端口.阻断所有的反弹木马.8.擦除脚印入侵者在获得了一台机器的完全管理员权限后就是擦除脚印来隐藏自身.对应措施:审计首先我们要确定在windows日志中打开足够的审计项目.如果审计项目不足.入侵者甚至都无需去删除windows事件.其次我们可以用自己的cmd.exe以及net.exe来替换系统自带的.将运行的指令保存下来.了解入侵者的行动.对于windows日志我们可以通过将日志发送到远程日志服务器的方式来保证记录的完整性.evtsys工具(https://engineering.purdue.edu/ECN/Resources/Documents)提供将windows日志转换成syslog格式并且发送到远程服务器上的功能.使用此用具.并且在远程服务器上开放syslogd,如果远程服务器是windows系统.推荐使用kiwi syslog deamon.我们要达到的目的就是不让入侵者扫描到主机弱点即使扫描到了也不能上传文件即使上传文件了不能操作其他目录的文件即使操作了其他目录的文件也不能执行shell即使执行了shell也不能添加用户即使添加用户了也不能登陆图形终端即使登陆了图形终端.拥有系统控制权.他的所作所为还是会被记录下来.额外措施:我们可以通过增加一些设备和措施来进一步加强系统安全性.1.代理型防火墙.如ISA2004代理型防火墙可以对进出的包进行内容过滤.设置对HTTP REQUEST内的request string或者form内容进行过滤将SELECT.DROP.DELETE.INSERT等都过滤掉.因为这些关键词在客户提交的表单或者内容中是不可能出现的.过滤了以后可以说从根本杜绝了SQL 注入2.用SNORT建立IDS用另一台服务器建立个SNORT.对于所有进出服务器的包都进行分析和记录特别是FTP上传的指令以及HTTP对ASP文件的请求可以特别关注一下.本文提到的部分软件在提供下载的RAR中包含包括COM命令行执行记录URLSCAN 2.5以及配置好的配置文件IPSEC导出的端口规则evtsys一些注册表加固的注册表项.实践篇下面我用的例子.将是一台标准的虚拟主机.系统:windows2003服务:[IIS] [SERV-U] [IMAIL] [SQL SERVER 2000] [PHP] [MYSQL]描述:为了演示,绑定了最多的服务.大家可以根据实际情况做筛减1.WINDOWS本地安全策略 端口限制A.对于我们的例子来说.需要开通以下端口外->本地 80外->本地 20外->本地 21外->本地 PASV所用到的一些端口外->本地 25外->本地 110外->本地 3389然后按照具体情况.打开SQL SERVER和MYSQL的端口外->本地 1433外->本地 3306B.接着是开放从内部往外需要开放的端口按照实际情况,如果无需邮件服务,则不要打开以下两条规则本地->外 53 TCP,UDP本地->外 25按照具体情况.如果无需在服务器上访问网页.尽量不要开以下端口本地->外 80C.除了明确允许的一律阻止.这个是安全规则的关键.外->本地 所有协议 阻止2.用户帐号a.将administrator改名,例子中改为rootb.取消所有除管理员root外所有用户属性中的 远程控制->启用远程控制 以及终端服务配置文件->允许登陆到终端服务器c.将guest改名为administrator并且修改密码d.除了管理员root,IUSER以及IWAM以及ASPNET用户外.禁用其他一切用户.包括SQL DEBUG以及TERMINAL USER等等3.目录权限将所有盘符的权限,全部改为只有administrators组  全部权限system  全部权限将C盘的所有子目录和子文件继承C盘的administrator(组或用户)和SYSTEM所有权限的两个权限然后做如下修改C:Program FilesCommon Files 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限C:WINDOWS 开放Everyone 默认的读取及运行 列出文件目录 读取三个权限C:WINDOWSTemp 开放Everyone 修改,读取及运行,列出文件目录,读取,写入权限现在WebShell就无法在系统目录内写入文件了.当然也可以使用更严格的权限.在WINDOWS下分别目录设置权限.可是比较复杂.效果也并不明显.4.IIS在IIS 6下.应用程序扩展内的文件类型对应ISAPI的类型已经去掉了IDQ,PRINT等等危险的脚本类型,在IIS 5下我们需要把除了ASP以及ASA以外所有类型删除.安装URLSCAN在[DenyExtensions]中一般加入以下内容.cer.cdx.mdb.bat.cmd.com.htw   .ida   .idq   .htr   .idc   .shtm .shtml .stm   .printer 这样入侵者就无法下载.mdb数据库.这种方法比外面一些在文件头加入特殊字符的方法更加彻底.因为即便文件头加入特殊字符.还是可以通过编码构造出来的5.WEB目录权限作为虚拟主机.会有许多独立客户比较保险的做法就是为每个客户,建立一个windows用户然后在IIS的响应的站点项内把IIS执行的匿名用户.绑定成这个用户并且把他指向的目录权限变更为administrators  全部权限system  全部权限单独建立的用户(或者IUSER)  选择高级->打开除 完全控制,遍历文件夹/运行程序,取得所有权 3个外的其他权限.如果服务器上站点不多.并且有论坛我们可以把每个论坛的上传目录去掉此用户的执行权限.只有读写权限这样入侵者即便绕过论坛文件类型检测上传了webshell也是无法运行的.6.MS SQL SERVER2000使用系统帐户登陆查询分析器运行以下脚本use master exec sp_dropextendedproc 'xp_cmdshell' exec sp_dropextendedproc 'xp_dirtree'exec sp_dropextendedproc 'xp_enumgroups'exec sp_dropextendedproc 'xp_fixeddrives'exec sp_dropextendedproc 'xp_loginconfig'exec sp_dropextendedproc 'xp_enumerrorlogs'exec sp_dropextendedproc 'xp_getfiledetails'exec sp_dropextendedproc 'Sp_OACreate' exec sp_dropextendedproc 'Sp_OADestroy' exec sp_dropextendedproc 'Sp_OAGetErrorInfo' exec sp_dropextendedproc 'Sp_OAGetProperty' exec sp_dropextendedproc 'Sp_OAMethod' exec sp_dropextendedproc 'Sp_OASetProperty' exec sp_dropextendedproc 'Sp_OAStop' exec sp_dropextendedproc 'Xp_regaddmultistring' exec sp_dropextendedproc 'Xp_regdeletekey' exec sp_dropextendedproc 'Xp_regdeletevalue' exec sp_dropextendedproc 'Xp_regenumvalues' exec sp_dropextendedproc 'Xp_regread' exec sp_dropextendedproc 'Xp_regremovemultistring' exec sp_dropextendedproc 'Xp_regwrite' drop procedure sp_makewebtaskgo删除所有危险的扩展.7.修改CMD.EXE以及NET.EXE权限将两个文件的权限.修改到特定管理员才能访问,比如本例中.我们如下修改cmd.exe   root用户   所有权限net.exe   root用户   所有权现这样就能防止非法访问.还可以使用例子中提供的comlog程序将com.exe改名_com.exe,然后替换com文件.这样可以记录所有执行的命令行指令8.备份使用ntbackup软件.备份系统状态.使用reg.exe 备份系统关键数据如reg export HKLMSOFTWAREODBC e:ackupsystemodbc.reg /y来备份系统的ODBC9.杀毒这里介绍MCAFEE 8i 中文企业版因为这个版本对于国内的许多恶意代码和木马都能够及时的更新.比如已经能够检测到海阳顶端2006而且能够杀除IMAIL等SMTP软件使用的队列中MIME编码的病毒文件而很多人喜欢安装诺顿企业版.而诺顿企业版,对于WEBSHELL.基本都是没有反应的.而且无法对于MIME编码的文件进行杀毒.在MCAFEE中.我们还能够加入规则.阻止在windows目录建立和修改EXE.DLL文件等我们在软件中加入对WEB目录的杀毒计划.每天执行一次并且打开实时监控.10.关闭无用的服务我们一般关闭如下服务Computer BrowserHelp and SupportMessengerPrint SpoolerRemote RegistryTCP/IP NetBIOS Helper如果服务器不用作域控,我们也可以禁用Workstation11.取消危险组件如果服务器不需要FSOregsvr32 /u c:windowssystem32scrrun.dll注销组件使用regedit将/HKEY_CLASSES_ROOT下的WScript.NetworkWScript.Network.1WScript.ShellWScript.Shell.1Shell.ApplicationShell.Application.1键值改名或删除将这些键值下CLSID中包含的字串如{72C24DD5-D70A-438B-8A42-98424B88AFB8}到/HKEY_CLASSES_ROOT/CLSID下找到以这些字串命名的键值全部删除12.审计本地安全策略->本地策略->审核策略打开以下内容审核策略更改    成功,失败审核系统事件    成功,失败审核帐户登陆事件    成功,失败审核帐户管理    成功,失败


















公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

发贴看看自己积分,呵呵,好像没有楼猪的多。


















公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

分层架构下寻找java web漏洞
<TABLE class="tab-content table-break" cellSpacing=0 cellPadding=0>



web开发应用程序(网站),是目前应用最广泛的程序。但是开发者的水平参差不齐,导致了各种各样web漏洞的出现。本文站在分层架构的角度,分析一下如何在java web程序中找到经常出现的种种漏洞。


本文讨论的只是web程序上的漏洞,和其它漏洞,是相对独立的。这句话看似废话,实际上却说明了时常被忽略的因素,即:“很多人认为只要我开发web程序没有漏洞,web服务器就安全了”,事实上,并非如此。一个合格的web程序开发人员,应该时刻清楚自己开发的程序会在什么环境中被使用,以及一旦自己的程序产生某种漏洞,最终会导致什么后果。简单的说,web程序被安装在一台或多台(分布式)web服务器上,一旦安装成功,就等于在为广大用户提供服务的同时,给入侵者打开了一条或N条新的思路。如果服务器管理员刚好对安全配置不了解(事实上,国内这种管理员居多),那么只好由我们的程序来守好最后的关卡最后一道防线。 看了本文题目,一定有一部分人会认为,“不就是讲JSP漏洞么,用得着披着这么厚的包装么?”,为了回答这个疑问,我们先看看JSP和ASP的开发有什么不同吧。在ASP时代(ASP,PHP等语言),开发一套系统往往没有修改已经写好的系统痛苦的多,因为它们把所有的代码(包括链接数据库的代码、执行SQL语句的代码、控制页面显示的代码)统统都放在<%......%>中,我们时常会看到如下代码块: -----------代码来自某ASP木马----------- Function GetFileSize(size)   Dim FileSize   FileSize=size / 1024   FileSize=FormatNumber(FileSize,2)   If FileSize < 1024 and FileSize > 1 then     GetFileSize="<font color=red>"&amp; FileSize &amp; "</font> KB"   ElseIf FileSize >1024 then     GetFileSize="<font color=red>"&amp; FormatNumber(FileSize / 1024,2) &amp; "</font> MB"   Else     GetFileSize="<font color=red>"&amp; Size &amp; "</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层”(显示层),这一层是最终显示给用户看的页面,同时也是入侵者的攻击平台。 在收到GET请求后,用户访问ACTION层,自动会发生:“ACTION调用SERVICE,SERVICE调用DAO,DAO调用DB,DB执行SQL语句返回结果给DAO,DAO返回给SERVICE,SERVICE返回给ACTION,ACTION把数据显示到JSP里返回给用户”。 在收到POST请求后,用户提交的表单会被封装成form对象,在封装的时候,调用form类中的验证方法对提交参数进行验证,然后把form对象扔给ACTION层,继续执行GET请求后面的步骤。 有了样板,我们来分析这套程序中可能出现的各种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,很好,这个系统十有八九有漏洞,对于GET请求,下面要做的是使用Editplus搜索“request.getParameter”,对于POST请求,就打开所有的FORM层寻找验证方法(validate方法专门用于验证),如果验证写的有问题,就会导致漏洞出现。没有使用预处理的系统,可能会在action层和form层进行防御,对参数过滤,但总有防御不到的时候,因为战线拉的太长了,每一个action都可能接受参数并存在漏洞。 还有一种情况,系统一部分使用了预处理,一部分没有,这样的情况可能是因为项目赶的比较仓促,人员没有经过正规培训,最后艰难的整合到了一起。这种情况也好办,直接在DAO层搜索("')或('"),这些符号用于和字符串变量连加,拼SQL语句,肯定是这些语句之后的代码使用了Statement。然后再往上层找,看看哪个action调用了这个有问题的dao类,也可能发生SQL注入。 即使系统使用了预处理,别忘了,程序给客户使用后,客户有权利去扩展的。程序拿到客户那里,客户有了新的需求,而这个需求又不大,很可能不愿意花钱重新雇人来实现扩展功能,在这个时候也可能出现问题,客户使用自己的程序员扩展AJAX功能,这个程序员因为怕出问题,不敢动源程序,就在web.xml里加了一个servlet,这个servlet直接去调用conn。可怕的事情发生了。所以,我们的搜索漏洞规则中又加上了一条,在非dao层的文件中,搜索“select,update,delete”等字符串。 2,暴露程序信息漏洞。 这个漏洞是怎么来的呢?我们需要从异常说起。有经验的入侵者,可以从JSP程序的异常中获取很多信息,比如程序的部分架构、程序的物理路径、SQL注入爆出来的信息等,这个漏洞很容易防御,却很难快速定位漏洞文件。出现这样漏洞的时候,通常是我们在写代码的时候,少了一些可能性的考虑而导致的。这样的问题都是经验造成的,而寻找漏洞也要通过经验加运气(要有仙缘。。。),我个人技术有限,就不多说了。防御的方法就是在程序中加上“Exception层”,自定义异常,把系统产生的异常统统包装起来,不要放过任何一个可能产生异常的地方。像腾讯的异常就包装的很好“对不起,今天的注册人数已经达到十万,请您明天再来。。。”,废话,日注册量都十万,还让不让人活啦,铁定是程序发生了异常,不敢让各位大大们看到真实的面孔。 3,AJAX暴露出来的漏洞。 前面讲SQL注入的时候说过的例子就是一个典型的情况,因为大多数网站不是在开发时就拥有Ajax技术的,都是后来看大家都用了,赶时髦加上。但是在加上的同时没有意识到,在web上增加一个文件,就等于扩展了一点攻击面。在这里我就不多说了,请参考IT168的AJAX安全专题http://www4.it168.com/jtzt/shenlan/safe/ajax 4,业务逻辑漏洞。 这个词看起来挺抽象的,他和“暴露程序信息漏洞”有很多共同点,看名字就知道,应该是存在于业务逻辑层(service层)的漏洞。这样的漏洞都和程序的运行逻辑有关,举一个例子。 小王给小李转账,在业务层的流程应该是这样子的,首先在小王的账上扣除一百元,之后在小李的账上增加一百元。 这个过程需要执行至少两条SQL语句,也就是调用至少两次dao方法,而一旦调用中间出现问题(产生异常),就应该立刻回滚而不是跳转到异常处理机制。大家都应该想到使用“事务处理”,是的,在一个大型复杂的项目里,一定要进行事务处理,一旦事务处理控制的不好,麻烦就大了。这就是它和“暴露程序信息漏洞”的共同点,发现的时候,要凭经验和运气。 5,XSS漏洞。 这个漏洞也影响深远,想要发现这样的漏洞,除了在页面上进行测试外,还要从流程上入手。用户输入有害信息后,信息保存到数据库,从数据库中读出来丢给用户时产生漏洞。也就是说我们有两个过程可以拦截,就是保存到数据库时,和从数据库读出来后交给用户时。最快的方法是直接打开数据库查看数据,如果数据没有经过编码直接放进了数据库,那么可能性就有了一半。剩下的一半更简单,在action层搜索转码常用的字符,如果没有,就很容易发现漏洞。即使有,也不用着急,在action层里慢慢找,很可能还有漏网之鱼。 6,页面层的逻辑漏洞。 此类漏洞涵盖面很大,包括“暴露不该暴露的数据”、“权限控制的不精确”、“方便客户的同时存在安全隐患”等等。这类漏洞就只能靠着自己的经验,使用系统的每一个细小功能来寻找。我给出几个例子供大家参考。 例1,“找回密码”功能,这个功能是为了方便客户的,可以通过一些客户之前确认的信息而获得客户的身份验证。有些程序的逻辑是这样的,“请输入VIP用户名”--(判断VIP用户不存在)--“请输入提示问题答案”--显示用户密码或提供修改密码的链接。第一步,入侵者可以获得VIP用户名是否存在,进而获取密码,第二步,一旦用户留的问题比较弱智,就等于告诉别人自己的密码。 例2,用户列表功能,试想,普通用户闲着没事看用户列表做什么?这个功分明是为了方便入侵者搜集用户名的。 例3,不要把防护交给JS,谁告诉我们使用JS可以防止用户做某些操作的?这简直是陷阱,JS只能防护普通用户而已,永远不要相信客户端提交上来的数据,我见到有人的系统在限制上传文件时,仅仅在JS里做了防护,这不是自欺欺人么? </TABLE>


















公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

返回列表