L003001019HTTP攻击与防护HTTP拆分响应攻击.docx
《L003001019HTTP攻击与防护HTTP拆分响应攻击.docx》由会员分享,可在线阅读,更多相关《L003001019HTTP攻击与防护HTTP拆分响应攻击.docx(15页珍藏版)》请在冰豆网上搜索。
L003001019HTTP攻击与防护HTTP拆分响应攻击
课程编写
类别
内容
实验课题名称
HTTP攻击与防护-HTTP拆分响应攻击
实验目的与要求
1了解HTTP的概念
2了解HTTP响应拆分攻击的方式
3掌握防范攻击的方法
实验环境
VPC1(虚拟PC)
Windowsserver2003
VPC1连接要求
PC网络接口,本地连接与实验网络直连
软件描述
1、学生机要求安装java环境
2、vpc安装windwos系统
实验环境描述
1、学生机与实验室网络直连;
2、VPC1与实验室网络直连;
3、学生机与VPC1物理链路连通;
预备知识
HTTP是HyperTextTransferProtocol的简写,用来定义因特网上的数据传输协议,最初的用途是要接收与解释HTML网页。
HTTP是由WorldWideWebConsortium与theIntemetEngineeringTaskForce所制定,现今使用的版本是HTTP/1.1,规范是RFC2616。
HTTP是客户端与服务器之间的请求/响应的协议。
HTTP的客户端经由特定的Port(预设是Port80)来建立TCP的连接,HTTP服务器则是监听这个Port来等待客户端发送请求的信息。
HTTP请求的方法
HTTP定义了8种方法来发送请求。
(1)GET:
请求响应,这是最常使用的方法。
(2)HEAD:
与GET相同的响应,是只要求响应的表头信息。
(3)POST:
发送数据给服务器处理,数据包含在HTTP信息正文q
(4)PUT:
上传文件。
(5)DELETE:
删除文件。
(6)TRACE:
追踪所收到的请求。
(7)OPTIONS:
返回服务器所支持的HTTP请求的方法。
(8)CONNECT:
将HTTP请求的连接转换成透明的TCP/IP通道。
HTTP响应的格式
服务器在处理完客户端所提出的HTTP请求后,会发送下列响应。
(1)第一行是状态码。
(2)第二行开始是其他信息。
HTTP响应的第一行是状态码,包含一个标识状态的数字和一个描述状态的单词。
例如:
HTTP/1.12000K
200是标识状态的数字,OK则是描述状态的单词,这个状态码表示请求成功。
所有HTTP状态代码及其定义如下。
代码指示
2xx成功
200正常;请求已完成。
201正常;紧接POST命令。
202正常;已接受用于处理,但处理尚未完成。
203正常;部分信息—返回的信息只是一部分。
204正常;无响应—已接收请求,但不存在要回送的信息。
3xx重定向
301已移动—请求的数据具有新的位置且更改是永久的。
302已找到—请求的数据临时具有不同URI。
303请参阅其它—可在另一URI下找到对请求的响应,且应使用GET方法检索此响应。
304未修改—未按预期修改文档。
305使用代理—必须通过位置字段中提供的代理来访问请求的资源。
306未使用—不再使用;保留此代码以便将来使用。
4xx客户机中出现的错误
400错误请求—请求中有语法问题,或不能满足请求。
401未授权—未授权客户机访问数据。
402需要付款—表示计费系统已有效。
403禁止—即使有授权也不需要访问。
404找不到—服务器找不到给定的资源;文档不存在。
407代理认证请求—客户机首先必须使用代理认证自身。
415介质类型不受支持—服务器拒绝服务请求,因为不支持请求实体的格式。
5xx服务器中出现的错误
500内部错误—因为意外情况,服务器不能完成请求。
501未执行—服务器不支持请求的工具。
502错误网关—服务器接收到来自上游服务器的无效响应。
503无法获得服务—由于临时过载或维护,服务器无法处理请求。
-----------------------------------------------------------------------------------------------------------------------
HTTP400-请求无效
HTTP401.1-未授权:
登录失败
HTTP401.2-未授权:
服务器配置问题导致登录失败
HTTP401.3-ACL禁止访问资源
HTTP401.4-未授权:
授权被筛选器拒绝
HTTP401.5-未授权:
ISAPI或CGI授权失败
HTTP403-禁止访问
HTTP403-对Internet服务管理器(HTML)的访问仅限于Localhost
HTTP403.1禁止访问:
禁止可执行访问
HTTP403.2-禁止访问:
禁止读访问
HTTP403.3-禁止访问:
禁止写访问
HTTP403.4-禁止访问:
要求SSL
HTTP403.5-禁止访问:
要求SSL128
HTTP403.6-禁止访问:
IP地址被拒绝
HTTP403.7-禁止访问:
要求客户证书
HTTP403.8-禁止访问:
禁止站点访问
HTTP403.9-禁止访问:
连接的用户过多
HTTP403.10-禁止访问:
配置无效
HTTP403.11-禁止访问:
密码更改
HTTP403.12-禁止访问:
映射器拒绝访问
HTTP403.13-禁止访问:
客户证书已被吊销
HTTP403.15-禁止访问:
客户访问许可过多
HTTP403.16-禁止访问:
客户证书不可信或者无效
HTTP403.17-禁止访问:
客户证书已经到期或者尚未生效
HTTP404.1-无法找到Web站点
HTTP404-无法找到文件
HTTP405-资源被禁止
HTTP406-无法接受
HTTP407-要求代理身份验证
HTTP410-永远不可用
HTTP412-先决条件失败
HTTP414-请求-URI太长
HTTP500-内部服务器错误
HTTP500.100-内部服务器错误-ASP错误
HTTP500-11服务器关闭
HTTP500-12应用程序重新启动
HTTP500-13-服务器太忙
HTTP500-14-应用程序无效
HTTP500-15-不允许请求global.asa
Error501-未实现
HTTP502-网关错误
实验内容
1了解HTTP的概念
2了解HTTP响应拆分攻击的方式
3掌握防范攻击的方法
实验步骤
1、学生单击实验拓扑按钮,进入实验场景,进入目标主机,(第一次启动目标主机,还需要安装java控件),如图所示:
2.打开虚拟机,输入用户名和密码,用户为Adminsitrator密码为123456
3.打开浏览器,输入http:
//localhost:
8080/example_code/如图:
4、找到“(9)HTTP响应拆分攻击(HTTPResponseSplitting)”项,并点击打开。
5、点击演示1
打开“演示1”,标签前面的部分是HTTP响应的表头,从标签开
始则是链接页面的内容的内容,
HTTP响应拆分(HTTPResponseSplitting)攻击是由于黑客发送一个经过设计的HTTP请求给服务器,但是目标用户收到的却是两个HTTP响应。
第1个HTTP响应并不重要,黑客所在意的是目标用户收到的第2个HTTP响应。
第两个HTTP响应是由黑客编写的,并不是来自服务器的真正响应。
因此黑客可以经由目标用户来发送两个HTTP请求A和B给服务器,这可以利用电子邮件或图片中的链接来实现。
第1个HTTP请求A会产生两个HTTP响应Rl与R2,Rl是真正的服务器响应,R2则是由黑客所设计的响应。
Rl会响应给请求A,而R2则是响应给请求B。
本来一个HTTP请求应该只会产生一个HTTP响应,但是HTTP响应拆分则是一个请求产生两个响应,因此称为HTTP响应拆分。
详细的过程如图所示。
HTTP响应拆分攻击之所烈会发生,是因为Web应用程序将使用者的数据置入HTTP响应表头内,这些使用者的数据是由黑客所设计的。
可能遭受HTTP响应拆分攻击的函数包括以下几个。
header();
setcookie();
session_id();
setrawcookie();
HTTP响应拆分攻击通常发生在如下两个地方。
●Location响应表头:
将使用者的数据写入重定向的URL地址内。
●Set-Cookie响应表头:
将使用者的数据写入cookie内。
Location响应表头用来跳转地址。
6、点击攻击1
Location响应表头跳转到index.php页面。
怎样防护,
1将session.use_only_cookies设置为1,这表示不使用cookie以外的方式来存
放sessionid,这可以避免session固定攻击。
2使用最新版的PHP
在最新版的PHP中,已经不允许在HTTP表头内出现换行字符。
3隐藏HTTP响应表头
如果不想要显示服务器信息的Server响应表头,在httpd.conf文件中找到ServerTokens的设置,将ServerSignature设置为Off,
7、实验完毕,关闭虚拟机和所有窗口。