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绘制人人网好友关系图示例
Apr 01 Python
Python获取脚本所在目录的正确方法
Apr 15 Python
Python使用py2exe打包程序介绍
Nov 20 Python
python 接口返回的json字符串实例
Mar 27 Python
python 实现在txt指定行追加文本的方法
Apr 29 Python
Python爬虫常用库的安装及其环境配置
Sep 19 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
Python文本处理简单易懂方法解析
Dec 19 Python
python自动识别文本编码格式代码
Dec 26 Python
详解django中Template语言
Feb 22 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 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判断字符以及字符串的包含方法属性
2008/08/30 PHP
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
hadoop中一些常用的命令介绍
2013/06/19 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
jQuery最佳实践完整篇
2011/08/20 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
简单谈谈js的数据类型
2017/09/25 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
基于JavaScript实现贪吃蛇游戏
2020/03/16 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python实现字典(dict)的迭代操作示例
2018/06/05 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
Python编程中类与类的关系详解
2019/08/08 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
python基于win32api实现键盘输入
2020/12/09 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
公司庆典邀请函范文
2014/01/13 职场文书
冰淇淋开店创业计划书
2014/02/01 职场文书
培训楼经理岗位责任制
2014/02/10 职场文书
小学生演讲稿大全
2014/04/25 职场文书
学校节能减排倡议书
2014/05/16 职场文书
服务整改报告
2014/11/06 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
5个实用的JavaScript新特性
2022/06/16 Javascript