黑客组织攻击政府网站利用的主要漏洞及解决办法

黑客组织攻击政府网站利用的主要漏洞及解决办法
黑客组织攻击政府网站利用的主要漏洞及解决办法

附件

境外黑客组织攻击政府网站利用的

主要漏洞及解决方法

一、境外黑客组织攻击网站的基本情况

以境外反共黑客组织为例,该组织自2012年4月起已经攻击篡改了400多个政府部门和企事业单位网站。有关基本情况分析如下:

(一)攻击对象分析。政府部门和教育院校的网站是其主要攻击对象,约占被攻击网站总数的85%,其中政府部门网站约占总数的57%;教育院校类网站约占总数的28%。

(二)被攻击网站的行政层级分析。区县级政府部门网站和企事业单位网站是其重点攻击对象,约占总数的67%;地市级政府部门网站约占总数的17%;中央部委和直属单位、省级政府部门网站约占总数的16%。

(三)被攻击网站的地域范围分析。地域较分散,涉及全国27个地区,北京、广东、广西、浙江、江苏5个地区较多,约占总数的50%。

(四)黑客攻击方式和手段分析。黑客反侦查意识较强,主要利用肉鸡、跳板隐藏攻击源,对网站进行发散式攻击,在获取网站控制权后,预埋后门程序,定期进行攻击篡改。

二、境外黑客组织攻击网站的主要手法

经对黑客攻击使用的漏洞进行分析,均属于常见公开漏洞,

漏洞利用程序可从网上下载获得,且操作简单,普通黑客甚至了解计算机操作之人均可快速学会使用。主要有以下四种常见手法。

(一)利用Struts2框架漏洞入侵服务器实施攻击。2013年6月底,“阿帕奇”开源社区发布了用于搭建网站的应用框架“Struts”第2版本,该版本存在安全漏洞。攻击者利用这些漏洞远程执行了网站服务器系统命令,获取了服务器控制权,进而可直接对网站页面实施篡改。由于该权限较高,攻击者可在服务器上留下“后门”,即使网站重新搭建,还可利用服务器“后门”恢复网站控制权。

(二)利用SQL注入类漏洞实施攻击。网站使用了带有缺陷的程序对数据库进行操作,攻击者利用这些漏洞,精心构造了数据库访问命令,获取了网站后台控制权,提交了隐秘包含可修改数据库数据的恶意程序,进而对网页实施了篡改。

(三)利用网页编辑器类漏洞实施攻击。部分网站为方便用户在网页内排版图文,专门安装了FCKeditor、eWebEditor等网页编辑程序,部分低版本的程序存在安全漏洞。攻击者利用这些漏洞,在攻击过程中修改了网站登录口令,从而向网站上传了携带攻击程序的文件,并这些攻击程序在网站内激活执行,使攻击者获取了网站后台管理权,进而实施网页篡改行为。

(四)利用网站模板类漏洞实施攻击。部分网站使用了DeDeCMS、KesionCMS、qiboCMS等模板进行网站建设,这些模板

中的低版本均存在不同程度的程序设计缺陷。攻击者利用这些漏洞,修改了网站默认管理员登录口令,提交了具备操作修改网站页面功能的恶意程序,进而获取网站系统管理权,实施网页篡改行为。

三、常见漏洞的解决办法

对于常见的系统和软件漏洞,可以在互联网上下载网站漏洞扫描工具进行安全检测和扫描,一般的扫描工具均可以发现Struts2、SQL注入等常见安全漏洞。常见漏洞的修复方法也比较简单,可通过系统和软件升级,更新程序等方法进行解决。以下介绍了常用的解决办法,供参考。

(一)struts2漏洞解决办法。及时升级Struts2是最快最能解决根本问题的方式。方法如下:

1、到官网下载最新的 jar包,目前已更新到2.3.20 。

2、删除原有的jar包jsonplugin-xx.jar、ognl-x.x.x.jar、struts2-core-x.x.x.x.jar、xwork-core-x.x.x.x.jar、javassist-x.x.x.jar,其中,如果以前采用过其他jsonplugin 插件的话,此jar由struts2-json-plugin-2.3.20jar代替。

3、添加的jar包:

commons-lang3-3.2.jar

struts2-json-plugin-2.3.20.jar

ognl-3.0.6.jar

struts2-core-2.3.20.jar

xwork-core-2.3.20.jar

javassist-3.11.0.GA.jar

4、如果原使用的版本为type="redirect-action",替换工程中所有*.xml Struts配置文件中type="redirect-action"为type="redirectAction"。

5、如果你的工程原来采用的是其他的json类型处理插件的话,修改struts.xml中返回类型为json的处理类相关的配置:

修改为:

6、修改相关出错的源代码,如果你的工程原来采用的是其他的json类型处理插件的话,所有涉及到jsonplugin-0.30.jar 的类由struts2-json-plugin-2.3.15.1.jar中的对应类替换。

7、struts2标签库的升级:将原有的struts-tag.tld升级为最新。

(二)SQL注入漏洞攻击的检测方式。SQL注入漏洞攻击检测分为入侵前的检测和入侵后的检测。入侵前的检测,可以通过手工方式,也可以使用SQL注入漏洞扫描工具软件。检测的目的是为预防SQL注入漏洞攻击,而对于SQL注入漏洞攻击后的检测,主要是针对审计日志的查看,SQL注入漏洞攻击成功后,会在Web Service和数据库的审计日志中留下“痕迹”。

1、动态SQL检查。动态的SQL语句是一个进行数据库查询的强大的工具,但把它和用户输入混合在一起就使SQL注入成为了可能。将动态的SQL语句替换成预编译的SQL或者存储过程对大多数应用程序是可行的。预编译的SQL或者存储过程可以将用户的输入作为参数而不是命令来执行,这样就限制了入侵者的行动。当然,它不适用于存储过程中利用用户输入来生成SQL命令的情况。在这种情况下,用户输入的SQL命令仍可能得到执行,数据库仍然存在SQL注入漏洞攻击的危险。

2、有效性校验。如果一个输入框只可能包括数字,那么要通过验证确保用户输入的都是数字。如果可以接受字母,检查是不是存在不可接受的字符,那就需要设置字符串检查功能。确保应用程序要检查以下字符:分号、等号、破折号、括号以及SQL 关键字。

3、数据表检查。使用SQL注入漏洞攻击工具软件进行SQL

注入漏洞攻击后,都会在数据库中生成一些临时表。通过查看数据库中最近新建的表的结构和内容,可以判断是否曾经发生过SQL注入漏洞攻击。

4、审计日志检查。在Web服务器中如果启用了审计日志功能,则Web Service审计日志会记录访问者的IP地址、访问时间、访问文件等信息,SQL注入漏洞攻击往往会大量访问某一个页面文件(存在SQL注入点的动态网页),审计日志文件会急剧增加,通过查看审计日志文件的大小以及审计日志文件中的内容,可以判断是否发生过SQL注入漏洞攻击事件;另外还可以通过查看数据库审计日志,查询某个时间段是否有非法的插入、修改、删除操作。

5、攻击后检测。SQL注入漏洞攻击成功后,入侵者往往会添加特权用户(如:administrator、root、sa等)、开放非法的远程服务以及安装木马后门程序等,可以通过查看用户帐户列表、远程服务开启情况、系统最近日期产生的一些文件等信息来判断是否发生过入侵。

(三) SQL注入漏洞攻击防范措施。SQL注入漏洞攻击的防范方法有很多种,根据网上资源整理,主要有以下方法:

1、数据有效性校验。如果一个输入框只可能包括数字,那么要通过校验确保用户输入的都是数字。如果可以接受字母,那就要检查是不是存在不可接受的字符,最好的方法是增加字符复杂度自动验证功能。确保应用程序要检查以下字符:分号、等号、

破折号、括号以及SQL关键字。另外限制表单数据输入和查询字符串输入的长度也是一个好方法。如果用户的登录名最多只有10个字符,那么不要认可表单中输入10个以上的字符,这将大大增加攻击者在SQL命令中插入有害代码的难度。

2、封装数据信息。对客户端提交的数据进行封装,不要将数据直接存入cookie中,方法就是在编程的代码中,插入session、if、try、else,这样可以有效地防止攻击者获取cookie 中的重要信息。

3、去除代码中的敏感信息。将在代码中存在的用户名、口令信息等敏感字段删除,替换成输入框。

如:SQL=" select from users where username = ’admin’and password= ’1234567’ "这样显然会暴露管理员的用户名、口令信息。可以将其修改成SQL= " select * from users where username='" +Txtuser.Text + "' and userpwd='" + Textpwd.Text + "'",这样就安全了很多,入侵者也是不会轻易的就获取到用户名、口令信息。

4、替换或删除单引号。使用双引号替换掉所有用户输入的单引号,这个简单的预防措施将在很大程度上预防SQL注入漏洞攻击,单引号时常会无法约束插入数据的Value,可能给予输入者不必要的权限。用双引号替换掉单引号可以使大部分SQL注入漏洞攻击失败。

如:“select* from users where username='" + admin + "'

and userpwd='" + 1234567+ "'”显然会得到与“select * from users where username='admin' and password= '1234567'”相同的结果。

5、指定错误返回页面。攻击者有时从客户端尝试提交有害代码和攻击字符串,根据Web Service给出的错误提示信息来收集程序及服务器的信息,从而获取想得到的资料。应在Web Service中指定一个不包含任何信息的错误提示页面。

6、限制SQL字符串连接的配置文件。使用SQL变量,因为变量不是可以执行的脚本,即在Web页面中将连接数据库的SQL 字符串替换成指定的Value,然后将Web.config文件进行加密,拒绝访问。

7、设置Web目录的访问权限。将虚拟站点的文件目录禁止游客用户(如:Guest用户等)访问,将User用户权限修改成只读权限,切勿将管理权限的用户添加到访问列表。

8、最小服务原则。Web服务器应以最小权限进行配置,只提供Web服务,这样可以有效地阻止系统的危险命令,如ftp、cmd、vbscript等。

9、鉴别信息加密存储。将保存在数据库users表中的用户名、口令信息以密文形式保存,也可以对users表进行加密处理,这样可以大大增加对鉴别信息访问的安全级别。

10、用户权限分离。应尽可能的禁止或删除数据库中sa权限用户的访问,对不同的数据库划分不同的用户权限,这样不同

的用户只能对授权给自己的数据库执行查询、插入、更新、删除操作,就可以防止不同用户对非授权的数据库进行访问。

相关主题
相关文档
最新文档