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的Tkinter实现一个简易计算器
Dec 31 Python
tensorflow实现对图片的读取的示例代码
Feb 12 Python
pandas数据分组和聚合操作方法
Apr 11 Python
对python中for、if、while的区别与比较方法
Jun 25 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
利用Python如何实现一个小说网站雏形
Nov 23 Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 Python
python基于celery实现异步任务周期任务定时任务
Dec 30 Python
tensorflow 重置/清除计算图的实现
Jan 19 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
Apr 11 Python
python闭包与引用以及需要注意的陷阱
Sep 18 Python
Python的scikit-image模块实例讲解
Dec 30 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中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
jquery判断浏览器类型的代码
2012/11/05 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
微信开发 消息推送实现代码
2016/10/21 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
jQuery实现的表格前端排序功能示例
2017/09/18 jQuery
详解基于Koa2开发微信二维码扫码支付相关流程
2018/05/16 Javascript
Vue开发之封装上传文件组件与用法示例
2019/04/25 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
在Python中关于中文编码问题的处理建议
2015/04/08 Python
Python中表示字符串的三种方法
2017/09/06 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
python实现冒泡排序算法的两种方法
2018/03/10 Python
python实现Windows电脑定时关机
2018/06/20 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
Django使用paginator插件实现翻页功能的实例
2018/10/24 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
Python Django框架防御CSRF攻击的方法分析
2019/10/18 Python
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
九月份红领巾广播稿
2014/01/22 职场文书
教育学习自我评价
2014/02/03 职场文书
记账会计岗位职责
2014/06/16 职场文书
营销与策划实训报告
2014/11/05 职场文书
经费申请报告范文
2015/05/18 职场文书
Python实现简繁体转换
2021/06/07 Python