python脚本实现查找webshell的方法
admin
2023-07-31 02:05:32
0

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

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...