偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

PHP漏洞全解(八)-HTTP響應(yīng)拆分

系統(tǒng) Linux
本文主要介紹針對(duì)PHP網(wǎng)站HTTP響應(yīng)拆分,站在攻擊者的角度,為你演示HTTP響應(yīng)拆分。

HTTP請(qǐng)求的格式

1)請(qǐng)求信息:例如“Get /index.php HTTP/1.1”,請(qǐng)求index.php文件

2)表頭:例如“Host: localhost”,表示服務(wù)器地址

3)空白行

4)信息正文

“請(qǐng)求信息”和“表頭”都必須使用換行字符(CRLF)來(lái)結(jié)尾,空白行只能包含換行符,不可以有其他空格符。

下面例子發(fā)送HTTP請(qǐng)求給服務(wù)器www.yhsafe.com

GET /index.php HTTP/1.1↙ //請(qǐng)求信息

Host:www.yhsafe.com↙ //表頭

↙ //空格行
↙符號(hào)表示回車鍵,在空白行之后還要在按一個(gè)空格才會(huì)發(fā)送HTTP請(qǐng)求,HTTP請(qǐng)求的表頭中只有Host表頭是必要的餓,其余的HTTP表頭則是根據(jù)HTTP請(qǐng)求的內(nèi)容而定。
 
HTTP請(qǐng)求的方法
1)GET:請(qǐng)求響應(yīng)
2)HEAD:與GET相同的響應(yīng),只要求響應(yīng)表頭
3)POST:發(fā)送數(shù)據(jù)給服務(wù)器處理,數(shù)據(jù)包含在HTTP信息正文中
4)PUT:上傳文件
5)DELETE:刪除文件
6)TRACE:追蹤收到的請(qǐng)求
7)OPTIONS:返回服務(wù)器所支持的HTTP請(qǐng)求的方法
8)CONNECT:將HTTP請(qǐng)求的連接轉(zhuǎn)換成透明的TCP/IP通道
 
HTTP響應(yīng)的格式
服務(wù)器在處理完客戶端所提出的HTTP請(qǐng)求后,會(huì)發(fā)送下列響應(yīng)。
1)第一行是狀態(tài)碼
2)第二行開(kāi)始是其他信息
狀態(tài)碼包含一個(gè)標(biāo)識(shí)狀態(tài)的數(shù)字和一個(gè)描述狀態(tài)的單詞。例如:
HTTP/1.1 200 OK
200是標(biāo)識(shí)狀態(tài)的是數(shù)字,OK則是描述狀態(tài)的單詞,這個(gè)狀態(tài)碼標(biāo)識(shí)請(qǐng)求成功。

HTTP請(qǐng)求和響應(yīng)的例子

打開(kāi)cmd輸入telnet,輸入open www.00aq.com 80

打開(kāi)連接后輸入

GET /index.php HTTP/1.1↙

Host:www.00aq.com↙

返回HTTP響應(yīng)的表頭

返回的首頁(yè)內(nèi)容

使用PHP來(lái)發(fā)送HTTP請(qǐng)求

header函數(shù)可以用來(lái)發(fā)送HTTP請(qǐng)求和響應(yīng)的表頭

函數(shù)原型

void header(string string [, bool replace [, int http_response_code]])

string是HTTP表頭的字符串

如果replace為T(mén)RUE,表示要用目前的表頭替換之前相似的表頭;如果replace為FALSE,表示要使用多個(gè)相似的表頭,默認(rèn)值為T(mén)RUE

http_response_code用來(lái)強(qiáng)制HTTP響應(yīng)碼使用http_response_code的值

實(shí)例:

  1. // 打開(kāi)Internet socket連接 
  2. $fp = fsockopen(www.00aq.com, 80); 
  3. // 寫(xiě)入HTTP請(qǐng)求表頭 
  4. fputs($fp"GET / HTTP/1.1\r\n"); 
  5. fputs($fp"Host: www.00aq.com\r\n\r\n"); 
  6. // HTTP響應(yīng)的字符串 
  7. $http_response = ""
  8. while (!feof($fp)) 
  9. // 讀取256位的HTTP響應(yīng)字符串 
  10. $http_response .= fgets($fp, ); 
  11. // 關(guān)閉Internet socket連接 
  12. fclose($fp); 
  13. // 顯示HTTP響應(yīng)信息 
  14. echo nl2br(htmlentities($http_response)); 
  15. ?> 

HTTP響應(yīng)拆分攻擊

HTTP響應(yīng)拆分是由于攻擊者經(jīng)過(guò)精心設(shè)計(jì)利用電子郵件或者鏈接,讓目標(biāo)用戶利用一個(gè)請(qǐng)求產(chǎn)生兩個(gè)響應(yīng),前一個(gè)響應(yīng)是服務(wù)器的響應(yīng),而后一個(gè)則是攻擊者設(shè)計(jì)的響應(yīng)。此攻擊之所以會(huì)發(fā)生,是因?yàn)閃EB程序?qū)⑹褂谜叩臄?shù)據(jù)置于HTTP響應(yīng)表頭中,這些使用者的數(shù)據(jù)是有攻擊者精心設(shè)計(jì)的。

可能遭受HTTP請(qǐng)求響應(yīng)拆分的函數(shù)包括以下幾個(gè):

header(); setcookie(); session_id(); setrawcookie();

HTTP響應(yīng)拆分通常發(fā)生在:

Location表頭:將使用者的數(shù)據(jù)寫(xiě)入重定向的URL地址內(nèi)

Set-Cookie表頭:將使用者的數(shù)據(jù)寫(xiě)入cookies內(nèi)

實(shí)例:

  1.     header("Location: " . $_GET['page']); 
  2. ?> 

請(qǐng)求

GET /location.php?page=http://www.00aq.com HTTP/1.1↙

Host: localhost↙

返回

HTTP/1.1 302 Found

Date: Wed, 13 Jan 2010 03:44:24 GMT

Server: Apache/2.2.8 (Win32) PHP/5.2.6

X-Powered-By: PHP/5.2.6

Location: http://www.00aq.com

Content-Length: 0

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Content-Type: text/html

訪問(wèn)下面的鏈接,會(huì)直接出現(xiàn)一個(gè)登陸窗口

http://localhost/location.php?page=%0d%0aContent-Type:%20text/html%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%20158%0d%0a%0d%0a帳號(hào)%20密碼%20

轉(zhuǎn)換成可讀字符串為:

Content-Type: text/html

HTTP/1.1 200 OK

Content-Type: text/html

Content-Length: 158

 

帳號(hào)
密碼

一個(gè)HTTP請(qǐng)求產(chǎn)生了兩個(gè)響應(yīng)

防范的方法:

1)替換CRLF換行字符

  1.     header("Location: " . strtr($_GET['page'], array("\r"=>"",    "\n"=>""))); 
  2. ?> 

2)使用最新版本的PHP

PHP最新版中,已經(jīng)不允許在HTTP表頭內(nèi)出現(xiàn)換行字符

隱藏HTTP響應(yīng)表頭

apache中httpd.conf,選項(xiàng)ServerTokens = Prod, ServerSignature = Off

php中php.ini,選項(xiàng)expose_php = Off

責(zé)任編輯:xikder 來(lái)源: DoDo's Blog
相關(guān)推薦

2012-04-12 16:05:50

2012-04-12 15:42:35

2012-04-12 13:36:59

2012-04-12 15:06:44

2012-04-12 15:27:44

2011-10-14 09:23:14

2012-04-12 11:28:04

2012-04-12 14:45:13

2013-07-03 11:28:47

2010-07-13 13:59:04

ICMP協(xié)議

2010-07-28 22:20:10

RIP路由配置

2011-03-30 10:07:02

Zabbix安裝

2010-01-04 09:39:39

Silverlight

2010-09-25 13:07:50

DHCP協(xié)議結(jié)構(gòu)

2010-04-20 11:51:31

負(fù)載均衡

2010-07-14 16:21:31

Telnet服務(wù)配置

2009-09-23 17:36:26

Hibernate優(yōu)點(diǎn)

2010-07-13 14:44:11

SNMP服務(wù)設(shè)置

2021-04-23 21:03:10

MySQL數(shù)據(jù)語(yǔ)法

2011-03-23 14:43:07

Nagios監(jiān)控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)