python脚本实现查找webshell的方法

 更新时间:2014年07月31日 17:04:35   投稿:shichen2014  
这篇文章主要介绍了python脚本实现查找webshell的方法,是很实用的一个功能,需要的朋友可以参考下

本文讲述了一个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 "请指定扫描文件目录" 

相关文章

  • Pytorch可视化(显示图片)及格式转换问题

    Pytorch可视化(显示图片)及格式转换问题

    这篇文章主要介绍了Pytorch可视化(显示图片)及格式转换问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 基于Python+Matplotlib绘制渐变色扇形图与等高线图

    基于Python+Matplotlib绘制渐变色扇形图与等高线图

    这篇文章主要为大家介绍了如何利用Python中的Matplotlib绘制渐变色扇形图与等高线图,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下方法
    2022-04-04
  • python使用mailbox打印电子邮件的方法

    python使用mailbox打印电子邮件的方法

    这篇文章主要介绍了python使用mailbox打印电子邮件的方法,涉及Python打印电子邮件的相关技巧,需要的朋友可以参考下
    2015-04-04
  • Python中PyExecJS(执行JS代码库)的具体使用

    Python中PyExecJS(执行JS代码库)的具体使用

    pyexecjs是一个用Python来执行JavaScript代码的工具库,本文主要介绍了Python中PyExecJS(执行JS代码库)的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python函数使用的相关练习题分享

    Python函数使用的相关练习题分享

    这篇文章主要介绍了Python函数使用的相关练习题分享,文章基于python函数内容展开其相关例题,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • pycharm解决关闭flask后依旧可以访问服务的问题

    pycharm解决关闭flask后依旧可以访问服务的问题

    这篇文章主要介绍了pycharm解决关闭flask后依旧可以访问服务的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python @property原理解析和用法实例

    Python @property原理解析和用法实例

    这篇文章主要介绍了Python @property原理解析和用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • 详解Appium+Python之生成html测试报告

    详解Appium+Python之生成html测试报告

    这篇文章主要介绍了详解Appium+Python之生成html测试报告,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • Python 随机按键模拟2小时

    Python 随机按键模拟2小时

    这篇文章主要介绍了Python 随机按键模拟的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • 信号生成及DFT的python实现方式

    信号生成及DFT的python实现方式

    今天小编就为大家分享一篇信号生成及DFT的python实现方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论