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 冒泡,选择,插入排序使用实例
Feb 05 Python
python关键字and和or用法实例
May 28 Python
Python中内建函数的简单用法说明
May 05 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
PyQt5每天必学之切换按钮
Aug 20 Python
Pandas 数据处理,数据清洗详解
Jul 10 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
Python3 io文本及原始流I/O工具用法详解
Mar 23 Python
Python内置数据结构列表与元组示例详解
Aug 04 Python
Python如何使用循环结构和分支结构
Apr 13 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中json_decode()和json_encode()的使用方法
2012/06/04 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法
2018/02/21 Javascript
AngularJS创建一个上传照片的指令实例代码
2018/02/24 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
PyTorch搭建多项式回归模型(三)
2019/05/22 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
python合并多个excel文件的示例
2020/09/23 Python
python实现简单猜单词游戏
2020/12/24 Python
Python try except finally资源回收的实现
2021/01/25 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
南京某公司笔试题
2013/01/27 面试题
户外婚礼策划方案
2014/02/08 职场文书
公司股权转让协议书
2014/04/12 职场文书
吴仁宝观后感
2015/06/09 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
教学反思怎么写
2016/02/24 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS