python脚本实现查找webshell的方法


Posted in Python onJuly 31, 2014

本文讲述了一个python查找 webshell脚本的代码,除了查找webshell功能之外还具有白名单功能,以及发现恶意代码发送邮件报警等功能,感兴趣的朋友可以自己测试一下看看效果。

具体的功能代码如下:

#!/usr/bin/env python
#-*- coding: utf-8 -*-

import os
import sys
import re
import smtplib

#设定邮件
fromaddr = "smtp.qq.com"
toaddrs = ["voilet@qq.com"]
username = "voilet"
password = "xxxxxx"


#设置白名单
pass_file = ["api_ucenter.php"]

#定义发送邮件函数
def sendmail(toaddrs,sub,content):
  '发送邮件模块'
  # Add the From: and To: headers at the start!
  msg = ("From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
      % (fromaddr, ", ".join(toaddrs), sub))
  msg += content
  server = smtplib.SMTP('mail.funshion.com', 25,)
  server.login(username, password)
  server.sendmail(fromaddr, toaddrs, msg)
  server.quit()

#设置搜索特征码
rulelist = [
  '(\$_(GET|POST|REQUEST)\[.{0,15}\]\(\$_(GET|POST|REQUEST)\[.{0,15}\]\))',
  '(base64_decode\([\'"][\w\+/=]{200,}[\'"]\))',
  'eval\(base64_decode\(',
  '(eval\(\$_(POST|GET|REQUEST)\[.{0,15}\]\))',
  '(assert\(\$_(POST|GET|REQUEST)\[.{0,15}\]\))',
  '(\$[\w_]{0,15}\(\$_(POST|GET|REQUEST)\[.{0,15}\]\))',
  '(wscript\.shell)',
  '(gethostbyname\()',
  '(cmd\.exe)',
  '(shell\.application)',
  '(documents\s+and\s+settings)',
  '(system32)',
  '(serv-u)',
  '(提权)',
  '(phpspy)',
  '(后门)',
  '(webshell)',
  '(Program\s+Files)',
  'www.phpdp.com',
  'phpdp',
  'PHP神盾',
  'decryption',
  'Ca3tie1',
  'GIF89a',
  'IKFBILUvM0VCJD\/APDolOjtW0tgeKAwA',
  '\'e\'\.\'v\'\.\'a\'\.\'l\'',
]

def Scan(path):
  for root,dirs,files in os.walk(path):
    for filespath in files:
      isover = False
      if '.' in filespath:
        ext = filespath[(filespath.rindex('.')+1):]
        if ext=='php' and filespath not in pass_file:
          file= open(os.path.join(root,filespath))
          filestr = file.read()
          file.close()
          for rule in rulelist:
            result = re.compile(rule).findall(filestr)
            if result:
              print '文件:'+os.path.join(root,filespath)
              print '恶意代码:'+str(result[0])
              print '\n\n'
              sendmail(toaddrs,"增值发现恶意代码",'文件:'+os.path.join(root,filespath)+"\n" + '恶意代码:'+str(result[0]))
              break

try:
  if os.path.lexists("/home/web_root/"):
    print('\n\n开始扫描:'+ "/home/web_root/")
    print('        可疑文件         ')
    print('########################################')
    Scan("/home/web_root/")
    print('提示:扫描完成--~')
  else:
    print '提示:指定的扫描目录不存在--- '
except IndexError:
  print "请指定扫描文件目录"
Python 相关文章推荐
python解析json实例方法
Nov 19 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
用pandas中的DataFrame时选取行或列的方法
Jul 11 Python
查看python安装路径及pip安装的包列表及路径
Apr 03 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
Aug 30 Python
为什么说python适合写爬虫
Jun 11 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
Python入门基础之数字字符串与列表
Feb 01 Python
python设置 matplotlib 正确显示中文的四种方式
May 10 Python
用python删除java文件头上版权信息的方法
Jul 31 #Python
Python datetime时间格式化去掉前导0
Jul 31 #Python
python处理文本文件并生成指定格式的文件
Jul 31 #Python
Python中关键字is与==的区别简述
Jul 31 #Python
python处理文本文件实现生成指定格式文件的方法
Jul 31 #Python
Python中zip()函数用法实例教程
Jul 31 #Python
Python中apply函数的用法实例教程
Jul 31 #Python
You might like
如何使用动态共享对象的模式来安装PHP
2006/10/09 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
Vue动态控制input的disabled属性的方法
2018/06/26 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
[47:06]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第一局
2016/03/05 DOTA
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
Python读写文件方法总结
2015/06/09 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
python多线程实现TCP服务端
2019/09/03 Python
使用Tkinter制作信息提示框
2020/02/18 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
服务员岗位职责
2014/01/29 职场文书
元旦晚会感言
2014/03/12 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
英文推荐信格式范文
2014/05/09 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
2014年保险业务员工作总结
2014/12/23 职场文书
公司宣传语大全
2015/07/13 职场文书
校园开放日新闻稿
2015/07/17 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python