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 相关文章推荐
java直接调用python脚本的例子
Feb 16 Python
Python删除指定目录下过期文件的2个脚本分享
Apr 10 Python
简单介绍Python下自己编写web框架的一些要点
Apr 29 Python
Python实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
Python 私有函数的实例详解
Sep 11 Python
python实现俄罗斯方块
Jun 26 Python
记一次python 内存泄漏问题及解决过程
Nov 29 Python
Python3.5 Pandas模块之DataFrame用法实例分析
Apr 23 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
django框架ModelForm组件用法详解
Dec 11 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Python中基础数据类型 set集合知识点总结
Aug 02 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.ini中文版
2006/10/09 PHP
我的论坛源代码(六)
2006/10/09 PHP
PHP_MySQL教程-第一天
2007/03/18 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
JQuery包裹DOM节点的方法
2015/06/11 Javascript
NodeJS远程代码执行
2016/08/28 NodeJs
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
Python获取apk文件URL地址实例
2013/11/01 Python
Python使用gensim计算文档相似性
2016/04/10 Python
详解python中asyncio模块
2018/03/03 Python
Python实现时间序列可视化的方法
2019/08/06 Python
Python turtle库的画笔控制说明
2020/06/28 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
Can a struct inherit from another struct? (结构体能继承结构体吗)
2016/09/25 面试题
应届生简历中的自我评价
2014/01/13 职场文书
领导干部培训感言
2014/01/23 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
公司合作协议书范本
2014/04/18 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
周一给客户的问候语
2015/11/10 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
redis实现排行榜功能
2021/05/24 Redis