网站地图    收藏   

主页 > 后端 > 网站安全 >

数据库攻防启示录 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-17 13:03 作者: 阅读:

[导读] 文 安恒信息 陈羽枫互联网的安全威胁从1969年区域性的大学主机相连而构成的互联网发展到今天覆盖全球点点滴滴的强大互联网,互联网不仅在经济与科技领域取得了显著成果,也极大...

文 安恒信息 陈羽枫
 
互联网的安全威胁

从1969年区域性的大学主机相连而构成的互联网发展到今天覆盖全球点点滴滴的强大互联网,互联网不仅在经济与科技领域取得了显著成果,也极大地丰富了人们的生活。这所有的一切都来源于Web,Web系统是互联网的重要组成部分,形形色色的Web系统、应用已经渗透到人们生活的方方面面。我们可以通过百度在线搜索想要的资料、可以通过网上银行完成在线购物和支付、可以通过微博和博客发表自己的“声音”、可以通过在线交友网站交到朋友。
 
由于这些WEB应用在设计时是允许任何人、从任何地方登陆进入访问,因而也成为了通往隐藏在深处的重要数据的桥梁。据推算,互联网至少每39秒就有一次攻击。据国家互联网应急响应中心发布的《2011年中国互联网网络安全态势报告》显示现实情况不容乐观。
 
 

 2011年年底的CSDN泄密门事件导致国内600万程序员的个人信息被盗取,虽然CSDN及时修复了漏洞,警方也及时抓住了犯罪嫌疑人,但今年依然有犯罪分子通过去年CSDN泄漏的帐号密码偷窃国内知名电商“京东商城”的用户账户,通过账户里的剩余资金大量购买商品。
 
这些曝光的安全泄密事件仅仅是个警钟,被公开的这些网站的数据库很早之前就被黑客拖库,而且转手买来卖去,眼下所见的都是被人榨干最后一滴水的陈年资料。谁能保证隐藏在暗处中的黑客们还有其他更多未曝光的资料呢?
 
 那么,黑客们是如何获取我们的重要信息,网站又是如何被拖库的呢?
 
 
 
攻:渗透WEB网站
下面我们逐步分解入侵者渗透WEB网站的主流手段。假设目标站点是一个大型综合类网站,会员数目众多。
 
 
 
锁定目标、搜集信息
 
    入侵一个目标站点的时候,黑客首先要看该站点是否存在利益价值。目前入侵者的商业攻击主要针对在线购物网站、社交网站、网络游戏、大型论坛、慈善机构、电子政务、金融证券网站等网站。攻击这些网站可以窃取会员用户信息进行社工欺骗,比如利用获取的身份信息对用户亲属进行电话诈骗、利用大部分人用同一个帐号密码的习惯去尝试登录其他网站,并且这些会员信息可以多次出售转卖;黑客入侵者还可以通过入侵政府网站挂“黑链”,因为政府网站在搜索引擎中占据的权重较高,攻击者可以通过此方法使自己指定的网站插入到政府网站页面中,从而提供其在搜索引擎中的排名靠前并盈利。
  
在确定目标后,黑客入侵者就会搜集该目标站点的相关信息,一次入侵的成功与前期的信息收集关系很大。搜集信息可以让入侵起到事半功倍的效果,只用经过一些简单的操作就可以得到一些服务器的Webshell,甚至于系统管理权限,搜集信息一般有三种方法:
  
工具扫描:黑客入侵者会使用各种扫描工具对入侵目标进行大规模扫描,得到系统信息和运行的服务信息,如对方所使用的操作系统、开放了哪些端口、存在哪些漏洞。典型的扫描有系统扫描、WEB扫描、旁注查询等。
 
  
社会工程攻击:利用各种查询手段得到与被入侵目标相关的一些信息,这种信息常用于社会工程学入侵手法,这种手法也是最难察觉和防范的。
 
公开域信息:主要通过Google Hacking搜索引擎搜索信息来进行入侵的,不少入侵者利用Google强大的搜索功能来搜索某些关键词,找到有系统漏洞和Web漏洞的服务器,打造成自己的肉鸡。还可以利用Whois协议,查询出一些所需要的信息。
 
 
 
现在黑客攻击前的踩点和信息搜集已经完成,通过上述工作,黑客已经得知目标站点主要开放了HTTP 80端口,远程登录RDP 3389端口;服务器采用的WINDOWS系统,中间件使用的Apache Tomcat,网站脚本语言用的JSP。
 
 
 
深入攻击阶段
利用SQL注入“拖库”
 
在深入攻击的过程中,首先攻击者需要找到一个动态链接的URL看是否存在SQL注入漏洞,例如现在找到一个存在问题的URL,通过简单的注入尝试语句发现该URL确实存在SQL注入漏洞,攻击者一般为了节省时间都会使用工具来促进效率。
 
 
 
通过工具攻击者获取到了服务器的环境变量,数据库结构,并且获取了该网站的所有用户数据,这个获取用户数据的过程就是我们常说的“拖库”。
 
 
 
 利用WEBshell获取服务器系统权限
 
“拖库”完成后如果还想扩大攻击范围,攻击者可以继续尝试其他攻击手段。获取WEBshell,即是攻击者通过网站端口对网站服务器的某种程度上操作的权限。
 
假如该网站使用了诸如FCKeditor的在线编辑器,攻击者就可以利用这个编辑器的漏洞,绕过网站编辑器本地验证的过程,成功上传文件得到一个WEBshell。
 
 
 
攻击者得到WEBshell后,通常会查看下网站的配置文件,看是否有可以利用的资源。如果网站的数据库服务器没有做安全防护配置,攻击者就可以直接通过获取到的信息链接到数据库服务器导出网站的全部数据。
 
攻击者还可以在WEBshell中执行命令,判断网站本身的权限是否服务器系统管理员权限,是就可以执行添加系统用户的命令。之前攻击者搜集信息的时候就得知网站服务器开放了远程登录3389端口,现在就可以用刚添加的管理员帐号登录服务器。
 
 
 
恶意篡改网页
 
现在整个网站和服务器都在攻击者的掌控之中,攻击者可以随意删除、修改、增加网页,插入网页木马等。有的攻击者为了证明自己的存在,对网站主页(在服务器开放WEB服务的情况下) 进行改写,这样的网页通常称为黑页。
 
 
 
 
防:守护WEB应用与数据库安全
我们已经了解黑客是如何入侵窃取网站的数据并破坏网站的过程。不难看出,攻击者对网站主页的破坏,会给网站带来经济、信誉等等方面的重大损失。同时,被攻击的网站传播着攻击者留下的带有负面影响的信息或者病毒木马,严重影响网络安全,所以对WEB应用安全的威胁,我们应该采取积极防御并及时解决的态度。
 
 
 
出了问题是谁的责任?
 
网站会有如此多的问题和漏洞有各种各种的原因。我们必须接受已经存在的应用缺陷和漏洞,通过发挥数据库管理员的安全职责去阻止因为应用缺陷和漏洞所造成的不良后果。如果开发人员不重视应用与数据交互的安全性,坚持最小权限原则,数据库管理员则有权在这场互动中占取主动,不给开发人员全权委托,不允许那么多的交互被授权。数据库管理员应坚持权限最小外界交互,并且对数据库进行加密保护,如密码不能使用明文保存。对所有应用层和数据层通信的审计监控将有助于快速识别和解决问题,准确地判断任何安全事件的范围,直到实现安全风险最小化的目标。

 
 
 
假如出现数据外泄事件,责任也不止是在数据库管理员身上,开发人员也需要共同承担责任。比如开发人员必须在用户能输入的地方都过滤危险字符,这样可以防止黑客通过诸如SQL注入攻击获取到数据库的敏感信息。目前在各类行业网站上,各种WEB应用漏洞随处可见,可以被黑客们检测到(他们一般会用软件同时扫描数千个网站)。
 
 
 
联合作战守护安全
 
开发商应该同安全厂商合作提供安全解决方案,这对于任何致力于部署网络应用数据库正常安全访问的用户都至关重要,WEB应用安全测试可以有效保障数据库的安全性。
 
 
 
开发人员在完成一套新的应用程序后应使用安全检测工具对其进行反复白盒测试,有条件的情况下可以请信息安全人员模拟黑客进行黑盒渗透测试,尽可能的发现应用程序的弱点并进行修补。如果需要更安全的解决方案来保护数据和数据库,应当实施源代码分析。这是一项冗长的处理过程,可以请安全服务提供商用专业的源码审计软件对应用程序代码进行详细的分析处理,这些工具会直接查找出更精确的缺陷所在,一款好的工具可以有助于加快进度并且提供更好的检测结果和解决方案。
 
 
 
保证应用程序的安全性关键是进行反复评估以确保管理工作正常,对结果实施验证并加固,确保风险一经发现立即补救,并保证管理人员能够了解到相关问题的存在。
 
 
 
数据库也需要“防火墙”

 
最后我们谈谈防火墙的作用。到目前为止,我们所做的都是侧重于预防措施。但在现实世界中,我们不可能总是改编程序和环境,所以必须采用其他技术措施。这就是为什么会产生新的防火墙。
 
 
 
防火墙用于应用程序或者监控流量的运行监控,也可以在执行运行时进行分析。防火墙可以找出攻击,并阻止尝试或修改的要求,来确保WEB服务器和数据库服务器的安全运行。
 
 
 
目前不光有WEB应用防火墙和网络防火墙能防范攻击者透过应用层和网络层的攻击;“数据库防火墙”也于这两年在不断的数据库泄密事件中出现在公众的视线里,国内称之为“数据库审计”产品,这些产品能给数据库提供实时的网络存储与访问的安全。
 
 
 
好的数据库安全策略应包括监控和审计,以确保保护对象正常运行,并且运行在正确的位置上,这也是个非常耗时的过程。由于缺乏时间和工具,大多数用户对于数据库配置的检查往往也仅是抽查而已。
 
 
 
特别需要指出的是,目前多数人认为“数据库审计”等同于数据库安全,事实上,数据库安全远远不是数据库审计可以搞定的,数据库审计只是数据库安全的一个很小的方面。之所以有时候将两者对等起来,一方面是由于市场宣传导致的误导,另一方面的确是这个部分的问题比较容易产品化/工具化,技术实现相对比较成熟。数据库安全应该包括:数据库资产管理、数据库配置加固、职责分离、特权用户控制、数据库弱点扫描和补丁管理、数据库加密、数据库审计。
 
 
 
最后,我们必须考虑到的重点还是应用程序的安全以及与数据库之间的相互作用的问题,尤其是对于当今流行的高度动态的和互动的网络应用程序而言,理解数据库与应用程序和系统环境之间的作用可以更加提升数据的安全性。
 
 
 
链接:
 
黑盒测试:黑盒测试是一种把软件产品当成是一个黑箱的测试技术,这个黑箱有入口和出口,测试过程中只需要了解黑箱的输入和输出结果,不需要了解黑箱里面具体是怎样操作的。黑盒测试的好处是测试人员不用费神去理解软件里面的具体构成和原理,只需像用户一样看待软件产品就行了。
 
    例如,银行转账系统提供给用户转账的功能,则测试人员在使用黑盒测试方法时,不需要知道转账的具体实现代码是怎样工作的,只需要把自己当成用户,模拟尽可能多的转账情况来检查这个软件系统能否按要求正常实现转账功能即可。
 
    如果只像用户使用和操作软件一样去测试软件黑盒测试可能存在一定的风险。例如,某个安全性要求比较高的软件系统,开发人员在设计程序时考虑到记录系统日志的必要性,把软件运行过程中的很多信息都记录到了客户端的系统日志中,甚至把客户端连接服务器端的数据库连接请求字符串也记录到了系统日志中,那么按照黑盒测试的观点,这是程序内部的行为,用户不会直接操作数据库的连接行为,因此不会去做检查系统日志方面的测试。这明显构成了一个Bug,尤其是对于安全性要求高的软件系统,因为它暴露了后台数据库账号信息。
 
    有人把黑盒测试比喻成中医,做黑盒测试的测试人员应该像一位老中医一样,通过“望、闻、问、切”的方法,来判断程序是否“有病”。这比单纯的操作黑箱的方式进了一步。这种比喻给测试人员一个启示,不要只是简单地看和听,还要积极地去问,积极地去发现、搜索相关的信息。应该综合应用中医看病的各种“技术”和理念来达到找出软件“病症”的目的,具体作法如下:
 
“望”,观察软件的行为是否正常;
 
“闻”,检查输出的结果是否正确;
 
“问”,输入各种信息,结合“望”、“闻”来观察软件的响应程度;
 
“切”,像中医一样给软件“把脉”,敲击一下软件的某些“关节”。
 
 
 
白盒测试:如果把黑盒测试比喻成中医看病,那么白盒测试无疑就是西医看病了。测试人员采用各种仪器和设备对软件进行检测,甚至把软件摆上手术台解剖来看个究竟。白盒测试是一种以理解软件内部结构和程序运行方式为基础的软件测试技术,通常需要跟踪一个输入经过了哪些处理,这些处理方式是否正确。
 
    在很多测试人员,尤其是初级测试人员看来,白盒测试是一种只有非常了解程序代码的高级测试人员才能做的测试。熟悉代码结构和功能实现的过程当然对测试有很大的帮助,但是从黑盒测试与白盒测试的区别可以看出,有些白盒测试是不需要测试人员懂得每一行程序代码的。
 
    如果把软件看成一个黑箱,那么白盒测试的关键是给测试人员戴上一副X光透视眼镜,测试人员通过这副X光透视眼镜可以看清楚输入到黑箱中的数据是怎样流转的。
 
    一些测试工具就像医院的检测仪器一样,可以帮助了解程序的内部运转过程,从而让测试人员可以洞悉软件究竟做了哪些动作。
 
    在测试过程中,应该综合应用黑盒测试方法和白盒测试方法,按需要采用不同的技术组合。不要用黑盒测试方法和白盒测试方法来划分自己属于哪一类测试人员,一名优秀的测试人员应该懂得各种各样的测试技术和查找Bug的手段

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论