使用 360 檢測了站點漏洞之後,發了一篇解決漏洞的文章,在這。但是很多童鞋都有一些問題,很多童鞋都是卡在了變量名稱的這個步驟上,不知道怎樣查找和添加代碼,的確是的,因為每一個程序的變量名稱都是不可能相同的,又怎樣能夠保證代碼的通用性呢,今天我們就來手把手的教會大家,怎樣通過正則表達式,查找並且添加代碼吧。
\$.+= \$_GET\['.+'\];
\$.+=\$_GET\['.+'\];
上面是本次要使用的兩個正則表達式,注意:兩行代碼都是獨立的,不能一口氣放在一起用,每次使用一行正則表達式就好。
這裡要說一下,如果童鞋使用知更鳥編寫的插件 comments-link-redirect 的插件的話,就一定要看這篇文章了,因為這個插件就有CRLF注入攻擊漏洞(HTTP響應拆分漏洞),我已經反應給了知更鳥,他說會有更新。我們就從這個插件入手,看看怎樣解決站點漏洞吧。
首先用 Dreamweaver 一類的支持正則表達式的代碼編輯程序打開所有可能存在漏洞的 PHP 文件。
打開搜索對話框(鍵盤按下 Ctrl+F),之後把“使用正則表達式”選項勾選。
依次使用上面提供的兩個正則表達進行搜索,注意,我指的是依次,不是兩行一起用。如果找到匹配的值的話,代碼浏覽窗口部分就會高亮出來匹配的代碼。
看到正則表達式中搜索到了下面這段代碼。
$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