HTTP Response Spliting 防范策略研究

目录
0x1:HTTP请求的格式
0x2:HTTP请求的方法
0x3:HTTP响应的格式
0x4:HTTP响应拆分攻击
0x5:防范的方法

HTTP请求的格式

客户端所提出的HTTP请求包含下列信息:
(1)请求信息
(2)表头
(3)一行空白行
(4)信息正文(可有可无)

例如:发送HTTP请求给服务器www.baidu.com:
GET
/index.html HTTP/1.1 //请求信息
Host: www.baidu.com
//表头
       
     //空隔行
      
    
//回车

HTTP请求的方法

HTTP定义了8种方法来发送请求
(1)GET:请求响应,这是最常使用的方法
(2)HEAD:与GET相同的响应,是只要求响应的表头信息
(3)POST:发送数据给服务器处理,数据包含在HTTP信息正文中
(4)PUT:上传文件
(5)DELETE:删除文件
(6)TRACE:追踪所收到的请求
(7)OPTIONS:返回服务器所支持的HTTP请求的方法
(8)CONNECT:将HTTP请求的连接转换成透明的TCP/IP通道

HTTP响应的格式

服务器在处理完客户端所提出的HTTP请求后,会发送下列响应
(1)第一行是状态码
(2)第二行开始是其他信息

HTTP响应拆分攻击

HTTP响应拆分攻击是由于黑客发送一个经过设计的HTTP请求给服务器,但是目标用户收到的却是两个HTTP响应。第一个HTTP响应并不重要,黑客所在意的是目标用户收到的第二个HTTP响应。第二个HTTP响应是由黑客编写的,并不是来自服务器的真正响应。

可能遭受HTTP响应拆分攻击的函数包括以下几个:
header();
setcookie();
session_id();
setrawcookie();

HTTP响应拆分攻击通常发生在如下两个地方:
(1)Location响应表头:将使用者的数据写入重定向的URL地址内
(2)Set-Cookie响应表头:将使用者的数据写入cookie内

注:Location响应表头用来跳转目前浏览的地址。

攻击实例说明:跳转地址
例如:jump.php
<?php
if($_GET["login"])
{
header("Location:http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"]);
}
?>

//这是在单击[登陆]按钮后,就重新执行jump.php文件
$_SERVER["HTTP_HOST"]变量的值等于:localhost
$_SERVER["PHP_SELF"]变量的值等于:/jump.php

attack.php:
<?php
header("Location:"."http://localhost/jump.php/%0d%0aLocation:%20http://baidu.com/?login=1");
?>
当黑客使用attack.php文件来执行HTTP响应拆分攻击时,$_SERVER["HTTP_SELF"]变量的值会等于:
/jump.php/
Location:
http://baidu.com/
所以$_SERVER["PHP_SELF"]被插入了HTTP响应拆分的程序代码,这个程序代码将地址跳转到[百度]首页。
当执行attack.php文件后,就会跳转到百度首页去

防范的方法

HTTP响应拆分攻击是因为目标用户在HTTP请求中被插入了换行字符,以及加上了Location或Set-Cookie等响应表头来设置地址或cookie值。
所以防范的方法就是将header函数内的参数去掉换行字符CR/LF或是"\r\n"。

例如:
<?php
if($_GET["login"])
{
header("Location:
http://".$SERVER["HTTP_HOST"].strtr($SERVER["HTTP_SELF"],array("\r"=>"","\n"=>"")));
}
?>

注:strtr函数介绍:
string
strtr(string str, array
replace_pairs)
//str是要转换的字符串,replace_pairs是要转换字符的数组

1.将session.use_only_cookies设置为1
例如:
<?php
//将session.use_only_cookies设置为1
int_set("session.use_only_cookies",
1);
//启动Session
session_start();
?>
//
将session.use_only_cookies设置为1,这表明不使用cookie以外的方法来存放session_id,这可以避免session固定攻击

2.使用最新版的PHP
//在最新版的PHP中,已经不允许在HTTP表头内出现换行字符。因此,将你的PHP更新到最新版本,就可以避免手动将换行字符"\r\n"转换为空字符串的问题,当然就可以避免HTTP响应拆分攻击。

3.隐藏HTTP响应表头
//如果不想要显示服务器信息的Server响应表头,也可以打开下列文件:
C:\AppServ\Apache2.2\conf\httpd.conf
进行修改
将ServerTokens设置为Prod

如果不想显示服务器信息的X-Powered-By表头,可以打开下列文件:
C:\Windows\php.ini
进行修改
将expose_php设置为Off

重启Apache即可完成

HTTP Response Spliting 防范策略研究,布布扣,bubuko.com

时间: 2024-11-11 20:47:04

HTTP Response Spliting 防范策略研究的相关文章

目录/文件攻击防范策略研究

目录0x1:目录穿越攻击0x2:远程文件引入攻击0x3:防范的方法目录穿越攻击目录穿越(Directory Traversal)攻击是黑客能够在Web应用程序所在的根目录以外的文件夹上,任意地存取被限制的文件夹.执行命令或查找数据.目录穿越攻击,也有人称为Path Traversal攻击.为了避免使用者存取到服务器上未经许可的文件,服务器提供两个安全机制:(1)根目录(2)文件存取权限这些安全措施是为了避免黑客执行可执行文件,如Windows系统上的cmd.exe文件,以及避免黑客存取重要的文件

CSRF防范策略研究

目录 0x1:检查网页的来源 0x2:检查内置的隐藏变量 0x3:用POST不用GET 检查网页的来源应该怎么做呢?首先我们应该检查$_SERVER["HTTP_REFERER"]的值与来源网页的网址是否一致,就可以判断是否遭受到CSRF攻击 例如: form.html <html> <head> <title>提交参数</title> </head> <body onload="document.form1.

文件上传漏洞原理以及防范

1. 什么是文件上传漏洞 程序员由于没有对上传的文件进行严格限定,导致黑客可以通过工具上传其他格式的程序文件(比如:webshell),这样黑客就会拿到一个可执行环境,在服务器上搞破坏. 一个常见的例子,很多网站存在上传图片的功能,如果不对上传图片的扩展名进行检测.过滤就会造成上传漏洞. 2. 如何防范上传漏洞 步骤:前端JS代码限定--->后台代码检测--->取消文件目录执行脚本的权限. 以如何防范图片上传漏洞做个过程分析: 新建一个解决方案: 2.1 第一步前端用JavaScript对上传

PHP Fuzzing行动——源码审计 黑客注入防范

PHP Fuzzing行动——源码审计 黑客注入防范 原文地址:forum.eviloctal.com/attachment.php?aid=13807 ---------- PHP Fuzzing行动——源码审计 作者:Shahin Ramezany 译者:riusksk(泉哥:http://riusksk.blogbus.com) 目录: Section 1: 20种PHP源码快速审计方式 Section 2: PHP源码审计自动化( PHP Fuzzer ) 风险级别: ■ Low ■ M

Spring3.x通过配置来防范csrf攻击

1. [代码]CsrfTokenManager 用于管理csrfToken相关 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 packagecom.uncle5.pubrub.web.common; importjava.util.UUID; importjavax.servlet.http.HttpServletRequest;

sip协议注册时response值的计算方法

sip注册时有四个步骤, 1.客户端向服务端发送不带Authorization字段的注册请求 2.服务端回401,在回复消息头中带WWW_Authorization 3.客户端向服务端发送带Authorization字段注册请求,Authorization字段中的response信息是 根据收到的WWW_Authorization中的信息和本地的一个密码信息计算出来的. 4.服务端会自己计算一个Response值,和客户端发来的对比,一样的会回客户端一个200OK,表示 注册成功.比对不一样回其

XSS研究2-来自内部的XSS攻击的防范

引入: 前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击.   实践:  http://www.cnblogs.com/crazylqy/p/4146740.html 文章中可以看出,主要的攻击手段无外乎是发送了一段恶意脚本到受害者机器上去运行,所以我们的思路就是,如何让这段脚本失效.   因为脚本的组成部分是<script>和</script>,而这其中最主要的是大于号和小于号字符,所以我们只要在请求中,把 大

php防范

针对 PHP 的网站主要存在下面几种攻击方式: 1.命令注入(Command Injection) 2.eval 注入(Eval Injection) 3.客户端脚本攻击(Script Insertion) 4.跨网站脚本攻击(Cross Site Scripting, XSS) 5.SQL 注入攻击(SQL injection) 6.跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF) 7.Session 会话劫持(Session Hijacking) 8

CC攻击原理及防范方法和如何防范CC攻击

一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止. 二.CC攻击的种类:  CC攻击的种类有三种,直接攻