1. 使用法: find.py ディレクトリ名
2. 主に Python 正規表現を使用して一致させます。キーワードに独自の定義された正規表現を追加できます。形式:
["eval($_POST"," PHP が見つかりました)。 one-sentence Trojan! "] #先頭は正規表現で、以下はログに表示される正規表現の説明です。
3. ファイルのサフィックスとキーワードの正規表現を次のように変更します。他の言語の WebShell になる ツールを確認してください ^_^.
4. 開発環境は Windows です。現時点では単なるフレームワークであり、後で徐々に改善されます。
findtype=['.php', '.inc'] #チェックするファイルの拡張子タイプ
#チェックするキーワードの正規表現とログ内の記述は 2 次元配列.
keywords=[ ["eval($_POST","PHP に 1 文のトロイの木馬が見つかった!"], ["(system|shell_exec|exec|popen)" ,"PHP コマンド実行機能を発見!" ] ] writelog = open('log.txt', 'w+')
def checkfile(filename):
fp =open(filename)
content = fp.read()
キーワード内のキーワード:
if re.search(keyword[0],content,re.I):
log="% s:%s" % (ファイル名,キーワード[1])
#print log
print >>writelog,log
fp.close()
def checkdir (ディレクトリ名):
try:
ls=os.listdir(dirname)
例外:
print 'アクセス拒否'
それ以外:
for l in ls:
temp =os.path.join(dirname, l)
if(os.path.isdir(temp)):
checkdir(temp)
else:
ext = temp[temp.rindex(' .'):]
if ext in findtype:
checkfile(temp)
if __name__=="__main__":
print "Python の PHP Webshell チェック!" "
print "By:Neeao"
print "http://Neeao.com"
if len(sys.argv) < 2:
print "%s C:\" % sys .argv[0]
else:
print "チェック開始!"
dirs=sys.argv[1:]
#print dirs[0]
if os.path.exists( dirs[0]):
checkdir(dirs[0])
else:
print "Dir:'%s' が存在しません!" % dirs[0]
print "チェックフィンシュ!"
writelog.close()