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描述器descriptor详解
Feb 03 Python
Python中使用pprint函数进行格式化输出的教程
Apr 07 Python
python处理图片之PIL模块简单使用方法
May 11 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
CentOS安装pillow报错的解决方法
Jan 27 Python
Python实现屏幕截图的代码及函数详解
Oct 01 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
使用Python和Scribus创建一个RGB立方体的方法
Jul 17 Python
使用Python的Turtle库绘制森林的实例
Dec 18 Python
pycharm如何实现跨目录调用文件
Feb 28 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
Django中使用Json返回数据的实现方法
Jun 03 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中几种常见的超时处理全面总结
2012/09/11 PHP
php+highchats生成动态统计图
2014/05/21 PHP
php中使用PHPExcel读写excel(xls)文件的方法
2014/09/15 PHP
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
JavaScript多图片上传案例
2015/09/28 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
React冒泡和阻止冒泡的应用详解
2020/08/18 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python字符串匹配算法KMP实例
2015/07/18 Python
Python脚本实现自动发带图的微博
2016/04/27 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
python实现单链表的方法示例
2019/09/03 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
python中Django文件上传方法详解
2020/08/05 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
三查三看党性分析材料
2014/02/18 职场文书
八项规定整改方案
2014/02/21 职场文书
村庄绿化方案
2014/05/07 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
学历证明样本
2015/06/16 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
员工担保书范本
2015/09/22 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
浅谈Python 中的复数问题
2021/05/19 Python
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL