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实现ftp客户端示例分享
Feb 17 Python
Python程序设计入门(5)类的使用简介
Jun 16 Python
用Python从零实现贝叶斯分类器的机器学习的教程
Mar 31 Python
Python函数式编程指南(一):函数式编程概述
Jun 24 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
Aug 21 Python
Python Gitlab Api 使用方法
Aug 28 Python
python内置模块collections知识点总结
Dec 19 Python
python如何使用Redis构建分布式锁
Jan 16 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
python golang中grpc 使用示例代码详解
Jun 03 Python
在pyCharm中下载第三方库的方法
Apr 18 Python
python如何将mat文件转为png
Jul 15 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开发时容易忘记的一些技术细节
2016/02/03 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
三步实现ionic3点击退出app程序
2019/09/17 Javascript
原生JS实现天气预报
2020/06/16 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python字符串转换成浮点数函数分享
2015/07/24 Python
用Python编写简单的微博爬虫
2016/03/04 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
解决jupyter notebook 出现In[*]的问题
2020/04/13 Python
Python Socket多线程并发原理及实现
2020/12/11 Python
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
canvas实现漂亮的下雨效果的示例
2018/04/18 HTML / CSS
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
医学专业毕业生推荐信
2013/11/14 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
材料采购员岗位职责
2013/12/17 职场文书
学校七一活动方案
2014/01/19 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
董事长开业致辞
2015/07/29 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电