20159302《网络攻击与防范》第五周学习总结
教材内容学习总结
1.基础知识回顾
通过教材内容的学习了解,掌握了基本的网站运行模式,并了解其结构方式。如下图:
运行过程为:首先客户在浏览器端发送请求,将相关的表单、数据交付给服务器;然后服务器根据所传送过来的数据由相应的处理程序进行处理;然后调用数据库内容反馈给服务器,由服务器将数据库取得的数据进行封装处理再发给浏览器用户。这样就完成了一个请求/响应的流程。
目前:主流的前端技术有html5+css3+javascript。html语言是超文本标记语言,其结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。一般网站搭建过程中使用该语言进行网站的布局,如使用div。而css是层叠样式表是一种用来表现html或xml(标准通用标记语言的一个子集)等文件样式的计算机语言。能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。javascript是由网景公司提出并应用于网站的搭建中的,一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在html网页上使用,用来给html网页增加动态功能。目前常用的javascript框架有jquery等。
服务器语言主要有php、java、c#、jsp等。其中简单介绍一下php语言,PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及php自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,php是将程序嵌入到html文档中去执行,执行效率比完全生成html标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。目前常用的php框架有thinkphp、yii等。值得一提的是国内百分之八十以上的网站都是用php写的。而服务器的搭建一般是使用Apache、tomcat等。
数据库:常用的数据库有mysql、sql server、mogodb等。其中mysql是免费开源的数据库系统,下面简单介绍一下:它是一个关系型数据库管理系统。在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
前台页面与服务器的交互时使用的是http协议,http协议是超文本传输协议,默认使用tcp 80端口,http是相对比较简单、无状态的、基于ascll码的协议,HTTP协议使用统一资源标识符,对其范围内的所有资源进行统一的定义,然后采用一种简单请求/响应模式,来请求一项资源,若资源存在则响应该资源。但是该协议的安全性比较差,目前已经采取多种手段进行保护如ssl或者cookie等技术。
2.安全威胁分析
通过分析总结,从安全技术角度分析web安全有如下几种威胁。
1)针对认证机制的攻击:针对用来确认用户、服务或应用身份机制的攻击手段,包括暴力枚举、利用认证机制不完善弱点、攻击口令恢复验证等。
2)授权机制的攻击:针对用来确认用户、服务或应用是否具有执行请求动作必须权限机制的攻击手段,包括信任/会话预测、利用认证机制不完善弱点等。
3)客户端攻击:扰乱或者渗透攻击web站点客户端用户的攻击手段,包括内容欺骗、跨站脚本攻击等。
4)命令执行攻击:在web站点上执行远程命令的攻击手段,包括缓冲区溢出、格式化字符串、LDAP注入、操作系统命令注入、SQL注入、SSI注入等。
5)信息暴露:获取web站点具体系统信息的攻击手段,包括目录列举、信息泄露、路径遍历、资源位置可预测等。
6)逻辑攻击:扰乱或渗透攻击web应用逻辑流程的攻击手段,包括功能滥用、拒绝服务攻击、对抗自动程序不完善、处理验证过程不完善等。
3.web应用安全防范措施
1)尽量使用https来保障web站点传输时的保密性、完整性和身份真实性。
2)通过加密的连接通道来管理web站点,避免使用未经加密的telnet、ftp、http等来进行web站点的管理,而应使用SSH、SFTP等安全协议。
3)设置静态绑定的MAC-ip映射,在服务网段内禁止ARP欺骗,在网关处部署防火墙或者入侵检测系统等。
4)一定要开启日志功能,做好日志记录和安全审计工作。
4.SQL注入攻击方法
1)SQL注入
代码注入是针对web应用程序的主流攻击方法之一,代码注入攻击通过利用web应用程序的输入验证不完整性漏洞,使得web应用程序执行由攻击者所注入的恶意指令和代码,造成敏感信息泄露、权限提升或对系统的未授权访问等危害后果。主要是由于用户输入没有被正确的过滤以消除SQL语言中的字符串转义字符,如引号、双引号、反引号等,或者是没有进行严格的类型判断。Sql注入的原理是向web应用程序提供的用户输入接口输入一段精心构造的SQL查询命令,攻击和利用不完善的输入验证机制,使得注入代码得以执行完成非预期的攻击操作行为。
2)发现注入点’
sql注入点存在于动态网页中,只要参数能够生成sql语句并访问数据库,就可能存在注入,常用的注入为输入‘1‘=’1‘,
3)判断数据库类型
利用数据库服务器的系统变量进行判断
利用数据库服务器的系统表进行判断
4)后台数据库中管理员用户口令字猜解
管理员帐户具有管理和维护web应用程序的特殊权限和功能,如上传/下载文件、目录浏览、修改配置等,而这些管理员账号一般也是存在数据库中的,通过sql注入拿到后台管理员账号,就能通过管理员的权限对整个网站进行控制。管理员的账号破解包括表名猜测、字段名猜测以及用户名和密码的猜测。
5)上传后门,得到默认账户权限
将后门上传至www目录下面的script目录下,攻击者就能通过它进行访问,进而得到默认账户的权限,从而执行上传/下载等功能。
6)本地权限提升
5.防范措施
防范措施主要有如下几点:
1)使用类型安全的参数编码机制
2)凡是来自外部的用户输入,均需进行完备检查
3)将动态SQL语句替换为存储过程、预编译SQL和ADO命令对象
4)加强SQL数据库服务器的配置与连接