浏览 2576 次
锁定老帖子 主题:php网站webshell检查脚本
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-16
参考了一些别人写的脚本,自己用Python写的一个小脚本,简单实用。学习Python为主。
1、检查你的php文件是否是webshell程序,也可以检查危险的函数。 2、可以检查图片文件,但是可能会有误报。 #!/usr/bin/python #coding=utf-8 #程序描述:webshell检查工具 #版本:1.0.0 #作者:sapling #创建日期:2009-12-16 #修改原因: #修改日期: #修改者: #使用方法: # 输入参数: # 1、第一个参数为被检查文件夹 # 2、第一个参数后跟要检查的文件后缀名,检查多个后缀以空格分开(默认.php .inc)。 # example: # ./webshellChecker ./ # ./webshellChecker ./ .gif .jpg import os,sys import re,time from stat import ST_MTIME ISOTIMEFORMAT = '%Y-%m-%d %X' keywords = ( (r"eval\(\$\_POST","find php muma!!!"), (r"(system|shell_exec|exec|popen)","find php exec func!!!"), ) def checkfile(filename): try: fp = open(filename) except: print "'%s' file open deny"%filename else: contents = fp.read() mtime = time.strftime(ISOTIMEFORMAT,time.gmtime(os.stat(filename)[ST_MTIME])) for keyword in keywords: if re.search(keyword[0],contents,re.I): log = "%s | %s | %s"%(filename,mtime,keyword[1]) print log fp.close() def check(dirname,exts): try: ls = os.listdir(dirname) except: print "'%s' dir access deny"%dirname else: for item in ls: temp = os.path.join(dirname,item) if(os.path.isdir(temp)): check(temp,exts) else: ext = os.path.splitext(temp)[1].lower() if ext in exts: checkfile(temp) if __name__ == "__main__": print "php webshell checker for python!" print "by sapling" print "2009-12-16" if len(sys.argv)<2: print """输入参数: 1、被检查文件夹 2、要检查的文件后缀名,检查多个后缀以空格分开(默认.php .inc)。 example: ./webshellChecker ./ ./webshellChecker ./ .gif .jpg """ else: dir = sys.argv[1] exts = ['.php','.inc'] if len(sys.argv)>=3: exts += sys.argv[2:] print "Check dir is '%s' | ext is %s"%(dir,exts) print "Start check" if os.path.exists(dir): check(dir,exts) else: print "dir: '%s' not exists!"%dir 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |