基于Python的正则表达式PHP Webshell检测工具实现

山海之间
山海之间
发布时间:2026-10-14| 3人浏览过
原创

本文介绍了一款使用Python编写的PHP Webshell检测工具。该工具利用正则表达式匹配eval、system等危险函数,支持自定义关键字规则。通过递归遍历指定目录下的.php和.inc文件,将匹配结果记录至log.txt。文章提供了完整的源代码及使用方法,适用于Windows和Linux环境下的代码安全审计。

工具使用方法与原理

运行脚本时,需在命令行传入目标目录路径,命令格式为:find.py [目录名称]。


核心检测逻辑依赖于Python的正则表达式匹配机制。用户可以根据实际需求,在keywords列表中追加自定义的正则规则及其对应的日志描述。


自定义规则的格式为列表形式,例如:["eval\(\$\_POST", "发现PHP一句话木马!"]。其中前半部分为正则表达式,后半部分为匹配成功时写入日志的描述信息。


通过调整文件后缀名过滤列表和关键字正则表达式,该脚本框架可轻松扩展为其他编程语言(如JSP、ASP等)的Webshell检测工具。


开发环境基于Windows XP系统,使用的Python版本为ActivePython 2.6.2.2。由于本地缺乏Linux环境,暂未进行虚拟机测试,计划后续在公司Linux环境中验证兼容性。


当前版本仅为基础功能框架,后续计划逐步优化检测逻辑并完善功能细节。


复制代码

Python检测脚本源码

具体实现代码如下:


#coding:gbk


import os,sys


import re



findtype=['.php','.inc'] #要检查的文件后缀类型



#定义关键字正则表达式与日志描述的二维数组。


keywords=[ ["eval\(\$\_POST","发现PHP一句话木马!"],\


["(system|shell_exec|exec|popen)","发现PHP命令执行函数!"]\


]

writelog = open('log.txt', 'w+')



def checkfile(filename):


fp=open(filename)


content = fp.read()


for keyword in keywords:


if re.search(keyword[0],content,re.I):


log="%s:%s" % (filename,keyword[1])


#print log


print >>writelog,log


fp.close()




def checkdir(dirname):


try:


ls=os.listdir(dirname)


except:


print 'access deny'


else:


for l in ls:


temp=os.path.join(dirname,l)


if(os.path.isdir(temp)):


checkdir(temp)


else:


ext = temp[temp.rindex('.'):]


if ext in findtype:


checkfile(temp)




if __name__=="__main__":


print "PHP webshell check for Python!"


print "By:Neeao"


print "http://Neeao.com"


if len(sys.argv) < 2:


print "%s C:\\" % sys.argv[0]


else:


print "Check start!"


dirs=sys.argv[1:]


#print dirs[0]


if os.path.exists(dirs[0]):


checkdir(dirs[0])


else:


print "Dir:'%s' not exists!" % dirs[0]



print "Check finsh!"



writelog.close()


免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。