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登录并获取CSDN博客所有文章列表代码实例
Dec 28 Python
python绘制直线的方法
Jun 30 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
django admin组件使用方法详解
Jul 19 Python
Tornado实现多进程/多线程的HTTP服务详解
Jul 25 Python
python 实现单通道转3通道
Dec 03 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
Python日志处理模块logging用法解析
May 19 Python
Python如何安装第三方模块
May 28 Python
python的launcher用法知识点总结
Aug 07 Python
Python实现照片卡通化
Dec 06 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和ACCESS写聊天室(八)
2006/10/09 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
JavaScript中的私有成员
2006/09/18 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
js提交form表单,并传递参数的实现方法
2016/05/25 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
很棒的一组js图片轮播特效
2017/01/12 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
Python 错误和异常小结
2013/10/09 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
利用numpy+matplotlib绘图的基本操作教程
2017/05/03 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
长安大学毕业生自我鉴定
2014/01/17 职场文书
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
高考百日冲刺决心书
2015/09/23 职场文书
五年级语文教学反思
2016/03/03 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
Nginx四层负载均衡的配置指南
2021/06/11 Servers
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电