1. 前言
提到黑客攻击,必然会想起某政府部门的网站首页被篡改、或者某名人隐私被窃取等等情景。黑客攻
击,听起来像是离我们很遥远的事情,但前阵子确实发生在我们身上。公司自开发、自用的一个老信息系
统(J2EE)被黑客攻击——首页被篡改。我们技术人员在排查时发现被上传了很多 WebShell(可以远程操
作服务器上文件的 JSP),技术人员经过几天修改,最终将系统漏洞堵上了。此事件虽没给我们造成损失,
但是给我们的系统安全敲响了警钟。
被攻击的系统是基于 JSP+Servlet 技术,多年前由一些刚学习 J2EE 的新手开发,里面存在很多的攻击
漏洞。时至今日,我们现在的系统是否还存在一些这样的漏洞呢?要想了解系统中会存在哪些漏洞,首先
有必要了解黑客是怎样利用漏洞攻击网站的,开发时才知道如何规避漏洞。本文先介绍黑客攻击常见的三
种方式和原理,然后提出对应规避漏洞的办法。
本文假定服务器是Windows操作系统、SQL Server数据库、J2EE应用。
示例代码中的红色字体表示是用户输入提交的内容。
2. 黑客攻击方式
2.1 SQL注入
SQL注入主要是因为程序没有检查用户输入内容,直接将输入内容拼接成SQL 进行执行。我们通过例
子来进行说明。
假设系统通过输入用户名、密码进行登录验证的代码是这样子的:
String sql = "select * from tablename where account='" + account + "' and password='" +
password + "'";
这样的 sql 语句就存在 SQL 注入漏洞。在正常输入的情况下,比如输入 admin 和 123456,那么最终
执行的 sql是这样子的(红色表示是输入的内容):
select * from tablename where account=’admin’ and password=’123456’
这不会有任何问题,但是黑客可不会这样规矩,他会输入特殊的内容,执行的 sql会是这样:
select * from tablename where account=’a’ and password=’1’ or ‘1’=’1’
这样的 sql 执行结果是返回整个表的记录,那么就会以结果集的第一行记录用户登录了系统。除此以
外,黑客还可以输入分号(;)和注释符(--)来做更多的事情,比如查询 sysobjects 表,执行存储过程等
等:
select * from tablename where account=’a’; sql语句或存储过程 --’ and password=’’
上面的sql先执行分号前的条件查询,再执行分号后黑客输入的 sql语句或存储过程,--符号后面的内
容被注释掉了。
通过SQL注入,黑客可以猜解出数据库表结构以及表数据,当然黑客最终感兴趣的还是获得拥有最高
权限的 admin 账号和密码,用 admin 登录系统,然后继续黑客行为(可以利用上传漏洞上传 WebShell 从
而控制这台机器的,后面还会讲上传漏洞) 。
黑客还可执行SQLServer 提供的一些特殊存储过程,执行操作系统cmd命令,增加操作系统用户并给
予最高权限,开通端口和远程桌面功能,那么就可以直接远程桌面连接并控制机器(假设没有防火墙或在
防火墙外)。
2.2 跨站攻击
跨站攻击(Xss)主要是程序没有检查用户输入,可以提交 HTML代码或脚本。黑客利用这种漏洞,输
入恶意的脚本代码,当恶意的代码被执行后就形成了跨站攻击,可以隐蔽运行网页木马,甚至格式化浏览
者的硬盘,只要脚本代码能够实现的功能,跨站攻击都能够达到。跨站攻击主要是攻击浏览含有恶意代码
网页的人。跨站漏洞最容易发生在留言板、论坛、评论、短消息等可以输入富文本的地方。
跨站漏洞我想是多数开发人员很容易理解而且知道的,所以程序中有的地方会将用户输入的<和>转换
成<和>,防止用户提交 HTML代码或脚本。但仅这样做还不够,跨站攻击还可以利用已存在的HTML
标签。我们来看个例子。
<img src=”用户提交的内容”></img>
<a href=”用户提交的内容”>用户提交内容2</a>
上面的代码片断演示用户提交的内容最终会被放到HTML标签内,这里就存在跨站漏洞,我们来看看
黑客会怎么构造脚本代码。
<a href=”javascript:恶意脚本代码”> //有关键字 javascript。
<a href=”javascript:恶意脚本代码”>
//同上一行,只是将关键字 javascript进行了转换。
<a href=”#” onmouseover=”恶意脚本代码”> // 无明显关键字,空格和引号可以勉强算是。
如果程序在网页显示时没有在用户提交内容前后加引号,
<a href=用户提交的内容>用户提交内容2</a>
那么黑客构造的脚本中也就没有引号了,
<a href=# onmouseover=恶意脚本代码> // 输入的内容中,引号也不用了;
注:在 HTML标签内,&#符号开头后面加字符的ASCII,会被浏览器自动转换成字符。
2.3 附件上传
利用系统对附件上传控制不严,直接上传一个WebShell,从而控制了服务器。 比如黑客利用上传功能,
上传一个 jsp,然后黑客就可以直接访问这个上传的jsp 了,http://ip:port/ctxPath/uploadFiles/xxx.jsp。
有的系统限制了普通用户上传的附件类型,但对系统管理员、或者后台管理控制功能中没有做附件类
型的限制,黑客可以先利用 SQL注入,拿到最高权限的账号登录,然而再上传jsp 附件。
2.4 旁注攻击
假设A、B两个系统部署在同一台机器,黑客要入侵的 A系统很安全,无法入侵,但B 系统存在安全
漏洞,黑客先攻破B 系统,从而攻破 A系统。
我们的系统有集成 eWebEditor 组件。eWebEditor 有后面登录管理界面,如果我们在集成时没有修改
eWebEditor 默认的管理员密码(在 config.jsp中定义),通过 eWebEditor,黑客很轻松地就攻破我们的系统。
3. 防黑措施
了解了黑客的入侵手段,接下来我们就可以有针对性的防止漏洞的产生。
3.1 防 SQL注入
1、 尽量不进行SQL拼接,利用 PreparedStatement.setXXX 设置参数的形式来处理;
2、 必须拼接SQL时,要检查用户输入,不能有单引号、and、or、select等等关键字;
3、 将连接数据库的账号权限设置为最小,不能查询系统表(如 sysobjects);
4、 应用系统admin、sa 等账号密码要尽量复杂;
3.2 防跨站
1、 将HTML标记<和>进行转义;
2、 要在HTML 标签内显示的内容,要过滤 javascript,vbscript,jscript等关键字,将单双引号转义,将&
符号转义;
3、 在输入框和数据库字段,限制字符长度;
3.3 附件上传
1、 规定只允许上传哪些类型的附件(一般有图片、Office 文档、压缩文件、pdf、txt);不要规定不
允许哪些文件上传,这样有可能会被黑客绕过(比如在文件后缀后面加空格或小数点,后缀后面
这些都会被Windows系统忽略),防不胜防;
2、 文件类型检查不仅在客户端做,后台也要进行检查,防止绕过前端检查;
3、 上传目录不要放在WebRoot目录下,这样即使黑客上传了,也无法通过HTTP访问。
分享到:
相关推荐
总结起来,预防黑客攻击WEB API接口,需要从认证授权、输入验证、安全通信、限速控制、错误处理、更新维护、版本管理和日志监控等多个方面进行全面考虑。通过实施这些措施,我们可以极大地提高API的安全性,保护用户...
计算机安全防护是指保护计算机系统和电子数据免受黑客攻击的各种措施和技术。计算机安全防护的目的是确保计算机系统和电子数据的安全、可靠和隐私。 米特尼克的故事展示了黑客攻击的危险性和计算机安全防护的重要性...
电力二次系统安全防护可以防止电力系统遭受黑客攻击,避免电力系统的敏感信息泄露、电力系统事故的发生和扩大。 电力二次系统安全防护的基本原则: 1. 系统性原则(木桶原理) 电力二次系统安全防护需要从整体上...
多引擎,精准查杀网页木马、各类病毒 独有的安全狗云查杀引擎、网马引擎与...全面的服务器体检,暴露安全隐患,当前系统健康情况了然于心,同时提供贴心的优化建议措施,加固服务器更简单,系统运行更快速,更安全。
本文通过对黑客攻击的基本方法的探讨,给出防范黑客攻击的基本方法,为个人电脑、企业管理以及系统管理员防范黑客提供一些参考。 以下是关于黑客攻击防范方法的知识点: 一、黑客攻击的基本方法 黑客攻击是指未经...
首先,要理解什么是黑客攻击,它是指通过某种手段或技术,使得信息系统执行非预期行为,或者试图获取超过系统授权的权限,进行信息的查看、复制和修改等行为。根据攻击方法的不同,可以分为技术方法攻击和社会工程学...
在网络安全领域,LogParser除了可以针对系统和网络各种活动日志进行智能分析,并可将日志数据集成到其他安全工具中进行全面跟踪,帮助用户迅速发现关键信息,进行引导式调查和日志分析,还能够预测和预防黑客攻击等...
黑客攻击是计算机系统安全和计算机网络安全的最大的威胁之一。黑客可以通过各种方法来攻击计算机系统和计算机网络,包括暴力攻击、隐蔽攻击和逻辑攻击等。黑客攻击的目的可以是为了获取机密信息、破坏计算机系统和...
【调度中心监控系统安全防护方案】是电力行业中保障省级及以上调控中心电力监控系统安全的关键措施。该方案旨在抵御黑客和恶意代码的攻击,防止集团式攻击导致调控中心电力监控系统的瘫痪,进而避免大面积停电事故的...
同时,美国计算机应急响应小组报告的ICS系统安全漏洞数量逐年增多,黑客工具中也开始集成这些漏洞的攻击方法。 误区三:认为黑客不懂工业协议或系统。实际上,工业环境中广泛使用商业标准件和IT技术,大部分通信...
电力二次系统安全防护是指保护电力二次系统免受恶意攻击、病毒、黑客等威胁,确保电力实时闭环监控系统及调度数据网络的安全。电力二次系统安全防护的目标是抵御各种形式的恶意攻击,防止一次系统事故或大面积停电...
本书《非技术攻击 菜鸟也能防黑客》的主旨,就是为广大电脑用户,特别是缺乏技术背景的人群,提供一系列预防这些非技术攻击的方法和策略。 首先,我们要了解非技术攻击的概念。这类攻击通常不涉及复杂的技术手段,...
电力监控系统安全防护管理制度是为了加强公司电力监控系统的信息安全管理,防范黑客及恶意代码等对电力监控系统的攻击及侵害,保障电力监控系统及电力调度数据网络的安全。该制度包括门禁和人员管理、权限和访问控制...
- **安全工具软件**:推荐了一系列提高系统安全性的实用工具软件,如IDS(入侵检测系统)、防病毒软件等。 - **常用命令程序**:列举并解释了配置UNIX系统安全时常用的命令,帮助读者熟练掌握这些操作。 #### 六、...
电力二次系统安全防护方案是确保电力实时闭环监控系统及调度数据网络的安全,以抵御黑客、病毒、恶意代码等通过各种形式对系统发起的恶意破坏和攻击的总体方案。该方案的制定基于国家经贸委[2002]第30号令《电网和电...
电力系统安全防护是确保电力设施稳定运行的关键环节,随着信息化技术的发展,电力系统越来越依赖于计算机网络,同时也面临着黑客攻击、病毒感染等安全威胁。本文针对电力系统安全防护进行了深入探讨。 首先,电力...
《黑客攻击与防范》主要探讨了网络安全领域的重要话题——如何防止和应对黑客的攻击。黑客攻击不仅威胁到个人隐私,还可能对企业和组织造成重大损失。以下是对该主题的详细阐述: 首先,黑客攻击通常分为三个阶段:...
监控系统安全防护规定是为了防范对电厂计算机监控系统的攻击侵害及由此引起的电力系统事故,保障电力系统的安全稳定运行,建立和完善电厂计算机监控系统的安全防护体系。本规定适用于与电力生产过程直接相关的计算机...
Windows XP 中更改管理员帐户名防黑客攻击 在 Windows XP 家庭版和专业版中,都存在一个内建的管理员账户,名称为"Administrator"。如果黑客想要攻击你的计算机,只需要破解出你的登录密码就可以了。为了增强安全性...
实用性也是本书的特色之一,每一章都从攻击方法的基本概念、背景知识、带来的危害,到实现攻击的软件,再到攻击的源代码程序编写,最后提供相应的防范措施,让读者能全面了解如何防范黑客攻击。 网络安全是一个快速...