2016-02-12 102 views
0
第一線

我最近的服務器被黑客攻擊和PHP代碼注入,並在每個PHP文件的第一行有類似使用SED刪除之間的一切,包括代碼

<?php $jybcqmhk = 'x24- x24*<!~! x24/%t2w/ //truncated code ?><?php 

代碼本身在每個文件上稍有不同,但通常在第一個之後?>我的實際代碼開始。

有沒有辦法使用類似SED的東西,我可以刪除第一行之間的所有內容,然後離開其餘的。

我已經嘗試了幾件事情,但最終有一個額外的PHP開放標籤或意外刪除php結束標記後的行代碼。

例如,這工作的地方代碼開始與PHP開放標籤,但打破了別的。

find ./ -iname '*.php' -exec sed -i '1 s/^.*$/<?php/g' {} \; 
+6

你是否修補了他們通過的原始洞呢?因爲在不修復漏洞的情況下刪除這些行是沒有意義的。 – Gordon

+5

你會更好地重建整個網站,並試圖弄清楚他們是如何得到的 – RamRaider

+0

我知道安全漏洞在哪裏,但我想先清理文件,然後再將網站移動到新的主機。 – ToxicChili

回答

2

也許這可以幫助:

find ./ -iname '*.php' -exec sed -i '1 s/<?php/\n&/2;s/<?php.*\n//' {} \; 

sed命令運行2個替換:在新線的第一個隔離第一<?php ?>命令,第二個刪除。

+1

如果使用三元運算符,則不起作用(例如):'sed'1 s/ //'<<<'<?php $ a = 1? 2:3; ?>''< - 不起作用 – hek2mgl

+1

感謝您的評論@ hek2mgl,我更新了我的答案 – SLePort

+0

謝謝我會試試這個:-) – ToxicChili

相關問題