2月25下午,CSDN(微博)在北京丽亭华苑酒店举行了TUP第二十期活动——互联网安全。本次活动邀请了众多安全界专家,安天实验室反病毒引擎研发中心经理童志明,安恒信息安全服务部门经理刘志乐,C/C++/ASM程序员,xsign成员张亚一和pr0zel windows安全研究员李敏怡。他们将在本次演讲中以大量实例演示,阐明互联网安全的安全防御与漏洞补杀、分析用户身份认证等亟需解决的问题所在。
安恒信息安全服务部门经理 刘志乐
安恒信息安全服务部门经理刘志乐在活动中发表《“泄密门”带给我们的警示》主题演讲。
刘志乐演讲中表示,目前75%的安全隐患来自于Web应用系统所存在的安全漏洞,三分之二的WEB站点都相当脆弱,易受到攻击。Web应用安全严峻的现状。常见Web应用安全漏洞说明主要从两方面来阐述,一方面从权威的OWASP统计显示2010年名列前十的安全漏洞;另一方面,通过从漏洞产生原因、危害以及加固建议三个方面来描述目前常见的高危WEB应用安全漏洞。
从整体的安全产品防护、安全服务两个方面来阐述如何对WEB应用系统进行安全防护。安全产品防护主要是描述WEB应用安全产品的部署防护,安全服务主要是描述Web应用系统的安全服务体系概述、安全服务内容以及安全服务主要实施技术和工具。
以下是演讲实录:
今天跟大家一起交流外部应用方面的安全,以及这些安全的漏洞原因,会展现这些漏洞简单的演示,然后也会说一下怎么样防护这个安全。
用户数据泄露已被重视
首先我们看一看近期一个热点。去年有很多网站的数据都遭到了窃密这一块大家无论是在微博还是在媒体,还是在QQ都能看到。这些充分说明政府开始重视这一块,还有一些行业重视这一块。因为去年出了这个事情以后,我也去了很多地方,包括参加政府部门召开的一些会议,包括一些学术研究会议,给我的感觉就是每个单位当时正在坐领导位置,尤其是主管信息安全的这些领导,他们觉得坐的不扎实,如坐针毡。
同时国家也在这个方面做了一些重视,CSDN董事长曾经发表一个文章,他说80%网站都是存在漏洞问题,过去这个问题都存在,只不过没有人重视它、关注它而已,只不过这次泄密门事件,导致大家把眼球全部吸引到这个上面来,然后大家才知道,原来我们每天生活在如此不安全的社会里面。
作为国家这一块通讯部目前已经对一些站点已经进行了一些防护,包括要求一些搜索引擎,必须把银行的引擎排在第一位,防止一些钓鱼事件的发生,大家也众所周知,我不知道今天有没有百度的人在,只不过有时候排名会影响到使用者,会容易被钓鱼。
互联网安全现状
第二部分讲目前的安全现状。最近每一年都有一些国家的权威机构都会发布一些权威布局,包括一些行业知名的安全公司,也会出现一些安全形式的数据。这一块刚才前面蒋总的文章也提到了,外部的危机从2005年开始,那个时候更多人攻击手段还是基于以前传统的网络层的溜光、去发现断口上有没有问题。但是到了2005年左右开始,因为当时的人、整个社会他们已经认识到我要用防火墙把这些断口防护住。分别把什么东西放在内网里边,通过这个区域网域来控制,这个时候对于黑客来讲,他唯一能入侵的手段就是你对外提供了服务的应用系统。
因为你应用系统掉对外服务,你的断口在防火墙上面必须开启,那么这样攻击者就可以利用你开启了的断口,利用你应用系统自身的弱点,对你的应用系统发起攻击。这是2010年CNCERT的一份统计报表,这份统计报表现实了逐月的篡改。
这一些是网马的情况,我们经常收到一些短信告诉我们推销产品,或者是诈骗的,有时候我们的信息就是因为我们的电脑中了网马,我们自己的信息被人家窃取了等等。
这一块是另外一个统计报告,就是钓鱼。实际上钓鱼这块,从去年上半年中国银行的钓鱼事件出来以后,整个的包括国家大大小小的银行实际上对这一块还是蛮关注的。
漏洞的入侵手段与防范建议
我们目前工作中,整个发现的Web应用产品比较多的、危害比较大的一些漏洞。
第一类——SQL注入。这个SQL注入原理很简单,就是由于客户端的恶意攻击者,他把自己想注入的提交的恶意的参数,到了你的Wed服务器,你的Wed服务器对这个参数没有进行过滤和验证,直接把他的参数就放到了后端的DP服务器做SQL查询,这个时候就产生的注入。
这一块注入,我们看一下注入形式是什么。比如说就像这个地方,本身可以填一个ID,他返回客户端是adimin,我们看源代码原本查询的就要就是这么做的。大家看到这个ID直接从这边就过来了,没有进行过滤措施。这个时候作为我的话,就可以这样的。先加一个大引号,然后提交一下,这个时候就报错了,这个报错并不是应用系统报错了,而是后台的SQL数据库里报错了,报错了以后,应用系统的前台把这个报错直接报到前台给客户看到了。
对于攻击者来讲,这种没闭合或者闭合不闭合对他来讲没有多大意义。我们今天简单演示一下,我们用联合查询,比如说我们查询这张表里所有的信息,这个时候我就会把这张表里所有的数据查出来了,这个只是一个SQL注入的一个最简单的演示,可能SQL注入产生危害有很多。首先他能把数据查出来,能够把数据倒走。
对于这样的漏洞我们有如下一些简单的一些建议。这个建议肯定不完整,也因为本身我们今天只是一个简单的交流,不可能写一个长篇大论,来针对SQL注入说一大篇,我只能说简单的几方面。
第一个,你要检查用户的输入,因为大家都知道HDDP协议是一个纯文本协议,我们有句话讲叫永远不要相信用户的输入,这个输入不管是你他看得见的输入,还是他看不见的输入,这些东西都可以被攻击者作为攻击的参数。因为所有的东西,只要有一个代理工具都可以做到。
第二个,就是要转义用户的输入,把用户的输入进行转义,让他执行不了。
第三个,就是拒绝已经转义过的输入。
第四个,使用参数化的查询。就是JAVA都带这个功能,目前PHP没有怎么研究,这一块可以自动取做的。
第五个,是使用SQL的存储过程。这个方式并不能百分之百避免SQL注入,有一些动态的过程也会触发注入。你完全不能避免,有些地方可能有用你应用的需要,你还真就需要去拼接SQL查询语句,可以不拼接就不要拼接,用这个SQL存储实现。
第六个,SQL的权限。我也是程序员出身,比如说我在开发程序的时候,我肯定愿意数据库的权限用的连接词的权限越大越好,这样我只需要调整源代码,不需要调用权限,你要把你让他干什么活儿给他这个权限,不能给他更高的权限。
最后定期检查网站的安全漏洞,对你的网站进行一个修复。
第二类——跨站脚本。也是一种注入,只不过注入的语句从客户端发出到服务器,然后服务器没进行过滤,又把它的提交过来的参数又返回给客户端,客户端本身注入这些是什么呢?是JAVA的标准语言或者是标记,这样就产生是标记语言,而不是数据语言,这就是跨站。跨站曾经在OWASP2010是排在第一位的。
跨站我们应该怎么防护呢?首先跟注入是一样的,不要相信用户的输入,然后把用户的输入全部过滤掉。尽量在HTML代码中不要插入不可信的一些内容。对于需要插入的内容首先在进来的时候要检查,在输出的时候从服务器返回客户端的时候,要对它进行一个HTML编码,然后给他以后,他到客户端以后,就成了一个数据,就不会是标记。
表单绕过,说白了实际上是一种特殊形式的SQL注入。就是说原本这个地方是登陆的一个表单,输入用户名和密码,而且要输入正确的用户名和密码才能登陆进去。但是由于这个地方存在着漏洞,作为攻击者他就可以绕过这个限制,比如说我们看这边有一个模型。这种方式在过去一两年很多黑客愿意用这个。
针对表单绕过的防护措施,实际上跟前面所说的SQL注入的防护措施是类似的。这样用防护措施基本防护住了表单绕过。接下来是后台管理。后台管理本身这个后台很多情况下是对CMS的系统来讲,作为管理员登陆这个后台,发布一些新闻,这个时候这个后台管理如果说被攻击分子找到的话,他可能通过外来密码,或者说通过社会工程学登陆这个管理后台。这个管理后台还有一种就是危险比较大的,比如说我们这个地方是一个TOMCAT的一个管理后台,这个时候会让你输入用户名和密码,很多以前的只有时候TOMCAT就默认了,进了这个TOMCAT也有这个管理后台,这个时候可以把整个原本发布的程序可以自己发布新的应用。这个相当于是中间件的管理后台。
对于应用程序的管理后台,比如说我这个地方有一个JEECMS,一般一个管理后台如果说他可以直接进去,这些他里面会有一些资源,或者是模板,特就可以直接上传Wed SCL,就可以控制这个服务器。
对于后台的管理,你肯定要做印证,就是权限的策略的一个印证,再有就是把你管理后台不要放在公网上,就不要放在公网上,因为新闻的发布都是在内网里面做到的。这些管理后台不要总是用一些让人一下子能猜到的,你可以起一个比较复杂的名字,也不要上面有连接,让他不容易找到,虽然他也可能用一些字典,或者通过谷歌(微博)去查,但是总归这样你能加大他攻击的难度。
敏感信息泄露的防范
敏感信息泄露,大大小小的网站这种情况都有。因为敏感信息泄露本身就是很广泛的范畴,这里面严重一点的比如说你把他参数没有按照他预先的定义输出了,他程序报错了,前台上面会显出程序报错了,有的时候数据库报错了ORA多少等等,这些都属于信息泄露。对于这种信息泄露,我们首先就是说一个要把这些错误信息统一定位到错误页面里去,直接告诉他你出错了,不要告诉他详细的信息,比如说你原来第八个调试信息,在你的产品上线了以后,你第八个信息就要关掉,不要再打开,不要让所有天下人都做你的TESTER。
再就是编辑器上传,这种编辑器本身就集成了好多功能,而且有的时候开发起来时间比较快,也比较容易上手。对于编辑器上传一个就是说尽量你要用最新的一些版本,然后对于一些不能给上传首先要验证他的后缀,实际上现在验证后缀也容易被绕过。这一块最好验证他整个的流程。
然后就是弱口令,就是弱密码,这一块我就不说了,刚才前面一位嘉宾已经说了,实际上弱密码大家已经看到了,都很傻,想象不出来,干吗用六个1,六个8,123,123,这一块没什么好说的,因为对于你程序员来讲,你怎么弄,你只能对他的密码进行强制性验证,你判断他这个密码里面没有符合你的密码策略,就不允许他使用。
接下来讲一下安全的一个防护。这一块本身今天并不是一个针对于所有程序员Web安全的一个培训,所以我讲的比较粗一点,比较反的Web应用安全防护。
Web应用安全防护有三个方面,就是事前、事中、事后。对于Web应用防护来讲,事前你的程序还没有发布的,在准备之前,在测试阶段就进行安全测试,无论你是通过专业的源代码检查工具也好,还是通过人工的也好,这样发现它一些安全上面的一些弱点、漏洞,这样就使你的程序本身就是按照性比较高的一个程序在发布出去。这个时候对于使用单位来讲,肯定他的后面维护所造成的一些成本就要低了很多,但目前据我所知,就是整个外面真正做到这一点的,少之又少。包括现在有一些银行在努力想做到这一点,但是也并不是所有的银行都做到了这一点。更多的都是,因为中国有的时候领导一开始没有安全漏洞,没有什么,他都不重视,非要等到黑客攻击他一下,他感觉到威胁了,说要赶紧做安全,但是实际上应用已经在线上使用了,这个时候有会去修补。今天修了那个洞,明天就有那个洞,那个洞修完了还有无穷的洞,这就是事前。事前还包括我们程序员自己把这个代码编写的更安全,我也做过开发,我也知道上过很多单位一进门就是小黑板,小黑板就是3月1号什么项目必须上线,3月15号什么东西,程序员压力都很大,我怎么样想把这个老板交给我的时间之内功能能满足就不错了,我什么时候考虑安全啊?但是为了对自己的产品负责的话,还是在可能的情况下,更多的去考虑安全。实际上有的时候往往就是一个举手之劳的东西。
比如说像OWASP有一个ESAIP函数,这个就是一个JAVA的包,你在写每一个程序代码的时候,只需要声明引用上去就很简单,也不会花你很多时间,这是事前。
事中就是这个应用已经上线了,上线了以后已经在线上正常运营了,在整个正常运营过程中,首先你要有安全的一个运维的一些制度,你的整个流程,然后你的访问控制,然后你的整个应用程序这一块你要经常性去自己做一些检测,日常的常规检测,甚至可以请专业的安全公司给你做安全测试、渗透测试,这一块你要努力把安全的风险每一天都在减少。因为安全永远是一个动态的,并不是一个静态的。就像去年曾经有一个SQL 2的安全出现了问题,作为一个正常的单位必须要经常做一个正常的检查,就像给自己做一个体检一样,这样只有自己的毛病在什么地方,针对性吃一些药。
第三方的防护产品,比如说一些Web应用防火墙,或者是Web应用审计了,或者说一些其他的防护类的产品。也包括一些检测类的产品,这些审计系统,还有一些渗透测试等等。
渗透测试也有一个流程,也有一些比如说信息收集、弱点分析,还有信息获取、权限提升等等。还有渗透测试常用的一些工具,安全的检查,这些都是事中要做的一些工作。这是检查的一些具体内容。
还有就是最后出了事情的一个应急响应,应急响应也有六个阶段,首先是一个准备,准备到了现场再就是检查、检测,检测完了对事件进行抑制,不能让它再无限制的扩大,然后再根除,再抑制了以后把漏洞的根源找到,把这个漏洞补上,根治住,再恢复你应用正常的使用,最后再进行一个跟踪,这六个阶段,每个阶段都有具体的一些方法和手段。
• 中国角型毛巾架行业运营态势与投资潜力研究报告(2018-2023)
• 中国直接挡轴市场深度研究及投资前景分析报告(2021-2023)
• 2018-2023年KTV专用触摸屏市场调研及发展前景分析报告
• 中国回流式高细度粉碎机市场深度调研与发展趋势预测报告(2018-2023)
• 2018-2023年中国原色瓦楞纸行业市场深度研究及发展策略预测报告
• 中国雪白深效精华液市场深度调研及战略研究报告(2018-2023)