淺談其原因及解決方法「webshell為什麼無法通過掛馬檢測」

「WEB安全」單行命令查殺Webshell(php為例)

作為一個個人站長,一個特頭疼的問題是不知不覺中網站會被人黑了,掛馬了。在以前的文章中筆者介紹過用腳本分析訪問日誌,對惡意攻擊進行封閉的處理方法。

那麼對於已經被人掛馬,被人插入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-tw/n/289632.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-24 03:19
下一篇 2024-12-24 03:19

相關推薦

發表回復

登錄後才能評論