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获取android设备的GPS信息脚本分享
Mar 06 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
python简单区块链模拟详解
Jul 03 Python
使用pip安装python库的多种方式
Jul 31 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
Pytorch中Softmax和LogSoftmax的使用详解
Jun 05 Python
详解非极大值抑制算法之Python实现
Jun 28 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 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 设置MySQL连接字符集的方法
2011/01/02 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
2013/07/02 PHP
php 魔术方法详解
2014/11/11 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
VuePress 静态网站生成方法步骤
2019/02/14 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
python实现bitmap数据结构详解
2014/02/17 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
使用Python来开发微信功能
2018/06/13 Python
python使用递归的方式建立二叉树
2019/07/03 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
英国最大的纸工艺品商店:CraftStash
2018/12/01 全球购物
英语系本科生个人求职信
2013/09/21 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
护士医德医风自我评价
2014/09/15 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
个人自荐书怎么写
2015/03/26 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
MySQL注入基础练习
2021/05/30 MySQL
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python