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 正则式 概述及常用字符
May 07 Python
python异步任务队列示例
Apr 01 Python
深入理解Python 代码优化详解
Oct 27 Python
Django imgareaselect手动剪切头像实现方法
May 26 Python
python清除字符串里非数字字符的方法
Jul 02 Python
python中lambda()的用法
Nov 16 Python
numpy返回array中元素的index方法
Jun 27 Python
ubuntu16.04制作vim和python3的开发环境
Sep 23 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
Jan 15 Python
PyQt5实现简易电子词典
Jun 25 Python
Python函数的默认参数设计示例详解
Dec 01 Python
Python实现遗传算法(二进制编码)求函数最优值方式
Feb 11 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
我的论坛源代码(五)
2006/10/09 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
JavaScript 中有关数组对象的方法(详解)
2016/08/15 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
VUE + UEditor 单图片跨域上传功能的实现方法
2018/02/08 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
python中logging库的使用总结
2017/10/18 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
python 3.6.4 安装配置方法图文教程
2018/09/18 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
python统计文章中单词出现次数实例
2020/02/27 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
cosme官方海外旗舰店:日本最大化妆品和美容产品的综合口碑网站
2017/01/18 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
员工自我鉴定
2013/10/09 职场文书
高三自我鉴定怎么写
2013/10/19 职场文书
化学教师教学反思
2014/01/17 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
2014年维稳工作总结
2014/11/18 职场文书
2016孝老爱亲模范事迹材料
2016/02/26 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
nginx静态资源的服务器配置方法
2022/07/07 Servers