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获取央视节目单的实现代码
Jul 25 Python
python机器学习之贝叶斯分类
Mar 26 Python
python range()函数取反序遍历sequence的方法
Jun 25 Python
pandas 将list切分后存入DataFrame中的实例
Jul 03 Python
Python BS4库的安装与使用详解
Aug 08 Python
解决pyttsx3无法封装的问题
Dec 24 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
Jun 05 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 Python
在TensorFlow中实现矩阵维度扩展
May 22 Python
Python Process创建进程的2种方法详解
Jan 25 Python
Pandas-DataFrame知识点汇总
Mar 16 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 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
PHP加密解密函数详解
2015/10/28 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
JavaScript 数组运用实现代码
2010/04/13 Javascript
JavaScript实现找出数组中最长的连续数字序列
2014/09/03 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
2016/04/26 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
详解Vue开发微信H5微信分享签名失败问题解决方案
2018/08/09 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
Python之re操作方法(详解)
2017/06/14 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
Madewell澳大利亚官方网站:美国休闲服饰品牌
2019/07/18 全球购物
酒店员工职业生涯规划
2014/02/25 职场文书
施工质量承诺书范文
2014/05/30 职场文书
加薪申请报告范本
2015/05/15 职场文书
金榜题名主持词
2015/07/02 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
详解Redis瘦身指南
2021/05/26 Redis
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
linux目录管理方法介绍
2022/06/01 Servers
利用Java连接Hadoop进行编程
2022/06/28 Java/Android