淺談其原因及解決方法「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-hant/n/289632.html

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

相關推薦

發表回復

登錄後才能評論