
作為一個個人站長,一個特頭疼的問題是不知不覺中網站會被人黑了,掛馬了。在以前的文章中筆者介紹過用腳本分析訪問日誌,對惡意攻擊進行封閉的處理方法。
那麼對於已經被人掛馬,被人插入Webshell的網站,該如何處理,這裡筆者給你介紹一種相對簡單,操作性強的方法,那就是今天文章的內容。
根據Webshell中的一些特徵字段進行搜索,就可以搜出可能含有木馬的文件,特徵字段可自行根據需要增刪。
perl -lne ‘print “$ARGV $_” if /(phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decoolcode|spider_bc)/ ‘ `find -type f -name “*.php”`
本行腳本解釋:這行代碼結合了find和Perl單行來實現Webshell的查殺,首先通過` find -type f -name “*.php”` 列出本目錄及子目錄下所有php文件,注意`反斜杠(tab上面的建),find命令參數 -type f表示類型為文件,-name “*.php”`表示文件名以php結尾(當然可以是其他類型,可以是其他特徵)。
find具體用法可以用find -h看說明,或者搜索引擎搜索其用法。
接着搜索到的所有php文件都被傳遞個Perl單行,perl對每一個文件按行進行正則搜索,搜索phpspy,c99sh,milw0rm,eval (gunerpress,eval (base64_decoolcode,spider_bc等關鍵詞(注意正則匹配中”(“為關鍵字需要在其前面加反斜杠來轉義)。最後把匹配到的文件名和行內容輸出。
注意輸出的$ARGV表示文件列表中的每一個文件文件名,$_表示當前列表的當前項,此處表示匹配到的行內容。
以上的腳本輸出了每一個匹配的行,可以作為一個用來詳細核對每一個項目。實際中會需要只輸出有問題文件名,其實也簡單,對上述腳本稍做修改即可。
per -lne ‘{$files{$ARGV}++ if /(phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decoolcode|spider_bc)/}END{print for keys %files} ‘ `find -type f -name “*.php”`
以上腳本在腳本1的基礎上用了個哈希變量 %files把匹配的每一行的文件名作為鍵,如果有匹配其值就+1,最後再END模塊輸出%files的鍵,即有匹配的文件名。當然也可以先把所有文件名都輸出然後重定向做個uniq也可以的。
perl -lne ‘print “$ARGV” if /(phpspy|c99sh|milw0rm|eval(gunerpress|eval(base64_decoolcode|spider_bc)/ ‘ `find -type f -name “*.php”`|uniq
需要注意的是,以上查出來的文件,有可能是正常的php文件,需要你根據實際甄別處理(批量替換),不要誤殺了(處理前注意備份俄)。
用grep方法,見下面。
grep -r –include=*.php ‘[^a-z]eval($_POST’ . > /tmp/eval.txt
grep -r –include=*.php ‘file_put_contents(.*$_POST[.*]);’ . > /tmp/file_put_contents.txt
其他需要注意的事項:
快捷查詢Web文件修改時間,文件權限可以用:
查找最近一天被修改的PHP文件
find -type f -mtime -1 -name *.php
修改網站的權限
find -type f -name *.php -exec chmod 444 {} ;
find ./ -type d -exec chmod 555{} ;
最後做一個知識擴展:
1、linux下的批量查找和替換。
find . -type f -name “*.html”|xargs grep ‘yourstring’
2、查找並用perl One-liners替換
find -name ‘要查找的文件名’ | xargs perl -pi -e ‘s|被替換的字符串|替換後的字符串|g’
下面這個例子就是將當前目錄及所有子目錄下的所有*.shtml文件中的”<iframe src=
http://com-indexl.com/ask/admin.html width=0 height=0></iframe>“替換為”(空)“.
find . -type f -name “*.shtml”|xargs perl -pi -e ‘s|<iframe src=http://com-indexl.com/ask/admin.html width=0 height=0></iframe>| |g’
perl -pi -e
在Perl 命令中加上-e 選項,後跟一行代碼,那它就會像運行一個普通的Perl 腳本那樣運行該代碼.
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/289632.html
微信掃一掃
支付寶掃一掃