程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 正則表達式查找CRLF注入攻擊漏洞(HTTP響應拆分漏洞)

正則表達式查找CRLF注入攻擊漏洞(HTTP響應拆分漏洞)

編輯:關於PHP編程

使用 360 檢測了站點漏洞之後,發了一篇解決漏洞的文章,在這。但是很多童鞋都有一些問題,很多童鞋都是卡在了變量名稱的這個步驟上,不知道怎樣查找和添加代碼,的確是的,因為每一個程序的變量名稱都是不可能相同的,又怎樣能夠保證代碼的通用性呢,今天我們就來手把手的教會大家,怎樣通過正則表達式,查找並且添加代碼吧。

\$.+= \$_GET\['.+'\];
\$.+=\$_GET\['.+'\];

上面是本次要使用的兩個正則表達式,注意:兩行代碼都是獨立的,不能一口氣放在一起用,每次使用一行正則表達式就好。

這裡要說一下,如果童鞋使用知更鳥編寫的插件 comments-link-redirect 的插件的話,就一定要看這篇文章了,因為這個插件就有CRLF注入攻擊漏洞(HTTP響應拆分漏洞),我已經反應給了知更鳥,他說會有更新。我們就從這個插件入手,看看怎樣解決站點漏洞吧。

76114887520120925

首先用 Dreamweaver 一類的支持正則表達式的代碼編輯程序打開所有可能存在漏洞的 PHP 文件。

132840806920120925

打開搜索對話框(鍵盤按下 Ctrl+F),之後把“使用正則表達式”選項勾選。

74452253420120925

依次使用上面提供的兩個正則表達進行搜索,注意,我指的是依次,不是兩行一起用。如果找到匹配的值的話,代碼浏覽窗口部分就會高亮出來匹配的代碼。

120474889720120925

看到正則表達式中搜索到了下面這段代碼。

$redirect = $_GET['r'];

下面開始普及一下了,上面的代碼中的 $redirect 中的 redirect 就是變量名稱,變量名稱很可能叫做 abcd、heheh 都是有可能的了。那麼我們就在上面這行代碼的下一行緊接著插入下面的代碼。

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

上面這段代碼中有兩個變量名稱,就是以 $ 開頭的英文單詞,如果你需要根據自己的要求使用的話,就一定要更換其中的兩個變量名稱。將上面的代碼復制到有漏洞的代碼的下方就可以了,就像下面這樣。

$redirect = $_GET['r'];
$redirect = trim(str_replace("\r","",str_replace("\r\n","",strip_tags(str_replace("'","",str_replace("\n", "", str_replace(" ","",str_replace("\t","",trim($redirect))))),""))));

這樣一來,所有問題就都解決啦。

本文來源:http://www.yiduqiang.com/regex-find-crlf.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved