PHP漏洞HTTP響應拆分分析與解決辦法

來源:互聯網
上載者:User


首先我們分析 360 提供的漏洞頁面地址"/?r=XXXXX"馬上就可以發現問題,? 號碼後面是 r=XXXX 這個 r= 就是問題的所在了,在 PHP 當中這個 GET 形式的請求(在連結中直接表現出來的請求)一般都要過濾一些文字防止被入侵,而這個就沒有做這個操作,那麼我們找到了入口,就開始查看代碼吧,在全站中的所有檔案中尋找 $_GET['r'],如果你知道你的網站是哪個檔案出現問題也可以直接去搜尋這個檔案,單引號中的 r 代表的是連結中 ?r= 中的 r,可以根據自己的要求修改。

 

馬上就發現了問題:


$redirect = $_GET['r'];

圖片中的代碼把 $_GET['r'] 直接給了 $redirect 變數,簡單的說現在 $redirect 就是 $_GET['r'] 了,一般情況下都是要這樣寫的,當然,變數的名稱可能會有變,既然找到了問題出處,那麼我們就只用過濾這個變數的內容就好啦。


PHP

 $redirect = trim(str_replace("r","",str_replace("rn","",strip_tags(str_replace("'","",str_replace("n", "", str_replace(" ","",str_replace("t","",trim($redirect))))),""))));

直接複製上面的所有代碼到 $redirect = $_GET['r'];

下面就好啦,現在再次檢查網站就不會出現這個問題了,希望大家看得懂,變數名稱可以根據自己的需要更換哦


HTTP響應拆分攻擊

HTTP響應拆分是由於攻擊者經過精心設計利用電子郵件或者連結,讓目標使用者利用一個請求產生兩個響應,前一個響應是伺服器的響應,而後一個則是攻擊者設計的響應。此攻擊之所以會發生,是因為WEB程式將使用者的資料置於HTTP響應表頭中,這些使用者的資料是有攻擊者精心設計的。

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

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

HTTP響應拆分通常發生在:

Location表頭:將使用者的資料寫入重新導向的URL地址內

Set-Cookie表頭:將使用者的資料寫入cookies內

執行個體:

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

請求

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

轉換成可讀字串為:

Content-Type: text/html

HTTP/1.1 200 OK

Content-Type: text/html

Content-Length: 158

 

<html><body><form method=post name=form1>帳號 <input type=text name=username /><br />密碼 <input name=password type=password /><br /><input type=submit name=login value=登入 /></form></body></html>

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.