成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

系統 Linux
本文主要介紹針對PHP網站HTTP響應拆分,站在攻擊者的角度,為你演示HTTP響應拆分。

HTTP請求的格式

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

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

3)空白行

4)信息正文

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

下面例子發送HTTP請求給服務器www.yhsafe.com

GET /index.php HTTP/1.1↙ //請求信息

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

↙ //空格行
↙符號表示回車鍵,在空白行之后還要在按一個空格才會發送HTTP請求,HTTP請求的表頭中只有Host表頭是必要的餓,其余的HTTP表頭則是根據HTTP請求的內容而定。
 
HTTP請求的方法
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/1.1 200 OK
200是標識狀態的是數字,OK則是描述狀態的單詞,這個狀態碼標識請求成功。

HTTP請求和響應的例子

打開cmd輸入telnet,輸入open www.00aq.com 80

打開連接后輸入

GET /index.php HTTP/1.1↙

Host:www.00aq.com↙

返回HTTP響應的表頭

返回的首頁內容

使用PHP來發送HTTP請求

header函數可以用來發送HTTP請求和響應的表頭

函數原型

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

string是HTTP表頭的字符串

如果replace為TRUE,表示要用目前的表頭替換之前相似的表頭;如果replace為FALSE,表示要使用多個相似的表頭,默認值為TRUE

http_response_code用來強制HTTP響應碼使用http_response_code的值

實例:

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

HTTP響應拆分攻擊

HTTP響應拆分是由于攻擊者經過精心設計利用電子郵件或者鏈接,讓目標用戶利用一個請求產生兩個響應,前一個響應是服務器的響應,而后一個則是攻擊者設計的響應。此攻擊之所以會發生,是因為WEB程序將使用者的數據置于HTTP響應表頭中,這些使用者的數據是有攻擊者精心設計的。

可能遭受HTTP請求響應拆分的函數包括以下幾個:

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

HTTP響應拆分通常發生在:

Location表頭:將使用者的數據寫入重定向的URL地址內

Set-Cookie表頭:將使用者的數據寫入cookies內

實例:

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

請求

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

訪問下面的鏈接,會直接出現一個登陸窗口

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帳號%20密碼%20

轉換成可讀字符串為:

Content-Type: text/html

HTTP/1.1 200 OK

Content-Type: text/html

Content-Length: 158

 

帳號
密碼

一個HTTP請求產生了兩個響應

防范的方法:

1)替換CRLF換行字符

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

2)使用最新版本的PHP

PHP最新版中,已經不允許在HTTP表頭內出現換行字符

隱藏HTTP響應表頭

apache中httpd.conf,選項ServerTokens = Prod, ServerSignature = Off

php中php.ini,選項expose_php = Off

責任編輯:xikder 來源: DoDo's Blog
相關推薦

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

2009-09-23 17:36:26

Hibernate優點

2010-07-14 16:21:31

Telnet服務配置

2010-07-13 14:44:11

SNMP服務設置

2010-01-04 09:39:39

Silverlight

2010-04-20 11:51:31

負載均衡

2010-09-25 13:07:50

DHCP協議結構

2011-03-30 10:07:02

Zabbix安裝

2010-07-28 22:20:10

RIP路由配置

2010-07-13 13:59:04

ICMP協議

2021-04-23 21:03:10

MySQL數據語法

2010-01-28 10:03:19

Android Lis
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一二三 | 天天艹天天干天天 | 99久久婷婷国产亚洲终合精品 | 日韩在线免费播放 | 久草电影网 | 成人在线视频免费看 | 国产精品69毛片高清亚洲 | 久久激情视频 | 亚洲欧洲激情 | 玖玖国产精品视频 | 一区二区三区四区毛片 | av色站| 久久精品国产亚洲 | 99热视 | 一区二区三区四区在线视频 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 国产精品夜间视频香蕉 | 国产精品一区二区三区在线 | 日韩欧美精品一区 | 狠狠躁18三区二区一区 | 中文字幕成人在线 | 欧州一区二区三区 | 最新av中文字幕 | av毛片免费 | 久视频在线观看 | 国产精品久久久久久久久久久新郎 | 欧美亚洲国语精品一区二区 | 在线观看免费av片 | 日韩羞羞 | 国产欧美精品一区二区色综合 | 国产不卡在线观看 | 天天拍夜夜爽 | www.亚洲| 精品国产一区二区三区性色av | 久久美女视频 | 国产精品99久久久久久宅男 | 宅男伊人| 久久国产精品一区 | 欧美久久一级特黄毛片 | 一级黄色片网站 | 国产精品黄色 |