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程序员鲜为人知但你应该知道的17个问题
Jun 04 Python
使用Python实现一个简单的项目监控
Mar 31 Python
Python max内置函数详细介绍
Nov 17 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
对Python3 pyc 文件的使用详解
Feb 16 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
浅谈Python 递归算法指归
Aug 22 Python
python中删除某个元素的方法解析
Nov 05 Python
python解释器pycharm安装及环境变量配置教程图文详解
Feb 26 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
Feb 26 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
Python通过字典映射函数实现switch
Nov 06 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 加密与解密的斗争
2009/04/17 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
关于laravel 数据库迁移中integer类型是无法指定长度的问题
2019/10/09 PHP
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
python实现从web抓取文档的方法
2014/09/26 Python
Python的迭代器和生成器使用实例
2015/01/14 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python进程间通信之共享内存详解
2017/10/30 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
python 数字类型和字符串类型的相互转换实例
2018/07/17 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
Python安装selenium包详细过程
2019/07/23 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
Pycharm 2020年最新激活码(亲测有效)
2020/09/18 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
python绘制趋势图的示例
2020/09/17 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
美国眼镜网站:LensCrafters
2020/01/19 全球购物
授权委托书格式范文
2014/08/02 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
Java移除无效括号的方法实现
2021/08/07 Java/Android
vue 自定义组件添加原生事件
2022/04/21 Vue.js